escript  Revision_
Public Member Functions | Private Member Functions | Private Attributes | List of all members
weipa::FinleyElements Class Reference

Stores and manipulates one type of finley mesh elements (cells, faces or contacts). More...

#include <FinleyElements.h>

Inheritance diagram for weipa::FinleyElements:
weipa::ElementData

Public Member Functions

 FinleyElements (const std::string &elementName, FinleyNodes_ptr nodes)
 Constructor with name and accompanying NodeData object. More...
 
 FinleyElements (const FinleyElements &e)
 Copy constructor. More...
 
virtual ~FinleyElements ()
 Destructor. More...
 
bool initFromDudley (const Dudley_ElementFile *dudleyFile)
 Initialises with data from a Dudley_ElementFile instance. More...
 
bool initFromFinley (const finley::ElementFile *finleyFile)
 Initialises with data from a Finley_ElementFile instance. More...
 
bool readFromNc (NcFile *ncfile)
 Reads element data from escript/finley NetCDF file. More...
 
void reorderGhostZones (int ownIndex)
 Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of the arrays. More...
 
void removeGhostZones (int ownIndex)
 Removes "ghost" elements. More...
 
virtual void writeConnectivityVTK (std::ostream &os)
 Writes connectivity data to a stream in VTK text format. More...
 
bool writeToSilo (DBfile *dbfile, const std::string &siloPath, const StringVec &labels, const StringVec &units, bool writeMeshData)
 Writes element data into given directory in given Silo file. More...
 
virtual StringVec getMeshNames () const
 Returns the names of the meshes associated with the elements. More...
 
virtual StringVec getVarNames () const
 Returns a vector with the mesh variable names. More...
 
virtual int getNumElements () const
 Returns the number of elements. More...
 
virtual int getNodesPerElement () const
 Returns the number of nodes per element. More...
 
virtual int getGhostCount () const
 Returns the number of "ghost" elements. More...
 
virtual ZoneType getType () const
 Returns the type of the elements. More...
 
virtual const IntVecgetNodeList () const
 Returns a vector of the node IDs used by the elements. More...
 
virtual const IntVecgetIDs () const
 Returns a vector of element IDs. More...
 
virtual const IntVecgetVarDataByName (const std::string varName) const
 Returns an array of data values for the name provided. More...
 
virtual NodeData_ptr getNodes () const
 Returns the node mesh instance used by the elements. More...
 
virtual ElementData_ptr getReducedElements () const
 Returns the reduced elements. More...
 
virtual const QuadMaskInfogetQuadMask (int functionSpace) const
 Returns a QuadMaskInfo structure for given functionspace code. More...
 
virtual int getElementFactor () const
 If the original element type is not supported they are subdivided into N smaller elements (e.g. one Rec9 -> four Rec4) and this method returns the multiplication factor N. More...
 

Private Member Functions

 FinleyElements ()
 
void buildMeshes ()
 
void buildReducedElements (const FinleyElementInfo &f)
 
IntVec prepareGhostIndices (int ownIndex)
 
void reorderArray (IntVec &v, const IntVec &idx, int elementsPerIndex)
 
QuadMaskInfo buildQuadMask (const CoordArray &quadNodes, int numQNodes)
 

Private Attributes

FinleyElements_ptr reducedElements
 
FinleyNodes_ptr nodeMesh
 
FinleyNodes_ptr originalMesh
 
std::string name
 
int numElements
 
int numGhostElements
 
int nodesPerElement
 
ZoneType type
 
IntVec nodes
 
IntVec color
 
IntVec ID
 
IntVec tag
 
IntVec owner
 
QuadMaskInfo quadMask
 
QuadMaskInfo reducedQuadMask
 
int elementFactor
 

Additional Inherited Members

- Protected Member Functions inherited from weipa::ElementData
virtual ~ElementData ()
 

Detailed Description

Stores and manipulates one type of finley mesh elements (cells, faces or contacts).

This class provides functionality to manipulate a finley element file. It is able to load element data from NetCDF files or retrieve it from a finley::ElementFile instance.

Note
The corresponding mesh nodes are not part of this class but are stored in a NodeData instance.

Constructor & Destructor Documentation

weipa::FinleyElements::FinleyElements ( const std::string &  elementName,
FinleyNodes_ptr  nodes 
)

Constructor with name and accompanying NodeData object.

References name, and nodeMesh.

weipa::FinleyElements::FinleyElements ( const FinleyElements e)
virtual weipa::FinleyElements::~FinleyElements ( )
inlinevirtual

Destructor.

weipa::FinleyElements::FinleyElements ( )
inlineprivate

Member Function Documentation

void weipa::FinleyElements::buildMeshes ( )
private
QuadMaskInfo weipa::FinleyElements::buildQuadMask ( const CoordArray quadNodes,
int  numQNodes 
)
private
void weipa::FinleyElements::buildReducedElements ( const FinleyElementInfo f)
private
virtual int weipa::FinleyElements::getElementFactor ( ) const
inlinevirtual

If the original element type is not supported they are subdivided into N smaller elements (e.g. one Rec9 -> four Rec4) and this method returns the multiplication factor N.

Implements weipa::ElementData.

virtual int weipa::FinleyElements::getGhostCount ( ) const
inlinevirtual

Returns the number of "ghost" elements.

Implements weipa::ElementData.

virtual const IntVec& weipa::FinleyElements::getIDs ( ) const
inlinevirtual

Returns a vector of element IDs.

Implements weipa::ElementData.

StringVec weipa::FinleyElements::getMeshNames ( ) const
virtual

Returns the names of the meshes associated with the elements.

Implements weipa::ElementData.

References nodeMesh, and reducedElements.

virtual const IntVec& weipa::FinleyElements::getNodeList ( ) const
inlinevirtual

Returns a vector of the node IDs used by the elements.

Implements weipa::ElementData.

virtual NodeData_ptr weipa::FinleyElements::getNodes ( ) const
inlinevirtual

Returns the node mesh instance used by the elements.

Implements weipa::ElementData.

virtual int weipa::FinleyElements::getNodesPerElement ( ) const
inlinevirtual

Returns the number of nodes per element.

Implements weipa::ElementData.

virtual int weipa::FinleyElements::getNumElements ( ) const
inlinevirtual

Returns the number of elements.

Implements weipa::ElementData.

const QuadMaskInfo & weipa::FinleyElements::getQuadMask ( int  functionSpace) const
virtual
virtual ElementData_ptr weipa::FinleyElements::getReducedElements ( ) const
inlinevirtual

Returns the reduced elements.

Implements weipa::ElementData.

Referenced by weipa::FinleyDomain::getElementsForFunctionSpace().

virtual ZoneType weipa::FinleyElements::getType ( ) const
inlinevirtual

Returns the type of the elements.

Implements weipa::ElementData.

const IntVec & weipa::FinleyElements::getVarDataByName ( const std::string  varName) const
virtual

Returns an array of data values for the name provided.

The name must be one of the names returned from getVarNames().

References color, ID, name, owner, reducedElements, and tag.

StringVec weipa::FinleyElements::getVarNames ( ) const
virtual

Returns a vector with the mesh variable names.

Implements weipa::ElementData.

References name.

bool weipa::FinleyElements::initFromDudley ( const Dudley_ElementFile dudleyFile)
bool weipa::FinleyElements::initFromFinley ( const finley::ElementFile finleyFile)
IntVec weipa::FinleyElements::prepareGhostIndices ( int  ownIndex)
private

References numElements, numGhostElements, and owner.

Referenced by reorderGhostZones().

bool weipa::FinleyElements::readFromNc ( NcFile *  ncfile)
void weipa::FinleyElements::removeGhostZones ( int  ownIndex)
void weipa::FinleyElements::reorderArray ( IntVec v,
const IntVec idx,
int  elementsPerIndex 
)
private

References paso::util::copy().

Referenced by reorderGhostZones().

void weipa::FinleyElements::reorderGhostZones ( int  ownIndex)

Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of the arrays.

References color, ID, nodes, nodesPerElement, numGhostElements, owner, prepareGhostIndices(), reducedElements, reorderArray(), and tag.

Referenced by removeGhostZones().

void weipa::FinleyElements::writeConnectivityVTK ( std::ostream &  os)
virtual
bool weipa::FinleyElements::writeToSilo ( DBfile *  dbfile,
const std::string &  siloPath,
const StringVec labels,
const StringVec units,
bool  writeMeshData 
)

Writes element data into given directory in given Silo file.

Since the mesh depends on element information this method also writes the node mesh itself. If Silo was not available at compile time or if a Silo function fails this method returns false.

References color, Dudley_Line2, Dudley_Line2Face, Dudley_Point1, Dudley_Tet4, Dudley_Tet4Face, Dudley_Tri3, Dudley_Tri3Face, weipa::FinleyElementInfo::elementFactor, weipa::FinleyElementInfo::elementSize, weipa::FinleyElementInfo::elementType, finley::Hex20, finley::Hex20Face, finley::Hex20Face_Contact, hex20indices, finley::Hex27, hex27indices, finley::Hex27Macro, finley::Hex8, finley::Hex8Face, finley::Hex8Face_Contact, ID, finley::Line2, finley::Line2_Contact, finley::Line2Face, finley::Line2Face_Contact, finley::Line3, finley::Line3_Contact, finley::Line3Face, finley::Line3Face_Contact, line3indices, finley::Line3Macro, weipa::FinleyElementInfo::multiCellIndices, name, nodeMesh, nodes, nodesPerElement, numElements, numGhostElements, owner, finley::Point1, finley::Point1_Contact, weipa::FinleyElementInfo::quadDim, finley::Rec4, finley::Rec4_Contact, finley::Rec4Face, finley::Rec4Face_Contact, finley::Rec8, finley::Rec8_Contact, finley::Rec8Face, finley::Rec8Face_Contact, rec8indices, finley::Rec9, finley::Rec9_Contact, rec9indices, finley::Rec9Macro, reducedElements, weipa::FinleyElementInfo::reducedElementSize, weipa::FinleyElementInfo::reducedElementType, tag, finley::Tet10, finley::Tet10Face, finley::Tet10Face_Contact, tet10indices, finley::Tet10Macro, finley::Tet4, finley::Tet4Face, finley::Tet4Face_Contact, finley::Tri3, finley::Tri3_Contact, finley::Tri3Face, finley::Tri3Face_Contact, finley::Tri6, finley::Tri6_Contact, finley::Tri6Face, finley::Tri6Face_Contact, tri6indices, finley::Tri6Macro, weipa::FinleyElementInfo::useQuadNodes, weipa::ZONETYPE_BEAM, weipa::ZONETYPE_HEX, weipa::ZONETYPE_POLYGON, weipa::ZONETYPE_QUAD, weipa::ZONETYPE_TET, and weipa::ZONETYPE_TRIANGLE.

Member Data Documentation

IntVec weipa::FinleyElements::color
private
int weipa::FinleyElements::elementFactor
private
IntVec weipa::FinleyElements::ID
private
std::string weipa::FinleyElements::name
private
FinleyNodes_ptr weipa::FinleyElements::nodeMesh
private
IntVec weipa::FinleyElements::nodes
private
int weipa::FinleyElements::nodesPerElement
private
int weipa::FinleyElements::numElements
private
int weipa::FinleyElements::numGhostElements
private
FinleyNodes_ptr weipa::FinleyElements::originalMesh
private
IntVec weipa::FinleyElements::owner
private
QuadMaskInfo weipa::FinleyElements::quadMask
private
FinleyElements_ptr weipa::FinleyElements::reducedElements
private
QuadMaskInfo weipa::FinleyElements::reducedQuadMask
private
IntVec weipa::FinleyElements::tag
private
ZoneType weipa::FinleyElements::type
private

The documentation for this class was generated from the following files: