Mesh able to concatenate other meshes. More...
#include <MEDMEM_MeshFuse.hxx>

Data Structures | |
| struct | TConnData |
Public Member Functions | |
| MeshFuse () | |
| virtual | ~MeshFuse () |
| void | concatenate (const MESH *mesh, const std::vector< int > &node_glob_numbers) |
| Fuse me and other mesh. | |
| void | append (MED_EN::medEntityMesh entity, std::vector< int > &glob_numbers, const std::vector< int > &add_glob_numbers) |
| Unite numbers of elements taking into account their types. | |
| void | setNodeNumbers (const std::vector< int > &node_glob_numbers) |
| set global numbers of nodes if MeshFuse has been filled via MESHING | |
| const std::vector< int > & | getNodeNumbers () const |
Private Types | |
| enum | { INIT_OLD = 0, INIT_ADD, RSLT_ADD, NB_INDICES } |
| typedef std::map < MED_EN::medGeometryElement, int > | TNbOfGeom |
Private Member Functions | |
| int | makeNewNodeIds (const std::vector< int > &node_glob_numbers) |
| Return number of nodes in the expanded mesh. | |
| void | expandCoordinates (int final_nb_nodes) |
| Update coordinates. | |
| void | expandConnectivity (int final_nb_nodes) |
| Concatenate connectivity of meshes. | |
| void | updateNodeIds (CONNECTIVITY *connectivity) |
| Update node ids in the copied connectivity of theadded mesh. | |
| int | appendConnectivity (TConnData &data, const MESH *mesh, MED_EN::medEntityMesh entity, MED_EN::medGeometryElement type) |
| Concatenate connectivities. | |
| template<class TSUPPORT > | |
| TSUPPORT * | updateOldSupport (TSUPPORT *support) const |
| Return updated old support. | |
| template<class TSUPPORT > | |
| TSUPPORT * | makeSupport (const TSUPPORT *add_support, TSUPPORT *same_name_support) |
| Creates a copy of support being added or extands the present one. | |
| void | expandSupports () |
| Concatenate families and groups. | |
| int | getElemNbShift (const MED_EN::medEntityMesh &entity, MED_EN::medGeometryElement type, int which, bool prev) const |
| Return shift for conversion of element numbers. | |
| void | uniteSupportElements (const SUPPORT *add_support, SUPPORT *old_support, MED_EN::medGeometryElement type, std::vector< int > &elements) |
| Fills in elements of support of given type. | |
| void | makeNewElemIds (MED_EN::medEntityMesh entity, MED_EN::medGeometryElement type, std::vector< int > &new_ids) |
| Fills in ids of elements of added mesh in the resulting mesh. | |
| void | findEqualOldElements (MED_EN::medEntityMesh entity, MED_EN::medGeometryElement type, std::vector< int > &old_ids) |
| Finds ids of elements of the old mesh equal to merged elements of the added one. | |
Private Attributes | |
| const MESH * | _mesh |
| std::vector< int > | _node_glob_numbers |
| std::map < MED_EN::medGeometryElement, std::vector< int > > | _merged_of_type |
| std::map < MED_EN::medGeometryElement, std::vector< int > > | _equalo_of_type |
| std::map < MED_EN::medGeometryElement, std::vector< int > > | _new_elem_ids_of_type |
| vector< TNbOfGeom > | _nb_index [NB_INDICES] |
Mesh able to concatenate other meshes.
typedef std::map< MED_EN::medGeometryElement, int > MEDMEM.MeshFuse.TNbOfGeom [private] |
| MeshFuse::MeshFuse | ( | ) |
| MeshFuse::~MeshFuse | ( | ) | [virtual] |
Fuse me and other mesh.
| mesh | - mesh to concatenate |
| node_glob_numbers | - node numbers used to merge coincident meshes entities |
References MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._mesh, MEDMEM.MeshFuse._nb_index, MEDMEM.MeshFuse._new_elem_ids_of_type, MEDMEM.MeshFuse._node_glob_numbers, MEDMEM.MeshFuse.expandConnectivity(), MEDMEM.MeshFuse.expandCoordinates(), MEDMEM.MeshFuse.expandSupports(), MEDMEM.MESH.getConnectivityptr(), MEDMEM.MESH.getCoordinates(), MEDMEM.MESH.getMeshDimension(), MEDMEM.MESH.getNumberOfNodes(), MEDMEM.GMESH.getSpaceDimension(), MEDMEM.MeshFuse.makeNewNodeIds(), MED_EN.MED_ALL_ENTITIES, MED_EN.MED_FULL_INTERLACE, MED_test2.mesh, and MEDMEM.MeshFuse.NB_INDICES.
| void MeshFuse::append | ( | MED_EN::medEntityMesh | entity, |
| std::vector< int > & | glob_numbers, | ||
| const std::vector< int > & | add_glob_numbers | ||
| ) |
Unite numbers of elements taking into account their types.
References MEDMEM.MeshFuse._equalo_of_type, MEDMEM.MeshFuse._merged_of_type, MEDMEM.MESH.getElementType(), MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.MESH.getNumberOfElements(), MEDMEM.MESH.getNumberOfTypes(), MEDMEM.MESH.getTypes(), MEDMEM.MeshFuse.INIT_ADD, MEDMEM.MeshFuse.INIT_OLD, MED_EN.MED_ALL_ELEMENTS, MED_EXCEPTION, MEDMEM.PointerOf< T >.setShallowAndOwnership(), and medClient_test.types.
| void MeshFuse::setNodeNumbers | ( | const std::vector< int > & | node_glob_numbers | ) |
set global numbers of nodes if MeshFuse has been filled via MESHING
References MEDMEM.MeshFuse._node_glob_numbers, and MEDMEM.MESH.getNumberOfNodes().
| const std::vector<int>& MEDMEM.MeshFuse.getNodeNumbers | ( | ) | const |
References MEDMEM.MeshFuse._node_glob_numbers.
Return number of nodes in the expanded mesh.
| add_glob_numbers | - global ids of nodes to append |
References MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._nb_index, MEDMEM.MeshFuse._new_elem_ids_of_type, MEDMEM.MeshFuse._node_glob_numbers, _NODE_TYPE_, MEDMEM.MESH.getNumberOfNodes(), MEDMEM.MeshFuse.INIT_ADD, MEDMEM.MeshFuse.INIT_OLD, MED_EN.MED_NODE, and MEDMEM.MeshFuse.RSLT_ADD.
| void MeshFuse::expandCoordinates | ( | int | final_nb_nodes | ) | [private] |
Update coordinates.
References MEDMEM.MESH._coordinate, MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._mesh, MEDMEM.MeshFuse._new_elem_ids_of_type, _NODE_TYPE_, MEDMEM.MESH._numberOfNodes, MEDMEM.MESH.getCoordinates(), MEDMEM.MESH.getNumberOfNodes(), MEDMEM.GMESH.getSpaceDimension(), MED_EN.MED_FULL_INTERLACE, TestMedCorba2.n, and MEDMEM.COORDINATE.setCoordinates().
| void MeshFuse::expandConnectivity | ( | int | final_nb_nodes | ) | [private] |
Concatenate connectivity of meshes.
Current implementation impies that cells can't coincide in the meshes
References MEDMEM.MESH._connectivity, MEDMEM.MeshFuse._mesh, MEDMEM.MeshFuse._nb_index, MEDMEM.MeshFuse.appendConnectivity(), medClient_test.connectivity, med_opsupp_test.entity, MEDMEM.MESH.existConnectivity(), MEDMEM.MESH.getConnectivityLength(), MEDMEM.MESH.getConnectivityptr(), MEDMEM.CONNECTIVITY.getConstituent(), MEDMEM.MESH.getGlobalNumberingIndex(), MEDMEM.MESH.getMeshDimension(), MEDMEM.MESH.getNumberOfElements(), MEDMEM.MESH.getNumberOfTypes(), MEDMEM.MESH.getTypes(), medClient_test.index, MEDMEM.MeshFuse.INIT_ADD, MEDMEM.MeshFuse.INIT_OLD, MED_EN.MED_ALL_ENTITIES, MED_EN.MED_CELL, MED_EN.MED_FACE, MED_EN.MED_NODAL, MEDMEM.MeshFuse.RSLT_ADD, MEDMEM.CONNECTIVITY.setConstituent(), MEDMEM.CONNECTIVITY.setCount(), MEDMEM.CONNECTIVITY.setGeometricTypes(), MEDMEM.CONNECTIVITY.setNodal(), MEDMEM.CONNECTIVITY.setNumberOfNodes(), medClient_test.type, medClient_test.types, and MEDMEM.MeshFuse.updateNodeIds().
| void MeshFuse::updateNodeIds | ( | CONNECTIVITY * | connectivity | ) | [private] |
Update node ids in the copied connectivity of theadded mesh.
References MEDMEM.MeshFuse._new_elem_ids_of_type, _NODE_TYPE_, testRenumbering.conn, med_opsupp_test.entity, MEDMEM.CONNECTIVITY.existConnectivity(), MEDMEM.CONNECTIVITY.getConnectivity(), MEDMEM.CONNECTIVITY.getConnectivityLength(), MEDMEM.CONNECTIVITY.getEntity(), MED_EN.MED_ALL_ELEMENTS, MED_EN.MED_ALL_ENTITIES, MED_EN.MED_NODAL, and medClient_test.type.
| int MeshFuse::appendConnectivity | ( | TConnData & | data, |
| const MESH * | mesh, | ||
| MED_EN::medEntityMesh | entity, | ||
| MED_EN::medGeometryElement | type | ||
| ) | [private] |
Concatenate connectivities.
| data | - storage of resulting connectivities |
| mesh | - mesh to get connectivity from |
| entity | - mesh entity to process |
| type | - geom type to process |
| int | - nb of appended elements |
References MEDMEM.MeshFuse.TConnData._connectivity, MEDMEM.MeshFuse._equalo_of_type, MEDMEM.MeshFuse.TConnData._index, MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse.TConnData._nb_elems, MEDMEM.MeshFuse._nb_index, MEDMEM.MeshFuse._new_elem_ids_of_type, _NODE_TYPE_, testRenumbering.conn, MEDMEM.MeshFuse.findEqualOldElements(), MEDMEM.MESH.getConnectivity(), MEDMEM.MESH.getConnectivityIndex(), MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.MESH.getNumberOfElements(), medClient_test.index, MEDMEM.MeshFuse.INIT_ADD, MEDMEM.MeshFuse.INIT_OLD, MED_EN.MED_CELL, MED_EN.MED_NODAL, MED_EN.MED_NODE, MED_EN.MED_POLYGON, MED_EN.MED_POLYHEDRA, TestMedCorba2.n, and medClient_test.type.
| TSUPPORT * MeshFuse::updateOldSupport | ( | TSUPPORT * | support | ) | const [private] |
Return updated old support.
References MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.MEDSKYLINEARRAY.getIJ(), MED_EN.MED_NODE, batchmode_medcorba_test.number, MEDMEM.MeshFuse.RSLT_ADD, MEDMEM.MEDSKYLINEARRAY.setIJ(), medClient_test.support, and medClient_test.types.
| TSUPPORT * MeshFuse::makeSupport | ( | const TSUPPORT * | add_support, |
| TSUPPORT * | same_name_support | ||
| ) | [private] |
Creates a copy of support being added or extands the present one.
| add_support | - support of the added mesh |
| same_name_support | - the present support with the same name |
| SUPPORT* | - resulting support |
References _NODE_TYPE_, medClient_test.index, MED_EN.MED_NODE, medClient_test.type, and MEDMEM.MeshFuse.uniteSupportElements().
| void MeshFuse::expandSupports | ( | ) | [private] |
Concatenate families and groups.
References MEDMEM.GMESH._familyCell, MEDMEM.GMESH._familyEdge, MEDMEM.GMESH._familyFace, MEDMEM.GMESH._familyNode, MEDMEM.GMESH._groupCell, MEDMEM.GMESH._groupEdge, MEDMEM.GMESH._groupFace, MEDMEM.GMESH._groupNode, MEDMEM.MeshFuse._mesh, MEDCouplingCorbaSwigTestClt.f, MEDMEM.GROUP.getFamilies(), MEDMEM.GMESH.getFamilies(), MEDMEM.FAMILY.getGroupName(), MEDMEM.GMESH.getGroups(), MEDMEM.FAMILY.getGroupsNames(), MEDMEM.FAMILY.getIdentifier(), MEDMEM.SUPPORT.getName(), MEDMEM.GMESH.getName(), MEDMEM.GROUP.getNumberOfFamilies(), MEDMEM.GMESH.getNumberOfFamilies(), MEDMEM.FAMILY.getNumberOfGroups(), MEDMEM.MeshFuse.makeSupport(), MED_EN.MED_CELL, MED_EN.MED_EDGE, MED_EN.MED_FACE, MED_EN.MED_NODE, MEDMEM.GROUP.setFamilies(), MEDMEM.FAMILY.setGroupsNames(), MEDMEM.FAMILY.setIdentifier(), MEDMEM.GROUP.setNumberOfFamilies(), MEDMEM.FAMILY.setNumberOfGroups(), and MEDMEM.MeshFuse.updateOldSupport().
| int MeshFuse::getElemNbShift | ( | const MED_EN::medEntityMesh & | entity, |
| MED_EN::medGeometryElement | type, | ||
| int | which, | ||
| bool | prev | ||
| ) | const [private] |
Return shift for conversion of element numbers.
| which | - to select a global numbering index |
| prev | - true means "shift of type previous to given type" |
References MEDMEM.MeshFuse._nb_index.
| void MeshFuse::uniteSupportElements | ( | const SUPPORT * | add_support, |
| SUPPORT * | old_support, | ||
| MED_EN::medGeometryElement | type, | ||
| std::vector< int > & | elements | ||
| ) | [private] |
Fills in elements of support of given type.
| add_support | - support of the added mesh |
| old_support | - the present support with the same name |
| type | - geometric type to process |
| elements | - output array of element |
References MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._new_elem_ids_of_type, med_opsupp_test.entity, MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.SUPPORT.getNumber(), MEDMEM.SUPPORT.getNumberOfElements(), MEDMEM.MeshFuse.INIT_ADD, MEDMEM.MeshFuse.INIT_OLD, MEDMEM.SUPPORT.isOnAllElements(), MEDMEM.MeshFuse.makeNewElemIds(), MED_EN.MED_ALL_ELEMENTS, MEDMEM.MeshFuse.RSLT_ADD, and medClient_test.type.
| void MeshFuse::makeNewElemIds | ( | MED_EN::medEntityMesh | entity, |
| MED_EN::medGeometryElement | type, | ||
| std::vector< int > & | new_ids | ||
| ) | [private] |
Fills in ids of elements of added mesh in the resulting mesh.
| type | - element type to treat |
| new_ids | - output array |
References MEDMEM.MeshFuse._equalo_of_type, MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._mesh, MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.MESH.getNumberOfElements(), MEDMEM.MeshFuse.INIT_OLD, LOCALIZED, MED_EN.MED_NODE, MEDMEM.MeshFuse.RSLT_ADD, and medClient_test.type.
| void MeshFuse::findEqualOldElements | ( | MED_EN::medEntityMesh | entity, |
| MED_EN::medGeometryElement | type, | ||
| std::vector< int > & | old_ids | ||
| ) | [private] |
Finds ids of elements of the old mesh equal to merged elements of the added one.
References MEDMEM.MeshFuse._merged_of_type, MEDMEM.MeshFuse._mesh, MEDMEM.MeshFuse._new_elem_ids_of_type, _NODE_TYPE_, MEDMEM.MESH.getConnectivity(), MEDMEM.MESH.getConnectivityIndex(), MEDMEM.MeshFuse.getElemNbShift(), MEDMEM.MESH.getNumberOfElements(), MEDMEM.MeshFuse.INIT_OLD, MED_EN.MED_ALL_ELEMENTS, MED_EN.MED_NODAL, MED_EN.MED_POLYGON, MED_EN.MED_POLYHEDRA, TestMedCorba2.n, and medClient_test.type.
const MESH* MEDMEM.MeshFuse._mesh [private] |
std::vector<int> MEDMEM.MeshFuse._node_glob_numbers [private] |
std::map< MED_EN::medGeometryElement, std::vector<int> > MEDMEM.MeshFuse._merged_of_type [private] |
std::map< MED_EN::medGeometryElement, std::vector<int> > MEDMEM.MeshFuse._equalo_of_type [private] |
std::map< MED_EN::medGeometryElement, std::vector<int> > MEDMEM.MeshFuse._new_elem_ids_of_type [private] |
vector< TNbOfGeom > MEDMEM.MeshFuse._nb_index[NB_INDICES] [private] |