Go to the documentation of this file.
18 #ifndef __WEIPA_FINLEYELEMENTS_H__
19 #define __WEIPA_FINLEYELEMENTS_H__
21 #include <weipa/ElementData.h>
22 #include <weipa/FinleyNodes.h>
25 #include <dudley/Dudley.h>
26 #include <dudley/ElementType.h>
29 #include <finley/ReferenceElements.h>
36 #define NCFTYPE netCDF::NcFile&
39 #define NCFTYPE NcFile*
113 bool writeToSilo(DBfile* dbfile,
const std::string& siloPath,
198 #endif // __WEIPA_FINLEYELEMENTS_H__
QuadMaskInfo reducedQuadMask
Definition: FinleyElements.h:191
int * Tag
Tag[i] is the tag of element i.
Definition: dudley/src/ElementFile.h:135
@ Rec4_Contact
Definition: ReferenceElements.h:87
@ Line3
Definition: ReferenceElements.h:42
bool inside3D(float x, float y, float z, float cx, float cy, float cz, float r)
Definition: FinleyElements.cpp:1104
@ Dudley_Point1
Definition: ElementType.h:54
@ Rec9
Definition: ReferenceElements.h:50
#define FINLEY_REDUCED_FACE_ELEMENTS
Definition: Finley.h:75
@ Rec8Face_Contact
Definition: ReferenceElements.h:100
virtual const IntVec & getNodeList() const
Returns a vector of the node IDs used by the elements.
Definition: FinleyElements.h:141
QuadMaskInfo buildQuadMask(const CoordArray &quadNodes, int numQNodes)
Definition: FinleyElements.cpp:1198
@ Hex20Face_Contact
Definition: ReferenceElements.h:108
void buildMeshes()
Definition: FinleyElements.cpp:711
virtual const IntVec & getVarDataByName(const std::string varName) const
Returns an array of data values for the name provided.
Definition: FinleyElements.cpp:516
ZoneType elementType
Definition: FinleyElements.h:56
#define FINLEY_REDUCED_ELEMENTS
Definition: Finley.h:74
#define FINLEY_REDUCED_CONTACT_ELEMENTS_1
Definition: Finley.h:76
IntVec tag
Definition: FinleyElements.h:189
Holds information that is used to convert from finley element types to elements supported by Silo and...
Definition: FinleyElements.h:54
int numGhostElements
Definition: FinleyElements.h:185
boost::shared_ptr< const ReferenceElementSet > const_ReferenceElementSet_ptr
Definition: ReferenceElementSets.h:94
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.
Definition: FinleyElements.cpp:771
@ Dudley_Tet4Face
Definition: ElementType.h:60
@ Tet4Face_Contact
Definition: ReferenceElements.h:104
@ Line3_Contact
Definition: ReferenceElements.h:81
@ ZONETYPE_HEX
Definition: ElementData.h:58
std::vector< IntVec > mask
Definition: ElementData.h:55
virtual ~FinleyElements()
Destructor.
Definition: FinleyElements.h:87
bool sameSide(float d1, float d2)
Definition: FinleyElements.cpp:1112
IntVec prepareGhostIndices(int ownIndex)
Definition: FinleyElements.cpp:646
virtual int getGhostCount() const
Returns the number of "ghost" elements.
Definition: FinleyElements.h:130
int elementSize
Definition: FinleyElements.h:58
static const size_t hex20indices[36 *3]
Definition: FinleyElements.cpp:93
@ Tet10
Definition: ReferenceElements.h:54
int * Tag
Tag[i] is the tag of element i.
Definition: finley/src/ElementFile.h:143
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:147
virtual int getNumElements() const
Returns the number of elements.
Definition: FinleyElements.h:124
@ Tet10Macro
Definition: ReferenceElements.h:114
bool initFromDudley(const dudley::ElementFile *dudleyFile)
Initialises with data from a Dudley ElementFile instance.
Definition: FinleyElements.cpp:169
virtual const QuadMaskInfo & getQuadMask(int functionSpace) const
Returns a QuadMaskInfo structure for given functionspace code.
Definition: FinleyElements.cpp:535
int elementFactor
Definition: FinleyElements.h:192
@ ZONETYPE_TRIANGLE
Definition: ElementData.h:62
void reorderGhostZones(int ownIndex)
Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of...
Definition: FinleyElements.cpp:670
This struct holds a mask (0's and 1's) that indicates which quad nodes contribute to a sub-element wh...
Definition: ElementData.h:54
@ Tri6Face
Definition: ReferenceElements.h:64
@ Tet4Face
Definition: ReferenceElements.h:72
@ Line3Face
Definition: ReferenceElements.h:61
@ Dudley_Tri3Face
Definition: ElementType.h:59
int numElements
Definition: FinleyElements.h:184
IntVec ID
Definition: FinleyElements.h:189
const size_t * multiCellIndices
Definition: FinleyElements.h:59
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:138
static const size_t tri6indices[4 *3]
Definition: FinleyElements.cpp:63
@ Tet10Face
Definition: ReferenceElements.h:73
@ Tri6Face_Contact
Definition: ReferenceElements.h:96
@ ZONETYPE_UNKNOWN
Definition: ElementData.h:56
@ Rec8Face
Definition: ReferenceElements.h:68
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: FinleyElements.cpp:503
index_t * Nodes
Definition: finley/src/ElementFile.h:158
@ Rec8_Contact
Definition: ReferenceElements.h:88
int nodesPerElement
Definition: FinleyElements.h:186
Definition: DataVar.cpp:51
@ Tri3
Definition: ReferenceElements.h:44
@ Rec9Macro
Definition: ReferenceElements.h:113
@ Hex27
Definition: ReferenceElements.h:58
@ Line2Face
Definition: ReferenceElements.h:60
ZoneType
Definition: ElementData.h:41
@ Rec9_Contact
Definition: ReferenceElements.h:89
virtual StringVec getMeshNames() const
Returns the names of the meshes associated with the elements.
Definition: FinleyElements.cpp:487
IntVec factor
Definition: ElementData.h:56
@ Point1_Contact
Definition: ReferenceElements.h:79
static const size_t tet10indices[8 *4]
Definition: FinleyElements.cpp:83
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:116
static const size_t rec9indices[4 *4]
Definition: FinleyElements.cpp:77
bool useQuadNodes
Definition: FinleyElements.h:60
dim_t numElements
number of elements
Definition: finley/src/ElementFile.h:136
A suite of factory methods for creating 2D and 3D dudley domains.
Definition: dudley/src/Assemble.h:32
static const size_t hex27indices[8 *8]
Definition: FinleyElements.cpp:107
static float det4x4(float m_00, float m_01, float m_02, float m_03, float m_10, float m_11, float m_12, float m_13, float m_20, float m_21, float m_22, float m_23, float m_30, float m_31, float m_32, float m_33)
Definition: FinleyElements.cpp:1119
int * Owner
Owner[i] contains the rank that owns element i.
Definition: finley/src/ElementFile.h:146
boost::shared_ptr< FinleyElements > FinleyElements_ptr
Definition: FinleyElements.h:64
@ Dudley_Line2Face
Definition: ElementType.h:58
static const size_t line3indices[2 *2]
Definition: FinleyElements.cpp:59
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:127
void removeGhostZones(int ownIndex)
Removes "ghost" elements.
Definition: FinleyElements.cpp:690
std::vector< float * > CoordArray
Definition: weipa.h:62
static bool pointInTet(float x, float y, float z, const float *p0, const float *p1, const float *p2, const float *p3)
Definition: FinleyElements.cpp:1138
Definition: dudley/src/ElementFile.h:66
@ Tri6Macro
Definition: ReferenceElements.h:112
#define NCFTYPE
Definition: FinleyElements.h:39
@ Hex27Macro
Definition: ReferenceElements.h:115
@ Rec8
Definition: ReferenceElements.h:49
index_t * Id
Definition: dudley/src/ElementFile.h:132
@ NoRef
Definition: ReferenceElements.h:116
@ Rec4Face
Definition: ReferenceElements.h:67
boost::shared_ptr< ElementData > ElementData_ptr
Definition: weipa.h:67
Stores and manipulates one type of domain elements.
Definition: ElementData.h:63
index_t * Color
Definition: finley/src/ElementFile.h:164
bool initFromFinley(const finley::ElementFile *finleyFile)
Initialises with data from a Finley ElementFile instance.
Definition: FinleyElements.cpp:202
virtual ElementData_ptr getReducedElements() const
Returns the reduced elements.
Definition: FinleyElements.h:155
ZoneType type
Definition: FinleyElements.h:187
@ Hex8Face_Contact
Definition: ReferenceElements.h:107
@ Point1
Definition: ReferenceElements.h:40
void buildReducedElements(const FinleyElementInfo &f)
Definition: FinleyElements.cpp:573
virtual int getElementFactor() const
If the original element type is not supported they are subdivided into N smaller elements (e....
Definition: FinleyElements.h:163
ZoneType reducedElementType
Definition: FinleyElements.h:56
FinleyNodes_ptr nodeMesh
Definition: FinleyElements.h:181
index_t * Id
Definition: finley/src/ElementFile.h:140
@ Hex20
Definition: ReferenceElements.h:57
FinleyElements_ptr reducedElements
Definition: FinleyElements.h:180
@ Line3Face_Contact
Definition: ReferenceElements.h:93
@ Tri3Face
Definition: ReferenceElements.h:63
virtual ZoneType getType() const
Returns the type of the elements.
Definition: FinleyElements.h:133
FinleyNodes_ptr originalMesh
Definition: FinleyElements.h:182
@ Tri6_Contact
Definition: ReferenceElements.h:84
IntVec nodes
Definition: FinleyElements.h:188
static const size_t rec8indices[6 *3]
Definition: FinleyElements.cpp:69
@ ZONETYPE_QUAD
Definition: ElementData.h:60
@ Rec4Face_Contact
Definition: ReferenceElements.h:99
int reducedElementSize
Definition: FinleyElements.h:58
int quadDim
Definition: FinleyElements.h:61
@ Hex8Face
Definition: ReferenceElements.h:75
@ Hex8
Definition: ReferenceElements.h:56
@ Tri6
Definition: ReferenceElements.h:45
@ Tri3_Contact
Definition: ReferenceElements.h:83
virtual NodeData_ptr getNodes() const
Returns the node mesh instance used by the elements.
Definition: FinleyElements.h:152
@ Line2Face_Contact
Definition: ReferenceElements.h:92
@ Line2
Definition: ReferenceElements.h:41
ElementTypeId
Definition: ReferenceElements.h:39
virtual void writeConnectivityVTK(std::ostream &os)
Writes connectivity data to a stream in VTK text format.
Definition: FinleyElements.cpp:734
static bool pointInTri(float x, float y, const float *p0, const float *p1, const float *p2)
Definition: FinleyElements.cpp:1174
@ Line3Macro
Definition: ReferenceElements.h:111
@ Tet4
Definition: ReferenceElements.h:53
@ Dudley_Tet4
Definition: ElementType.h:57
std::string name
Definition: FinleyElements.h:183
boost::shared_ptr< NodeData > NodeData_ptr
Definition: weipa.h:69
@ Hex20Face
Definition: ReferenceElements.h:76
std::vector< std::string > StringVec
Definition: weipa.h:61
bool inside2D(float x, float y, float cx, float cy, float r)
Definition: FinleyElements.cpp:1098
@ ZONETYPE_TET
Definition: ElementData.h:61
Definition: finley/src/ElementFile.h:76
bool inside1D(float x, float c, float r)
Definition: FinleyElements.cpp:1092
IntVec owner
Definition: FinleyElements.h:190
index_t * Color
Definition: dudley/src/ElementFile.h:152
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition: ShapeFunctions.h:100
@ ZONETYPE_POLYGON
Definition: ElementData.h:59
Definition: ReferenceElementSets.h:41
Stores and manipulates finley mesh nodes.
Definition: FinleyNodes.h:51
IntVec color
Definition: FinleyElements.h:189
boost::shared_ptr< FinleyNodes > FinleyNodes_ptr
Definition: FinleyNodes.h:43
bool readFromNc(NcFile *ncfile)
Reads element data from escript/finley NetCDF file.
Definition: FinleyElements.cpp:383
const_ReferenceElementSet_ptr referenceElementSet
the reference element to be used
Definition: finley/src/ElementFile.h:134
FinleyElements()
Definition: FinleyElements.h:166
QuadMaskInfo quadMask
Definition: FinleyElements.h:191
int elementFactor
Definition: FinleyElements.h:57
void reorderArray(IntVec &v, const IntVec &idx, int elementsPerIndex)
Definition: FinleyElements.cpp:549
@ Dudley_Line2
Definition: ElementType.h:55
std::vector< int > IntVec
Definition: weipa.h:60
Stores and manipulates one type of finley mesh elements (cells, faces or contacts).
Definition: FinleyElements.h:76
A suite of factory methods for creating various finley domains.
Definition: finley/src/Assemble.h:32
@ Dudley_Tri3
Definition: ElementType.h:56
@ Tri3Face_Contact
Definition: ReferenceElements.h:95
ElementTypeId
Definition: ElementType.h:39
ElementTypeId etype
element type ID
Definition: dudley/src/ElementFile.h:167
@ Line2_Contact
Definition: ReferenceElements.h:80
@ ZONETYPE_BEAM
Definition: ElementData.h:57
@ Tet10Face_Contact
Definition: ReferenceElements.h:105
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:144
virtual const IntVec & getIDs() const
Returns a vector of element IDs.
Definition: FinleyElements.h:144
@ Rec4
Definition: ReferenceElements.h:48
int numNodes
number of nodes per element
Definition: finley/src/ElementFile.h:152
virtual int getNodesPerElement() const
Returns the number of nodes per element.
Definition: FinleyElements.h:127