Version: 6.3.1
Public Member Functions | Protected Attributes | Friends

MEDMEM.MESH Class Reference

#include <MEDMEM_Mesh.hxx>

Inheritance diagram for MEDMEM.MESH:
Inheritance graph

Public Member Functions

 MESH ()
 MESH (MESH &m)
virtual ~MESH ()
 MESH (driverTypes driverType, const string &fileName="", const string &meshName="") throw (MEDEXCEPTION)
void init ()
MESHoperator= (const MESH &m)
virtual bool operator== (const MESH &other) const
virtual bool deepCompare (const GMESH &other) const
virtual bool isEmpty () const
virtual void printMySelf (ostream &os) const
virtual int getMeshDimension () const
virtual bool getIsAGrid () const
 Check nature of GMESH.
virtual const MESHconvertInMESH () const
 Implement pure virtual method used to get MESH from GMESH.
int getNumberOfNodes () const
virtual const COORDINATEgetCoordinateptr () const
string getCoordinatesSystem () const
virtual const doublegetCoordinates (MED_EN::medModeSwitch Mode) const
virtual const double getCoordinate (int Number, int Axis) const
const string * getCoordinatesNames () const
const string * getCoordinatesUnits () const
virtual int getNumberOfTypes (MED_EN::medEntityMesh Entity) const
virtual const
MED_EN::medGeometryElement
getTypes (MED_EN::medEntityMesh Entity) const
virtual const CELLMODELgetCellsTypes (MED_EN::medEntityMesh Entity) const
virtual string * getCellTypeNames (MED_EN::medEntityMesh Entity) const
virtual const intgetGlobalNumberingIndex (MED_EN::medEntityMesh Entity) const
virtual int getNumberOfElements (MED_EN::medEntityMesh Entity, MED_EN::medGeometryElement Type) const
virtual bool existConnectivity (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity) const
virtual MED_EN::medGeometryElement getElementType (MED_EN::medEntityMesh Entity, int Number) const
virtual void calculateConnectivity (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity) const
virtual int getConnectivityLength (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity, MED_EN::medGeometryElement Type) const
virtual const intgetConnectivity (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity, MED_EN::medGeometryElement Type) const
virtual const intgetConnectivityIndex (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity) const
virtual int getElementNumber (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity, MED_EN::medGeometryElement Type, int *connectivity) const
virtual int getReverseConnectivityLength (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity=MED_EN::MED_CELL) const
virtual const intgetReverseConnectivity (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity=MED_EN::MED_CELL) const
virtual int getReverseConnectivityIndexLength (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity=MED_EN::MED_CELL) const
virtual const intgetReverseConnectivityIndex (MED_EN::medConnectivity ConnectivityType, MED_EN::medEntityMesh Entity=MED_EN::MED_CELL) const
virtual const CONNECTIVITYgetConnectivityptr () const
void setConnectivityptr (CONNECTIVITY *)
virtual SUPPORTgetBoundaryElements (MED_EN::medEntityMesh Entity) const throw (MEDEXCEPTION)
virtual SUPPORTgetSkin (const SUPPORT *Support3D) throw (MEDEXCEPTION)
virtual FIELD< double > * getVolume (const SUPPORT *Support, bool isAbs=true) const throw (MEDEXCEPTION)
virtual FIELD< double > * getArea (const SUPPORT *Support) const throw (MEDEXCEPTION)
virtual FIELD< double > * getLength (const SUPPORT *Support) const throw (MEDEXCEPTION)
virtual FIELD< double > * getNormal (const SUPPORT *Support) const throw (MEDEXCEPTION)
virtual FIELD< double > * getBarycenter (const SUPPORT *Support) const throw (MEDEXCEPTION)
SUPPORTbuildSupportOnNodeFromElementList (const list< int > &listOfElt, MED_EN::medEntityMesh entity) const throw (MEDEXCEPTION)
void fillSupportOnNodeFromElementList (const list< int > &listOfElt, SUPPORT *supportToFill) const throw (MEDEXCEPTION)
int getElementContainingPoint (const double *coord)
vector< vector< double > > getBoundingBox () const
void convertToPoly ()
 Converts MED_CELL connectivity to polyhedra connectivity Converts MED_FACE connectivity to polygon connectivity Wil work only for 3D meshes with nodal connectivity.

Protected Attributes

int _numberOfNodes
COORDINATE_coordinate
CONNECTIVITY_connectivity
int _arePresentOptionnalNodesNumbers
 Modification pour prise en compte de la numérotation optionnelle des noeuds ///.
map< int, int_optionnalToCanonicNodesNumbers

Friends

class MED_MESH_RDONLY_DRIVER
class MED_MESH_WRONLY_DRIVER
class MED_MED_RDONLY_DRIVER21
class MED_MED_WRONLY_DRIVER21
class MED_MED_RDWR_DRIVER21
class MED_MED_RDONLY_DRIVER22
class MED_MED_WRONLY_DRIVER22
class MED_MED_RDWR_DRIVER22
class GIBI_MESH_RDONLY_DRIVER
class GIBI_MESH_WRONLY_DRIVER
class GIBI_MESH_RDWR_DRIVER
class PORFLOW_MESH_RDONLY_DRIVER
class PORFLOW_MESH_WRONLY_DRIVER
class PORFLOW_MESH_RDWR_DRIVER
class VTK_MESH_DRIVER
class ENSIGHT_MESH_RDONLY_DRIVER
ostream & operator<< (ostream &os, const MESH &my)

Detailed Description

This class contains all the informations related with a MESH :


Constructor & Destructor Documentation

MESH::MESH ( )

Create an empty MESH.

References MEDMEM.MESH.init().

MESH::MESH ( MESH m)
MESH::~MESH ( ) [virtual]
MESH::MESH ( driverTypes  driverType,
const string &  fileName = "",
const string &  driverName = "" 
) throw (MEDEXCEPTION)

Creates a MESH object using a MESH driver of type driverTypes (MED_DRIVER, GIBI_DRIVER, ...) associated with file fileName. As several meshes can coexist in the same file (notably in MED files) , the constructor takes a third argument that specifies the name of the mesh. The constructor will throw an exception if the file does not exist, has no reading permissions or if the mesh does not exist in the file.

References BEGIN_OF_MED, MEDMEM.DRIVERFACTORY.buildDriverForMesh(), END_OF_MED, Med_Gen_test.fileName, init, MED_EXCEPTION, MEDMEM.GENDRIVER.open(), and MED_EN.RDONLY.


Member Function Documentation

void MESH::init ( ) [virtual]

Reimplemented from MEDMEM.GMESH.

References BEGIN_OF_MED, END_OF_MED, init, and MED_EN.MED_INVALID.

MESH & MESH::operator= ( const MESH m)
bool MESH::operator== ( const MESH other) const [virtual]

Reimplemented in MEDMEM.MESHClient.

References BEGIN_OF_MED.

bool MESH::deepCompare ( const GMESH gother) const [virtual]

Returns true if mesh other has same coordinates (to 1E-15 precision ) and same connectivity as the calling object. Information like name or description is not taken into account for the comparison.

Implements MEDMEM.GMESH.

References MEDMEM.MESH._connectivity, MEDMEM.MESH._coordinate, MEDMEM.CONNECTIVITY.deepCompare(), MEDMEM.MESH.getConnectivityptr(), MEDMEM.MESH.getCoordinateptr(), MEDMEM.MESH.getCoordinates(), MEDMEM.MESH.getIsAGrid(), MEDMEM.GMESH.getIsAGrid(), MEDMEM.MESH.getNumberOfNodes(), MEDMEM.GMESH.getSpaceDimension(), MED_EN.MED_FULL_INTERLACE, and testMEDMEM.ret.

bool MESH::isEmpty ( ) const [virtual]
void MESH::printMySelf ( ostream &  os) const [virtual]
int MESH::getMeshDimension ( ) const [virtual]

Gets the dimension of the mesh (2 for 2D- and 3D-surfaces, 3 for volumes).

Implements MEDMEM.GMESH.

References MEDMEM.MESH._connectivity, MEDMEM.CONNECTIVITY.getCellsTypes(), MEDMEM.CELLMODEL.getDimension(), MEDMEM.CONNECTIVITY.getNumberOfTypes(), and MED_EN.MED_CELL.

bool MESH::getIsAGrid ( ) const [virtual]

Check nature of GMESH.

Implements MEDMEM.GMESH.

const MESH * MESH::convertInMESH ( ) const [virtual]

Implement pure virtual method used to get MESH from GMESH.

Implements MEDMEM.GMESH.

References MEDMEM.RCBASE.addReference().

int MEDMEM.MESH::getNumberOfNodes ( ) const [virtual]

Gets the number of nodes used in the mesh.

Implements MEDMEM.GMESH.

const COORDINATE * MEDMEM.MESH::getCoordinateptr ( ) const [virtual]

Gets the COORDINATES object. Use it only if you need COORDINATES informations not provided by the MESH class.

string MEDMEM.MESH::getCoordinatesSystem ( ) const [virtual]

Retrieves the system in which coordinates are given (CARTESIAN,CYLINDRICAL,SPHERICAL).

Implements MEDMEM.GMESH.

const double * MEDMEM.MESH::getCoordinates ( MED_EN::medModeSwitch  Mode) const [virtual]

Gets the whole coordinates array in a given interlacing mode. The interlacing mode are :

  • MED_NO_INTERLACE : X1 X2 Y1 Y2 Z1 Z2
  • MED_FULL_INTERLACE : X1 Y1 Z1 X2 Y2 Z2
const double MEDMEM.MESH::getCoordinate ( int  number,
int  axis 
) const [virtual]

Gets the coordinate number number on axis axis.

const string * MEDMEM.MESH::getCoordinatesNames ( ) const [virtual]

Gets a pointer to the coordinate names array.

Implements MEDMEM.GMESH.

const string * MEDMEM.MESH::getCoordinatesUnits ( ) const [virtual]

Gets a pointer to the coordinate units array.

Implements MEDMEM.GMESH.

int MEDMEM.MESH::getNumberOfTypes ( MED_EN::medEntityMesh  entity) const [virtual]

Gets the number of different geometric types for a given entity type.

For example getNumberOfTypes(MED_CELL) would return 3 if the MESH have some MED_TETRA4, MED_PYRA5 and MED_HEXA8 in it. If entity is not defined, returns 0. If there is no connectivity, returns an exception.

Parameters:
entityentity type (MED_CELL, MED_FACE, MED_EDGE, MED_NODE, MED_ALL_ENTITIES)

Implements MEDMEM.GMESH.

References LOCALIZED, MED_EN.MED_NODE, and MESSAGE_MED.

const MED_EN::medGeometryElement * MEDMEM.MESH::getTypes ( MED_EN::medEntityMesh  entity) const [virtual]

Gets the list of geometric types used by a given entity. If entity is not defined, it returns an exception.

Parameters:
entityEntity type must be MED_CELL, MED_FACE, MED_EDGE or MED_ALL_ENTITIES. Passing MED_NODE as an entity type will throw an exception.

Implements MEDMEM.GMESH.

References LOCALIZED, and MED_EN.MED_NODE.

const CELLMODEL * MEDMEM.MESH::getCellsTypes ( MED_EN::medEntityMesh  Entity) const [virtual]

Get the whole list of CELLMODEL used by cells of given type (medEntityMesh). Passing MED_NODE as an entity type will throw an exception.

References LOCALIZED.

string * MEDMEM.MESH::getCellTypeNames ( MED_EN::medEntityMesh  Entity) const [virtual]

Get an array (it should deleted after use) of the whole list of CELLMODEL Name of a given type (medEntityMesh).

REMARK : Don't use MED_NODE as medEntityMesh

References LOCALIZED.

const int * MEDMEM.MESH::getGlobalNumberingIndex ( MED_EN::medEntityMesh  entity) const [virtual]

Returns an array of size NumberOfTypes+1 which contains, for each geometric type of the given entity, the first global element number of this type.

For exemple, if we have a mesh with 5 triangles and 4 quadrangle :

  • size of GlobalNumberingIndex is 3
  • GlobalNumberingIndex[0]=1 (the first type)
  • GlobalNumberingIndex[1]=6 (the second type)
  • GlobalNumberingIndex[2]=10

References LOCALIZED.

int MEDMEM.MESH::getNumberOfElements ( MED_EN::medEntityMesh  entity,
MED_EN::medGeometryElement  Type 
) const [virtual]

Returns the number of elements of given geometric type of given entity. Returns 0 if query is not defined.

Example :

  • getNumberOfElements(MED_NODE,MED_NONE) : number of nodes
  • getNumberOfElements(MED_NODE,MED_TRIA3) : returns 0 (not defined)
  • getNumberOfElements(MED_FACE,MED_TRIA3) : returns number of triangle elements defined in face entity (0 if not defined)
  • getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS) : returns total number of elements defined in cell entity

Implements MEDMEM.GMESH.

References MED_EN.MED_ALL_ELEMENTS, MED_EN.MED_NODE, and MED_EN.MED_NONE.

bool MEDMEM.MESH::existConnectivity ( MED_EN::medConnectivity  connectivityType,
MED_EN::medEntityMesh  entity 
) const [virtual]

Returns true if the wanted connectivity exist, else returns false (to use before a getSomething method).

MED_EN::medGeometryElement MEDMEM.MESH::getElementType ( MED_EN::medEntityMesh  Entity,
int  Number 
) const [virtual]

Returns the geometric type of global element number Number of entity Entity.

Throw an exception if Entity is not defined or if Numberis wrong.

Implements MEDMEM.GMESH.

void MEDMEM.MESH::calculateConnectivity ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  entity 
) const [virtual]

Calculates the required connectivity. Returns an exception if this could not be done. Do nothing if connectivity already exist.

int MEDMEM.MESH::getConnectivityLength ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  entity,
MED_EN::medGeometryElement  Type 
) const [virtual]

Returns the corresponding length of the array returned by MESH.getConnectivity with exactly the same arguments. Used particulary for wrapping CORBA and python.

References MEDMEM.CONNECTIVITYClient._complete, and MEDMEM.CONNECTIVITYClient.getConnectivityLength().

const int * MEDMEM.MESH::getConnectivity ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  entity,
MED_EN::medGeometryElement  Type 
) const [virtual]

Returns the required connectivity in mode Mode for the geometric type Type of the entity type entity. ConnectivityType specifies descending or nodal connectivity.

To get connectivity for all geometric type, use Mode=MED_FULL_INTERLACE and Type=MED_ALL_ELEMENTS. You must also get the corresponding index array.

const int * MEDMEM.MESH::getConnectivityIndex ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  entity 
) const [virtual]

Returns the required index array for a connectivity received in MED_FULL_INTERLACE mode and MED_ALL_ELEMENTS type.

This array allows to find connectivity of each element.

Example : Connectivity of i-th element (1<=i<=NumberOfElement) begins at index ConnectivityIndex[i-1] and ends at index ConnectivityIndex[i]-1 in Connectivity array (Connectivity[ConnectivityIndex[i-1]-1] is the first node of the element)

int MESH::getElementNumber ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  Entity,
MED_EN::medGeometryElement  Type,
int connectivity 
) const [virtual]

Get global number of element which have same connectivity than connectivity argument.

It do not take care of connectivity order (3,4,7,10 is same as 7,3,10,4).

Return -1 if not found.

References BEGIN_OF_MED, END_OF_MED, MEDMEM.CELLMODEL.getNumberOfConstituents(), MEDMEM.CELLMODEL.getNumberOfNodes(), MEDMEM.MESH.getReverseConnectivity(), MEDMEM.MESH.getReverseConnectivityIndex(), LOCALIZED, and MED_EN.MED_DESCENDING.

int MEDMEM.MESH::getReverseConnectivityLength ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  Entity = MED_EN::MED_CELL 
) const [virtual]

Returns the corresponding length of the array returned by MESH.getReverseConnectivity with exactly the same arguments. Used particulary for wrapping CORBA and python.

References MED_EN.MED_ALL_ELEMENTS, MED_EN.MED_EDGE, MED_EN.MED_FACE, MED_EN.MED_NODAL, and batchmode_medcorba_test.spaceDim.

const int * MEDMEM.MESH::getReverseConnectivity ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  Entity = MED_EN::MED_CELL 
) const [virtual]

Returns the reverse connectivity required by ConnectivityType :

  • If ConnectivityType=MED_NODAL : returns connectivity node-cell
  • If ConnectivityType=MED_DESCENDING : returns connectivity face-cell

You must get ReverseConnectivityIndex array to use it.

int MEDMEM.MESH::getReverseConnectivityIndexLength ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  Entity = MED_EN::MED_CELL 
) const [virtual]

Returns the corresponding length of the array returned by MESH.getReverseConnectivityIndex with exactly the same arguments. Used particulary for wrapping CORBA and python.

References MED_EN.MED_ALL_ELEMENTS, MED_EN.MED_EDGE, MED_EN.MED_FACE, MED_EN.MED_NODAL, and batchmode_medcorba_test.spaceDim.

const int * MEDMEM.MESH::getReverseConnectivityIndex ( MED_EN::medConnectivity  ConnectivityType,
MED_EN::medEntityMesh  Entity = MED_EN::MED_CELL 
) const [virtual]

Returns the index array required by ConnectivityType.

This array allow to find reverse connectivity of each elements.

Example : Reverse connectivity of i^{th} elements (1<=i<=NumberOfElement) begin at index ReverseConnectivityIndex[i-1] and end at index ReverseConnectivityIndex[i]-1 in ReverseConnectivity array ( ReverseConnectivity[ReverseConnectivityIndex[i-1]-1] is the first value)

const CONNECTIVITY * MEDMEM.MESH::getConnectivityptr ( ) const [virtual]
void MEDMEM.MESH::setConnectivityptr ( CONNECTIVITY conn)

References testRenumbering.conn.

SUPPORT * MESH::buildSupportOnNodeFromElementList ( const list< int > &  listOfElt,
MED_EN::medEntityMesh  entity 
) const throw (MEDEXCEPTION) [virtual]

Method created to factorize code. This method creates a new support on NODE (to deallocate) containing all the nodes id contained in elements 'listOfElt' of entity 'entity'.

Implements MEDMEM.GMESH.

References med_opsupp_test.entity, MEDMEM.MESH.fillSupportOnNodeFromElementList(), MEDMEM.SUPPORT.setEntity(), MEDMEM.SUPPORT.setMesh(), and MEDMEM.SUPPORT.setName().

void MESH::fillSupportOnNodeFromElementList ( const list< int > &  listOfElt,
SUPPORT supportToFill 
) const throw (MEDEXCEPTION) [virtual]

Method that do the same thing as buildSupportOnNodeFromElementList except that a SUPPORT is not created.

Implements MEDMEM.GMESH.

References MEDMEM.MESH._connectivity, testRenumbering.conn, med_opsupp_test.entity, MEDMEM.CONNECTIVITY.getConnectivityOfAnElement(), MED_EN.MED_NODAL, MED_EN.MED_NODE, and nodes.


Friends And Related Function Documentation

friend class MED_MESH_RDONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class MED_MESH_WRONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class MED_MED_RDONLY_DRIVER21 [friend]
friend class MED_MED_WRONLY_DRIVER21 [friend]
friend class MED_MED_RDWR_DRIVER21 [friend]
friend class MED_MED_RDONLY_DRIVER22 [friend]
friend class MED_MED_WRONLY_DRIVER22 [friend]
friend class MED_MED_RDWR_DRIVER22 [friend]
friend class GIBI_MESH_RDONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class GIBI_MESH_WRONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class GIBI_MESH_RDWR_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class PORFLOW_MESH_RDONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class PORFLOW_MESH_WRONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class PORFLOW_MESH_RDWR_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class VTK_MESH_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

friend class ENSIGHT_MESH_RDONLY_DRIVER [friend]

Reimplemented from MEDMEM.GMESH.

ostream& operator<< ( ostream &  os,
const MESH my 
) [friend]

Field Documentation

COORDINATE* MEDMEM.MESH._coordinate [mutable, protected]
CONNECTIVITY* MEDMEM.MESH._connectivity [mutable, protected]

Modification pour prise en compte de la numérotation optionnelle des noeuds ///.

La map suivante donne le lien numérotation optionnelle => numérotation cannonique Elle sera calculée apres l'appel de MEDnumLire(...) Et sera utilisée avant chaque appel a MEDconnLire(...) pour renuméroter toutes les mailles de façon canonique [1...n] _coordinate->NodeNumber sera utilisé avant chaque appel à MEDconnEcri pour démunéroter les mailles en leur numérotation originelle Ce traitement devrait prévenir tout plantage du aux numérotations optionnelles DES NOEUDS Et ne ralentira que tres peu les traitements sans numéros optionnels

Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS