escript
Revision_
|
Stores and manipulates one type of finley mesh elements (cells, faces or contacts). More...
#include <FinleyElements.h>
Public Member Functions | |
FinleyElements (const std::string &elementName, FinleyNodes_ptr nodes) | |
Constructor with name and accompanying NodeData object. | |
FinleyElements (const FinleyElements &e) | |
Copy constructor. | |
virtual | ~FinleyElements () |
Destructor. | |
bool | initFromDudley (const Dudley_ElementFile *dudleyFile) |
Initialises with data from a Dudley_ElementFile instance. | |
bool | initFromFinley (const finley::ElementFile *finleyFile) |
Initialises with data from a Finley_ElementFile instance. | |
bool | readFromNc (NcFile *ncfile) |
Reads element data from escript/finley NetCDF file. | |
void | reorderGhostZones (int ownIndex) |
Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of the arrays. | |
void | removeGhostZones (int ownIndex) |
Removes "ghost" elements. | |
virtual void | writeConnectivityVTK (std::ostream &os) |
Writes connectivity data to a stream in VTK text format. | |
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. | |
virtual StringVec | getMeshNames () const |
Returns the names of the meshes associated with the elements. | |
virtual StringVec | getVarNames () const |
Returns a vector with the mesh variable names. | |
virtual int | getNumElements () const |
Returns the number of elements. | |
virtual int | getNodesPerElement () const |
Returns the number of nodes per element. | |
virtual int | getGhostCount () const |
Returns the number of "ghost" elements. | |
virtual ZoneType | getType () const |
Returns the type of the elements. | |
finley::ElementTypeId | getFinleyTypeId () const |
Returns the original type id of the Finley reference elements. | |
virtual const IntVec & | getNodeList () const |
Returns a vector of the node IDs used by the elements. | |
virtual const IntVec & | getIDs () const |
Returns a vector of element IDs. | |
virtual const IntVec & | getVarDataByName (const std::string varName) const |
Returns an array of data values for the name provided. | |
virtual NodeData_ptr | getNodes () const |
Returns the node mesh instance used by the elements. | |
virtual ElementData_ptr | getReducedElements () const |
Returns the reduced elements. | |
virtual const QuadMaskInfo & | getQuadMask (int functionSpace) const |
Returns a QuadMaskInfo structure for given functionspace code. | |
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. | |
Private Member Functions | |
FinleyElements () | |
FinleyElementInfo | getDudleyTypeInfo (Dudley_ElementTypeId typeId) |
FinleyElementInfo | getFinleyTypeInfo (finley::ElementTypeId typeId) |
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 |
finley::ElementTypeId | finleyTypeId |
IntVec | nodes |
IntVec | color |
IntVec | ID |
IntVec | tag |
IntVec | owner |
QuadMaskInfo | quadMask |
QuadMaskInfo | reducedQuadMask |
int | elementFactor |
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.
weipa::FinleyElements::FinleyElements | ( | const std::string & | elementName, |
FinleyNodes_ptr | nodes | ||
) |
weipa::FinleyElements::FinleyElements | ( | const FinleyElements & | e | ) |
Copy constructor.
References color, elementFactor, FinleyElements(), finleyTypeId, ID, name, nodeMesh, nodes, nodesPerElement, numElements, numGhostElements, originalMesh, owner, reducedElements, tag, and type.
virtual weipa::FinleyElements::~FinleyElements | ( | ) | [inline, virtual] |
Destructor.
weipa::FinleyElements::FinleyElements | ( | ) | [inline, private] |
Referenced by buildReducedElements(), and FinleyElements().
void weipa::FinleyElements::buildMeshes | ( | ) | [private] |
References name, nodeMesh, nodes, numElements, originalMesh, and reducedElements.
Referenced by initFromDudley(), initFromFinley(), and readFromNc().
QuadMaskInfo weipa::FinleyElements::buildQuadMask | ( | const CoordArray & | quadNodes, |
int | numQNodes | ||
) | [private] |
References elementFactor, weipa::QuadMaskInfo::factor, finleyTypeId, finley::Hex27, finley::Hex27Macro, weipa::inside1D(), weipa::inside2D(), weipa::inside3D(), finley::Line3Macro, weipa::QuadMaskInfo::mask, nodesPerElement, weipa::pointInTet(), weipa::pointInTri(), finley::Rec9, finley::Rec9Macro, finley::Tet10, tet10indices, finley::Tet10Macro, finley::Tri6, tri6indices, and finley::Tri6Macro.
Referenced by initFromFinley(), and readFromNc().
void weipa::FinleyElements::buildReducedElements | ( | const FinleyElementInfo & | f | ) | [private] |
References color, paso::util::copy(), weipa::FinleyElementInfo::elementFactor, weipa::FinleyElementInfo::elementSize, FinleyElements(), ID, weipa::FinleyElementInfo::multiCellIndices, name, nodes, nodesPerElement, numElements, originalMesh, owner, reducedElements, weipa::FinleyElementInfo::reducedElementSize, weipa::FinleyElementInfo::reducedElementType, tag, and type.
Referenced by initFromDudley(), initFromFinley(), and readFromNc().
FinleyElementInfo weipa::FinleyElements::getDudleyTypeInfo | ( | Dudley_ElementTypeId | typeId | ) | [private] |
References Dudley_Line2, Dudley_Line2Face, Dudley_Point1, Dudley_Tet4, Dudley_Tet4Face, Dudley_Tri3, Dudley_Tri3Face, weipa::FinleyElementInfo::elementFactor, weipa::FinleyElementInfo::elementSize, weipa::FinleyElementInfo::elementType, weipa::FinleyElementInfo::multiCellIndices, weipa::FinleyElementInfo::quadDim, weipa::FinleyElementInfo::reducedElementSize, weipa::FinleyElementInfo::reducedElementType, weipa::FinleyElementInfo::useQuadNodes, weipa::ZONETYPE_BEAM, weipa::ZONETYPE_POLYGON, weipa::ZONETYPE_TET, and weipa::ZONETYPE_TRIANGLE.
Referenced by initFromDudley().
virtual int weipa::FinleyElements::getElementFactor | ( | ) | const [inline, virtual] |
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.
References elementFactor.
finley::ElementTypeId weipa::FinleyElements::getFinleyTypeId | ( | ) | const [inline] |
Returns the original type id of the Finley reference elements.
References finleyTypeId.
FinleyElementInfo weipa::FinleyElements::getFinleyTypeInfo | ( | finley::ElementTypeId | typeId | ) | [private] |
References 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, 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, 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, weipa::FinleyElementInfo::reducedElementSize, weipa::FinleyElementInfo::reducedElementType, 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.
Referenced by initFromFinley(), and readFromNc().
virtual int weipa::FinleyElements::getGhostCount | ( | ) | const [inline, virtual] |
virtual const IntVec& weipa::FinleyElements::getIDs | ( | ) | const [inline, virtual] |
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 [inline, virtual] |
Returns a vector of the node IDs used by the elements.
Implements weipa::ElementData.
References nodes.
virtual NodeData_ptr weipa::FinleyElements::getNodes | ( | ) | const [inline, virtual] |
Returns the node mesh instance used by the elements.
Implements weipa::ElementData.
References nodeMesh.
virtual int weipa::FinleyElements::getNodesPerElement | ( | ) | const [inline, virtual] |
virtual int weipa::FinleyElements::getNumElements | ( | ) | const [inline, virtual] |
const QuadMaskInfo & weipa::FinleyElements::getQuadMask | ( | int | functionSpace | ) | const [virtual] |
Returns a QuadMaskInfo structure for given functionspace code.
Implements weipa::ElementData.
References FINLEY_REDUCED_CONTACT_ELEMENTS_1, FINLEY_REDUCED_ELEMENTS, FINLEY_REDUCED_FACE_ELEMENTS, quadMask, and reducedQuadMask.
virtual ElementData_ptr weipa::FinleyElements::getReducedElements | ( | ) | const [inline, virtual] |
Returns the reduced elements.
Implements weipa::ElementData.
References reducedElements.
Referenced by weipa::FinleyDomain::getElementsForFunctionSpace().
virtual ZoneType weipa::FinleyElements::getType | ( | ) | const [inline, virtual] |
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] |
bool weipa::FinleyElements::initFromDudley | ( | const Dudley_ElementFile * | dudleyFile | ) |
Initialises with data from a Dudley_ElementFile instance.
References buildMeshes(), buildReducedElements(), Dudley_ElementFile::Color, color, paso::util::copy(), elementFactor, Dudley_ElementFile::etype, getDudleyTypeInfo(), Dudley_ElementFile::Id, ID, Dudley_ElementFile::Nodes, nodes, nodesPerElement, Dudley_ElementFile::numElements, numElements, Dudley_ElementFile::numNodes, Dudley_ElementFile::Owner, owner, Dudley_ElementFile::Tag, tag, and type.
bool weipa::FinleyElements::initFromFinley | ( | const finley::ElementFile * | finleyFile | ) |
Initialises with data from a Finley_ElementFile instance.
References buildMeshes(), buildQuadMask(), buildReducedElements(), finley::ElementFile::Color, color, paso::util::copy(), weipa::FinleyElementInfo::elementFactor, elementFactor, weipa::FinleyElementInfo::elementType, finleyTypeId, getFinleyTypeInfo(), finley::ElementFile::Id, ID, finley::ElementFile::Nodes, nodes, nodesPerElement, finley::ElementFile::numElements, numElements, finley::ElementFile::numNodes, finley::ElementFile::Owner, owner, weipa::FinleyElementInfo::quadDim, quadMask, weipa::FinleyElementInfo::reducedElementSize, reducedQuadMask, finley::ElementFile::referenceElementSet, finley::ElementFile::Tag, tag, type, and weipa::FinleyElementInfo::useQuadNodes.
IntVec weipa::FinleyElements::prepareGhostIndices | ( | int | ownIndex | ) | [private] |
References numElements, numGhostElements, and owner.
Referenced by reorderGhostZones().
bool weipa::FinleyElements::readFromNc | ( | NcFile * | ncfile | ) |
Reads element data from escript/finley NetCDF file.
References buildMeshes(), buildQuadMask(), buildReducedElements(), color, weipa::FinleyElementInfo::elementFactor, elementFactor, weipa::FinleyElementInfo::elementType, finleyTypeId, getFinleyTypeInfo(), ID, name, nodes, nodesPerElement, numElements, owner, weipa::FinleyElementInfo::quadDim, quadMask, weipa::FinleyElementInfo::reducedElementSize, reducedQuadMask, tag, type, and weipa::FinleyElementInfo::useQuadNodes.
void weipa::FinleyElements::removeGhostZones | ( | int | ownIndex | ) |
Removes "ghost" elements.
References color, ID, nodes, nodesPerElement, numElements, numGhostElements, owner, reducedElements, reorderGhostZones(), and tag.
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] |
Writes connectivity data to a stream in VTK text format.
Implements weipa::ElementData.
References nodeMesh, nodes, nodesPerElement, and numElements.
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, ID, name, nodeMesh, nodes, nodesPerElement, numElements, numGhostElements, owner, reducedElements, and tag.
IntVec weipa::FinleyElements::color [private] |
int weipa::FinleyElements::elementFactor [private] |
Referenced by buildQuadMask(), FinleyElements(), getElementFactor(), initFromDudley(), initFromFinley(), and readFromNc().
Referenced by buildQuadMask(), FinleyElements(), getFinleyTypeId(), initFromFinley(), and readFromNc().
IntVec weipa::FinleyElements::ID [private] |
std::string weipa::FinleyElements::name [private] |
Referenced by buildMeshes(), buildReducedElements(), FinleyElements(), getVarDataByName(), getVarNames(), readFromNc(), and writeToSilo().
Referenced by buildMeshes(), FinleyElements(), getMeshNames(), getNodes(), writeConnectivityVTK(), and writeToSilo().
IntVec weipa::FinleyElements::nodes [private] |
int weipa::FinleyElements::nodesPerElement [private] |
int weipa::FinleyElements::numElements [private] |
int weipa::FinleyElements::numGhostElements [private] |
Referenced by FinleyElements(), getGhostCount(), prepareGhostIndices(), removeGhostZones(), reorderGhostZones(), and writeToSilo().
Referenced by buildMeshes(), buildReducedElements(), and FinleyElements().
IntVec weipa::FinleyElements::owner [private] |
QuadMaskInfo weipa::FinleyElements::quadMask [private] |
Referenced by getQuadMask(), initFromFinley(), and readFromNc().
Referenced by getQuadMask(), initFromFinley(), and readFromNc().
IntVec weipa::FinleyElements::tag [private] |
ZoneType weipa::FinleyElements::type [private] |
Referenced by buildReducedElements(), FinleyElements(), getType(), initFromDudley(), initFromFinley(), and readFromNc().