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

◆ FinleyElements() [1/3]

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

Constructor with name and accompanying NodeData object.

References name, and nodeMesh.

◆ FinleyElements() [2/3]

weipa::FinleyElements::FinleyElements ( const FinleyElements e)

◆ ~FinleyElements()

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

Destructor.

◆ FinleyElements() [3/3]

weipa::FinleyElements::FinleyElements ( )
inlineprivate

Member Function Documentation

◆ buildMeshes()

void weipa::FinleyElements::buildMeshes ( )
private

◆ buildQuadMask()

QuadMaskInfo weipa::FinleyElements::buildQuadMask ( const CoordArray quadNodes,
int  numQNodes 
)
private

◆ buildReducedElements()

void weipa::FinleyElements::buildReducedElements ( const FinleyElementInfo f)
private

◆ getElementFactor()

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.

◆ getGhostCount()

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

Returns the number of "ghost" elements.

Implements weipa::ElementData.

◆ getIDs()

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

Returns a vector of element IDs.

Implements weipa::ElementData.

◆ getMeshNames()

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

Returns the names of the meshes associated with the elements.

Implements weipa::ElementData.

References nodeMesh, and reducedElements.

◆ getNodeList()

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

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

Implements weipa::ElementData.

◆ getNodes()

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

Returns the node mesh instance used by the elements.

Implements weipa::ElementData.

◆ getNodesPerElement()

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

Returns the number of nodes per element.

Implements weipa::ElementData.

◆ getNumElements()

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

Returns the number of elements.

Implements weipa::ElementData.

◆ getQuadMask()

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

◆ getReducedElements()

virtual ElementData_ptr weipa::FinleyElements::getReducedElements ( ) const
inlinevirtual

Returns the reduced elements.

Implements weipa::ElementData.

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

◆ getType()

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

Returns the type of the elements.

Implements weipa::ElementData.

◆ getVarDataByName()

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.

◆ getVarNames()

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

Returns a vector with the mesh variable names.

Implements weipa::ElementData.

References name.

◆ initFromDudley()

bool weipa::FinleyElements::initFromDudley ( const dudley::ElementFile dudleyFile)

◆ initFromFinley()

bool weipa::FinleyElements::initFromFinley ( const finley::ElementFile finleyFile)

◆ prepareGhostIndices()

IntVec weipa::FinleyElements::prepareGhostIndices ( int  ownIndex)
private

References numElements, numGhostElements, and owner.

Referenced by reorderGhostZones().

◆ readFromNc()

bool weipa::FinleyElements::readFromNc ( NcFile *  ncfile)

◆ removeGhostZones()

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

◆ reorderArray()

void weipa::FinleyElements::reorderArray ( IntVec v,
const IntVec idx,
int  elementsPerIndex 
)
private

References paso::util::copy().

Referenced by reorderGhostZones().

◆ 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().

◆ writeConnectivityVTK()

void weipa::FinleyElements::writeConnectivityVTK ( std::ostream &  os)
virtual

◆ writeToSilo()

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::Dudley_Line2, dudley::Dudley_Line2Face, dudley::Dudley_Point1, dudley::Dudley_Tet4, dudley::Dudley_Tet4Face, dudley::Dudley_Tri3, dudley::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

◆ color

IntVec weipa::FinleyElements::color
private

◆ elementFactor

int weipa::FinleyElements::elementFactor
private

◆ ID

IntVec weipa::FinleyElements::ID
private

◆ name

std::string weipa::FinleyElements::name
private

◆ nodeMesh

FinleyNodes_ptr weipa::FinleyElements::nodeMesh
private

◆ nodes

IntVec weipa::FinleyElements::nodes
private

◆ nodesPerElement

int weipa::FinleyElements::nodesPerElement
private

◆ numElements

int weipa::FinleyElements::numElements
private

◆ numGhostElements

int weipa::FinleyElements::numGhostElements
private

◆ originalMesh

FinleyNodes_ptr weipa::FinleyElements::originalMesh
private

◆ owner

IntVec weipa::FinleyElements::owner
private

◆ quadMask

QuadMaskInfo weipa::FinleyElements::quadMask
private

◆ reducedElements

FinleyElements_ptr weipa::FinleyElements::reducedElements
private

◆ reducedQuadMask

QuadMaskInfo weipa::FinleyElements::reducedQuadMask
private

◆ tag

IntVec weipa::FinleyElements::tag
private

◆ type

ZoneType weipa::FinleyElements::type
private

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