Go to the documentation of this file.
17 #ifndef __WEIPA_FINLEYELEMENTS_H__
18 #define __WEIPA_FINLEYELEMENTS_H__
20 #include <weipa/ElementData.h>
21 #include <weipa/FinleyNodes.h>
24 #include <dudley/Dudley.h>
25 #include <dudley/ElementType.h>
28 #include <finley/ReferenceElements.h>
35 #define NCFTYPE netCDF::NcFile&
38 #define NCFTYPE NcFile*
53 struct FinleyElementInfo
112 bool writeToSilo(DBfile* dbfile,
const std::string& siloPath,
157 virtual const QuadMaskInfo&
getQuadMask(
int functionSpace)
const;
197 #endif // __WEIPA_FINLEYELEMENTS_H__
QuadMaskInfo reducedQuadMask
Definition: FinleyElements.h:189
int * Tag
Tag[i] is the tag of element i.
Definition: dudley/src/ElementFile.h:131
Definition: ReferenceElements.h:84
Definition: ReferenceElements.h:39
bool inside3D(float x, float y, float z, float cx, float cy, float cz, float r)
Definition: FinleyElements.cpp:1102
Definition: ElementType.h:48
Definition: ReferenceElements.h:47
#define FINLEY_REDUCED_FACE_ELEMENTS
Definition: Finley.h:69
Definition: ReferenceElements.h:97
virtual const IntVec & getNodeList() const
Returns a vector of the node IDs used by the elements.
Definition: FinleyElements.h:139
QuadMaskInfo buildQuadMask(const CoordArray &quadNodes, int numQNodes)
Definition: FinleyElements.cpp:1196
Definition: ReferenceElements.h:105
void buildMeshes()
Definition: FinleyElements.cpp:709
virtual const IntVec & getVarDataByName(const std::string varName) const
Returns an array of data values for the name provided.
Definition: FinleyElements.cpp:514
ZoneType elementType
Definition: FinleyElements.h:54
#define FINLEY_REDUCED_ELEMENTS
Definition: Finley.h:68
#define FINLEY_REDUCED_CONTACT_ELEMENTS_1
Definition: Finley.h:70
IntVec tag
Definition: FinleyElements.h:187
Holds information that is used to convert from finley element types to elements supported by Silo and...
Definition: FinleyElements.h:52
int numGhostElements
Definition: FinleyElements.h:183
boost::shared_ptr< const ReferenceElementSet > const_ReferenceElementSet_ptr
Definition: ReferenceElementSets.h:90
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:769
Definition: ElementType.h:54
Definition: ReferenceElements.h:101
Definition: ReferenceElements.h:78
Definition: ElementData.h:52
std::vector< IntVec > mask
Definition: ElementData.h:51
virtual ~FinleyElements()
Destructor.
Definition: FinleyElements.h:85
bool sameSide(float d1, float d2)
Definition: FinleyElements.cpp:1110
IntVec prepareGhostIndices(int ownIndex)
Definition: FinleyElements.cpp:644
virtual int getGhostCount() const
Returns the number of "ghost" elements.
Definition: FinleyElements.h:128
int elementSize
Definition: FinleyElements.h:56
static const size_t hex20indices[36 *3]
Definition: FinleyElements.cpp:91
Definition: ReferenceElements.h:51
int * Tag
Tag[i] is the tag of element i.
Definition: finley/src/ElementFile.h:139
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:143
virtual int getNumElements() const
Returns the number of elements.
Definition: FinleyElements.h:122
Definition: ReferenceElements.h:111
bool initFromDudley(const dudley::ElementFile *dudleyFile)
Initialises with data from a Dudley ElementFile instance.
Definition: FinleyElements.cpp:167
virtual const QuadMaskInfo & getQuadMask(int functionSpace) const
Returns a QuadMaskInfo structure for given functionspace code.
Definition: FinleyElements.cpp:533
int elementFactor
Definition: FinleyElements.h:190
Definition: ElementData.h:56
void reorderGhostZones(int ownIndex)
Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of...
Definition: FinleyElements.cpp:668
This struct holds a mask (0's and 1's) that indicates which quad nodes contribute to a sub-element wh...
Definition: ElementData.h:50
Definition: ReferenceElements.h:61
Definition: ReferenceElements.h:69
Definition: ReferenceElements.h:58
Definition: ElementType.h:53
int numElements
Definition: FinleyElements.h:182
IntVec ID
Definition: FinleyElements.h:187
const size_t * multiCellIndices
Definition: FinleyElements.h:57
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:134
static const size_t tri6indices[4 *3]
Definition: FinleyElements.cpp:61
Definition: ReferenceElements.h:70
Definition: ReferenceElements.h:93
Definition: ElementData.h:50
Definition: ReferenceElements.h:65
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: FinleyElements.cpp:501
index_t * Nodes
Definition: finley/src/ElementFile.h:154
Definition: ReferenceElements.h:85
int nodesPerElement
Definition: FinleyElements.h:184
Definition: DataVar.cpp:49
Definition: ReferenceElements.h:41
Definition: ReferenceElements.h:110
Definition: ReferenceElements.h:55
Definition: ReferenceElements.h:57
ZoneType
Definition: ElementData.h:37
Definition: ReferenceElements.h:86
virtual StringVec getMeshNames() const
Returns the names of the meshes associated with the elements.
Definition: FinleyElements.cpp:485
IntVec factor
Definition: ElementData.h:52
Definition: ReferenceElements.h:76
static const size_t tet10indices[8 *4]
Definition: FinleyElements.cpp:81
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:110
static const size_t rec9indices[4 *4]
Definition: FinleyElements.cpp:75
bool useQuadNodes
Definition: FinleyElements.h:58
dim_t numElements
number of elements
Definition: finley/src/ElementFile.h:132
A suite of factory methods for creating 2D and 3D dudley domains.
Definition: dudley/src/Assemble.h:31
static const size_t hex27indices[8 *8]
Definition: FinleyElements.cpp:105
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:1117
int * Owner
Owner[i] contains the rank that owns element i.
Definition: finley/src/ElementFile.h:142
boost::shared_ptr< FinleyElements > FinleyElements_ptr
Definition: FinleyElements.h:62
Definition: ElementType.h:52
static const size_t line3indices[2 *2]
Definition: FinleyElements.cpp:57
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:123
void removeGhostZones(int ownIndex)
Removes "ghost" elements.
Definition: FinleyElements.cpp:688
std::vector< float * > CoordArray
Definition: weipa.h:60
static bool pointInTet(float x, float y, float z, const float *p0, const float *p1, const float *p2, const float *p3)
Definition: FinleyElements.cpp:1136
Definition: dudley/src/ElementFile.h:62
Definition: ReferenceElements.h:109
#define NCFTYPE
Definition: FinleyElements.h:37
Definition: ReferenceElements.h:112
Definition: ReferenceElements.h:46
index_t * Id
Definition: dudley/src/ElementFile.h:128
Definition: ReferenceElements.h:113
Definition: ReferenceElements.h:64
boost::shared_ptr< ElementData > ElementData_ptr
Definition: weipa.h:65
Stores and manipulates one type of domain elements.
Definition: ElementData.h:59
index_t * Color
Definition: finley/src/ElementFile.h:160
bool initFromFinley(const finley::ElementFile *finleyFile)
Initialises with data from a Finley ElementFile instance.
Definition: FinleyElements.cpp:200
virtual ElementData_ptr getReducedElements() const
Returns the reduced elements.
Definition: FinleyElements.h:153
ZoneType type
Definition: FinleyElements.h:185
Definition: ReferenceElements.h:104
Definition: ReferenceElements.h:37
void buildReducedElements(const FinleyElementInfo &f)
Definition: FinleyElements.cpp:571
virtual int getElementFactor() const
If the original element type is not supported they are subdivided into N smaller elements (e....
Definition: FinleyElements.h:161
ZoneType reducedElementType
Definition: FinleyElements.h:54
FinleyNodes_ptr nodeMesh
Definition: FinleyElements.h:179
index_t * Id
Definition: finley/src/ElementFile.h:136
Definition: ReferenceElements.h:54
FinleyElements_ptr reducedElements
Definition: FinleyElements.h:178
Definition: ReferenceElements.h:90
Definition: ReferenceElements.h:60
virtual ZoneType getType() const
Returns the type of the elements.
Definition: FinleyElements.h:131
FinleyNodes_ptr originalMesh
Definition: FinleyElements.h:180
Definition: ReferenceElements.h:81
IntVec nodes
Definition: FinleyElements.h:186
static const size_t rec8indices[6 *3]
Definition: FinleyElements.cpp:67
Definition: ElementData.h:54
Definition: ReferenceElements.h:96
int reducedElementSize
Definition: FinleyElements.h:56
int quadDim
Definition: FinleyElements.h:59
Definition: ReferenceElements.h:72
Definition: ReferenceElements.h:53
Definition: ReferenceElements.h:42
Definition: ReferenceElements.h:80
virtual NodeData_ptr getNodes() const
Returns the node mesh instance used by the elements.
Definition: FinleyElements.h:150
Definition: ReferenceElements.h:89
Definition: ReferenceElements.h:38
ElementTypeId
Definition: ReferenceElements.h:36
virtual void writeConnectivityVTK(std::ostream &os)
Writes connectivity data to a stream in VTK text format.
Definition: FinleyElements.cpp:732
static bool pointInTri(float x, float y, const float *p0, const float *p1, const float *p2)
Definition: FinleyElements.cpp:1172
Definition: ReferenceElements.h:108
Definition: ReferenceElements.h:50
Definition: ElementType.h:51
std::string name
Definition: FinleyElements.h:181
boost::shared_ptr< NodeData > NodeData_ptr
Definition: weipa.h:67
Definition: ReferenceElements.h:73
std::vector< std::string > StringVec
Definition: weipa.h:59
bool inside2D(float x, float y, float cx, float cy, float r)
Definition: FinleyElements.cpp:1096
Definition: ElementData.h:55
Definition: finley/src/ElementFile.h:72
bool inside1D(float x, float c, float r)
Definition: FinleyElements.cpp:1090
IntVec owner
Definition: FinleyElements.h:188
index_t * Color
Definition: dudley/src/ElementFile.h:148
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition: ShapeFunctions.h:98
Definition: ElementData.h:53
Definition: ReferenceElementSets.h:37
Stores and manipulates finley mesh nodes.
Definition: FinleyNodes.h:49
IntVec color
Definition: FinleyElements.h:187
boost::shared_ptr< FinleyNodes > FinleyNodes_ptr
Definition: FinleyNodes.h:41
bool readFromNc(NcFile *ncfile)
Reads element data from escript/finley NetCDF file.
Definition: FinleyElements.cpp:381
const_ReferenceElementSet_ptr referenceElementSet
the reference element to be used
Definition: finley/src/ElementFile.h:130
FinleyElements()
Definition: FinleyElements.h:164
QuadMaskInfo quadMask
Definition: FinleyElements.h:189
int elementFactor
Definition: FinleyElements.h:55
void reorderArray(IntVec &v, const IntVec &idx, int elementsPerIndex)
Definition: FinleyElements.cpp:547
Definition: ElementType.h:49
std::vector< int > IntVec
Definition: weipa.h:58
Stores and manipulates one type of finley mesh elements (cells, faces or contacts).
Definition: FinleyElements.h:74
A suite of factory methods for creating various finley domains.
Definition: finley/src/Assemble.h:31
Definition: ElementType.h:50
Definition: ReferenceElements.h:92
ElementTypeId
Definition: ElementType.h:35
ElementTypeId etype
element type ID
Definition: dudley/src/ElementFile.h:163
Definition: ReferenceElements.h:77
Definition: ElementData.h:51
Definition: ReferenceElements.h:102
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:140
virtual const IntVec & getIDs() const
Returns a vector of element IDs.
Definition: FinleyElements.h:142
Definition: ReferenceElements.h:45
int numNodes
number of nodes per element
Definition: finley/src/ElementFile.h:148
virtual int getNodesPerElement() const
Returns the number of nodes per element.
Definition: FinleyElements.h:125