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*
54 struct FinleyElementInfo
113 bool writeToSilo(DBfile* dbfile,
const std::string& siloPath,
158 virtual const QuadMaskInfo&
getQuadMask(
int functionSpace)
const;
198 #endif // __WEIPA_FINLEYELEMENTS_H__
QuadMaskInfo reducedQuadMask
Definition: FinleyElements.h:190
int * Tag
Tag[i] is the tag of element i.
Definition: dudley/src/ElementFile.h:133
Definition: ReferenceElements.h:85
Definition: ReferenceElements.h:40
bool inside3D(float x, float y, float z, float cx, float cy, float cz, float r)
Definition: FinleyElements.cpp:1103
Definition: ElementType.h:51
Definition: ReferenceElements.h:48
#define FINLEY_REDUCED_FACE_ELEMENTS
Definition: Finley.h:71
Definition: ReferenceElements.h:98
virtual const IntVec & getNodeList() const
Returns a vector of the node IDs used by the elements.
Definition: FinleyElements.h:140
QuadMaskInfo buildQuadMask(const CoordArray &quadNodes, int numQNodes)
Definition: FinleyElements.cpp:1197
Definition: ReferenceElements.h:106
void buildMeshes()
Definition: FinleyElements.cpp:710
virtual const IntVec & getVarDataByName(const std::string varName) const
Returns an array of data values for the name provided.
Definition: FinleyElements.cpp:515
ZoneType elementType
Definition: FinleyElements.h:55
#define FINLEY_REDUCED_ELEMENTS
Definition: Finley.h:70
#define FINLEY_REDUCED_CONTACT_ELEMENTS_1
Definition: Finley.h:72
IntVec tag
Definition: FinleyElements.h:188
Holds information that is used to convert from finley element types to elements supported by Silo and...
Definition: FinleyElements.h:53
int numGhostElements
Definition: FinleyElements.h:184
boost::shared_ptr< const ReferenceElementSet > const_ReferenceElementSet_ptr
Definition: ReferenceElementSets.h:92
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:770
Definition: ElementType.h:57
Definition: ReferenceElements.h:102
Definition: ReferenceElements.h:79
Definition: ElementData.h:55
std::vector< IntVec > mask
Definition: ElementData.h:53
virtual ~FinleyElements()
Destructor.
Definition: FinleyElements.h:86
bool sameSide(float d1, float d2)
Definition: FinleyElements.cpp:1111
IntVec prepareGhostIndices(int ownIndex)
Definition: FinleyElements.cpp:645
virtual int getGhostCount() const
Returns the number of "ghost" elements.
Definition: FinleyElements.h:129
int elementSize
Definition: FinleyElements.h:57
static const size_t hex20indices[36 *3]
Definition: FinleyElements.cpp:92
Definition: ReferenceElements.h:52
int * Tag
Tag[i] is the tag of element i.
Definition: finley/src/ElementFile.h:141
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:145
virtual int getNumElements() const
Returns the number of elements.
Definition: FinleyElements.h:123
Definition: ReferenceElements.h:112
bool initFromDudley(const dudley::ElementFile *dudleyFile)
Initialises with data from a Dudley ElementFile instance.
Definition: FinleyElements.cpp:168
virtual const QuadMaskInfo & getQuadMask(int functionSpace) const
Returns a QuadMaskInfo structure for given functionspace code.
Definition: FinleyElements.cpp:534
int elementFactor
Definition: FinleyElements.h:191
Definition: ElementData.h:59
void reorderGhostZones(int ownIndex)
Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of...
Definition: FinleyElements.cpp:669
This struct holds a mask (0's and 1's) that indicates which quad nodes contribute to a sub-element wh...
Definition: ElementData.h:52
Definition: ReferenceElements.h:62
Definition: ReferenceElements.h:70
Definition: ReferenceElements.h:59
Definition: ElementType.h:56
int numElements
Definition: FinleyElements.h:183
IntVec ID
Definition: FinleyElements.h:188
const size_t * multiCellIndices
Definition: FinleyElements.h:58
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:136
static const size_t tri6indices[4 *3]
Definition: FinleyElements.cpp:62
Definition: ReferenceElements.h:71
Definition: ReferenceElements.h:94
Definition: ElementData.h:53
Definition: ReferenceElements.h:66
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: FinleyElements.cpp:502
index_t * Nodes
Definition: finley/src/ElementFile.h:156
Definition: ReferenceElements.h:86
int nodesPerElement
Definition: FinleyElements.h:185
Definition: DataVar.cpp:50
Definition: ReferenceElements.h:42
Definition: ReferenceElements.h:111
Definition: ReferenceElements.h:56
Definition: ReferenceElements.h:58
ZoneType
Definition: ElementData.h:39
Definition: ReferenceElements.h:87
virtual StringVec getMeshNames() const
Returns the names of the meshes associated with the elements.
Definition: FinleyElements.cpp:486
IntVec factor
Definition: ElementData.h:54
Definition: ReferenceElements.h:77
static const size_t tet10indices[8 *4]
Definition: FinleyElements.cpp:82
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:113
static const size_t rec9indices[4 *4]
Definition: FinleyElements.cpp:76
bool useQuadNodes
Definition: FinleyElements.h:59
dim_t numElements
number of elements
Definition: finley/src/ElementFile.h:134
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:106
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:1118
int * Owner
Owner[i] contains the rank that owns element i.
Definition: finley/src/ElementFile.h:144
boost::shared_ptr< FinleyElements > FinleyElements_ptr
Definition: FinleyElements.h:63
Definition: ElementType.h:55
static const size_t line3indices[2 *2]
Definition: FinleyElements.cpp:58
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:125
void removeGhostZones(int ownIndex)
Removes "ghost" elements.
Definition: FinleyElements.cpp:689
std::vector< float * > CoordArray
Definition: weipa.h:61
static bool pointInTet(float x, float y, float z, const float *p0, const float *p1, const float *p2, const float *p3)
Definition: FinleyElements.cpp:1137
Definition: dudley/src/ElementFile.h:64
Definition: ReferenceElements.h:110
#define NCFTYPE
Definition: FinleyElements.h:38
Definition: ReferenceElements.h:113
Definition: ReferenceElements.h:47
index_t * Id
Definition: dudley/src/ElementFile.h:130
Definition: ReferenceElements.h:114
Definition: ReferenceElements.h:65
boost::shared_ptr< ElementData > ElementData_ptr
Definition: weipa.h:66
Stores and manipulates one type of domain elements.
Definition: ElementData.h:61
index_t * Color
Definition: finley/src/ElementFile.h:162
bool initFromFinley(const finley::ElementFile *finleyFile)
Initialises with data from a Finley ElementFile instance.
Definition: FinleyElements.cpp:201
virtual ElementData_ptr getReducedElements() const
Returns the reduced elements.
Definition: FinleyElements.h:154
ZoneType type
Definition: FinleyElements.h:186
Definition: ReferenceElements.h:105
Definition: ReferenceElements.h:38
void buildReducedElements(const FinleyElementInfo &f)
Definition: FinleyElements.cpp:572
virtual int getElementFactor() const
If the original element type is not supported they are subdivided into N smaller elements (e....
Definition: FinleyElements.h:162
ZoneType reducedElementType
Definition: FinleyElements.h:55
FinleyNodes_ptr nodeMesh
Definition: FinleyElements.h:180
index_t * Id
Definition: finley/src/ElementFile.h:138
Definition: ReferenceElements.h:55
FinleyElements_ptr reducedElements
Definition: FinleyElements.h:179
Definition: ReferenceElements.h:91
Definition: ReferenceElements.h:61
virtual ZoneType getType() const
Returns the type of the elements.
Definition: FinleyElements.h:132
FinleyNodes_ptr originalMesh
Definition: FinleyElements.h:181
Definition: ReferenceElements.h:82
IntVec nodes
Definition: FinleyElements.h:187
static const size_t rec8indices[6 *3]
Definition: FinleyElements.cpp:68
Definition: ElementData.h:57
Definition: ReferenceElements.h:97
int reducedElementSize
Definition: FinleyElements.h:57
int quadDim
Definition: FinleyElements.h:60
Definition: ReferenceElements.h:73
Definition: ReferenceElements.h:54
Definition: ReferenceElements.h:43
Definition: ReferenceElements.h:81
virtual NodeData_ptr getNodes() const
Returns the node mesh instance used by the elements.
Definition: FinleyElements.h:151
Definition: ReferenceElements.h:90
Definition: ReferenceElements.h:39
ElementTypeId
Definition: ReferenceElements.h:37
virtual void writeConnectivityVTK(std::ostream &os)
Writes connectivity data to a stream in VTK text format.
Definition: FinleyElements.cpp:733
static bool pointInTri(float x, float y, const float *p0, const float *p1, const float *p2)
Definition: FinleyElements.cpp:1173
Definition: ReferenceElements.h:109
Definition: ReferenceElements.h:51
Definition: ElementType.h:54
std::string name
Definition: FinleyElements.h:182
boost::shared_ptr< NodeData > NodeData_ptr
Definition: weipa.h:68
Definition: ReferenceElements.h:74
std::vector< std::string > StringVec
Definition: weipa.h:60
bool inside2D(float x, float y, float cx, float cy, float r)
Definition: FinleyElements.cpp:1097
Definition: ElementData.h:58
Definition: finley/src/ElementFile.h:74
bool inside1D(float x, float c, float r)
Definition: FinleyElements.cpp:1091
IntVec owner
Definition: FinleyElements.h:189
index_t * Color
Definition: dudley/src/ElementFile.h:150
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition: ShapeFunctions.h:99
Definition: ElementData.h:56
Definition: ReferenceElementSets.h:39
Stores and manipulates finley mesh nodes.
Definition: FinleyNodes.h:50
IntVec color
Definition: FinleyElements.h:188
boost::shared_ptr< FinleyNodes > FinleyNodes_ptr
Definition: FinleyNodes.h:42
bool readFromNc(NcFile *ncfile)
Reads element data from escript/finley NetCDF file.
Definition: FinleyElements.cpp:382
const_ReferenceElementSet_ptr referenceElementSet
the reference element to be used
Definition: finley/src/ElementFile.h:132
FinleyElements()
Definition: FinleyElements.h:165
QuadMaskInfo quadMask
Definition: FinleyElements.h:190
int elementFactor
Definition: FinleyElements.h:56
void reorderArray(IntVec &v, const IntVec &idx, int elementsPerIndex)
Definition: FinleyElements.cpp:548
Definition: ElementType.h:52
std::vector< int > IntVec
Definition: weipa.h:59
Stores and manipulates one type of finley mesh elements (cells, faces or contacts).
Definition: FinleyElements.h:75
A suite of factory methods for creating various finley domains.
Definition: finley/src/Assemble.h:32
Definition: ElementType.h:53
Definition: ReferenceElements.h:93
ElementTypeId
Definition: ElementType.h:37
ElementTypeId etype
element type ID
Definition: dudley/src/ElementFile.h:165
Definition: ReferenceElements.h:78
Definition: ElementData.h:54
Definition: ReferenceElements.h:103
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:142
virtual const IntVec & getIDs() const
Returns a vector of element IDs.
Definition: FinleyElements.h:143
Definition: ReferenceElements.h:46
int numNodes
number of nodes per element
Definition: finley/src/ElementFile.h:150
virtual int getNodesPerElement() const
Returns the number of nodes per element.
Definition: FinleyElements.h:126