escript Revision_
RipleyElements.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 by The University of Queensland
5* http://www.uq.edu.au
6*
7* Primary Business: Queensland, Australia
8* Licensed under the Apache License, version 2.0
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12* Development 2012-2013 by School of Earth Sciences
13* Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18#ifndef __WEIPA_RIPLEYELEMENTS_H__
19#define __WEIPA_RIPLEYELEMENTS_H__
20
21#include <weipa/ElementData.h>
22#include <weipa/RipleyNodes.h>
23
24class DBfile;
25
26namespace ripley {
27class RipleyDomain;
28}
29
30
31namespace weipa {
32
33class RipleyElements;
34typedef boost::shared_ptr<RipleyElements> RipleyElements_ptr;
35
46{
47public:
48
50 RipleyElements(const std::string& elementName, RipleyNodes_ptr nodes);
51
54
56 virtual ~RipleyElements() {}
57
59 bool initFromRipley(const ripley::RipleyDomain* ripleyDomain, int fsType);
60
63 void reorderGhostZones(int ownIndex);
64
66 void removeGhostZones(int ownIndex);
67
69 virtual void writeConnectivityVTK(std::ostream& os);
70
76 bool writeToSilo(DBfile* dbfile, const std::string& siloPath,
77 const StringVec& labels, const StringVec& units,
78 bool writeMeshData);
79
81 virtual StringVec getMeshNames() const;
82
84 virtual StringVec getVarNames() const;
85
87 virtual int getNumElements() const { return numElements; }
88
90 virtual int getNodesPerElement() const { return nodesPerElement; }
91
93 virtual int getGhostCount() const { return numGhostElements; }
94
96 virtual ZoneType getType() const { return type; }
97
99 virtual const IntVec& getNodeList() const { return nodes; }
100
102 virtual const IntVec& getIDs() const { return ID; }
103
107 virtual const IntVec& getVarDataByName(const std::string varName) const;
108
110 virtual NodeData_ptr getNodes() const { return nodeMesh; }
111
114
116 virtual const QuadMaskInfo& getQuadMask(int functionSpace) const { return quadMask; }
117
121 virtual int getElementFactor() const { return 1; }
122
123private:
125 void buildMeshes();
126 IntVec prepareGhostIndices(int ownIndex);
127 void reorderArray(IntVec& v, const IntVec& idx, int elementsPerIndex);
128
131 std::string name;
139};
140
141} // namespace weipa
142
143#endif // __WEIPA_RIPLEYELEMENTS_H__
144
RipleyDomain extends the AbstractContinuousDomain interface for the Ripley library and is the base cl...
Definition: ripley/src/RipleyDomain.h:103
Stores and manipulates one type of domain elements.
Definition: ElementData.h:50
Stores and manipulates one type of ripley mesh elements (cells, faces).
Definition: RipleyElements.h:46
virtual const IntVec & getVarDataByName(const std::string varName) const
Returns an array of data values for the name provided.
Definition: RipleyElements.cpp:261
IntVec tag
Definition: RipleyElements.h:137
virtual ElementData_ptr getReducedElements() const
Returns the reduced elements.
Definition: RipleyElements.h:113
IntVec ID
Definition: RipleyElements.h:137
RipleyNodes_ptr nodeMesh
Definition: RipleyElements.h:129
virtual int getNodesPerElement() const
Returns the number of nodes per element.
Definition: RipleyElements.h:90
RipleyElements()
Definition: RipleyElements.h:124
void removeGhostZones(int ownIndex)
Removes "ghost" elements.
Definition: RipleyElements.cpp:328
void reorderGhostZones(int ownIndex)
Moves "ghost" elements (whose owner does not match ownIndex) and the corresponding data to the end of...
Definition: RipleyElements.cpp:315
virtual const IntVec & getNodeList() const
Returns a vector of the node IDs used by the elements.
Definition: RipleyElements.h:99
int numGhostElements
Definition: RipleyElements.h:133
RipleyNodes_ptr originalMesh
Definition: RipleyElements.h:130
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: RipleyElements.cpp:388
IntVec owner
Definition: RipleyElements.h:137
virtual NodeData_ptr getNodes() const
Returns the node mesh instance used by the elements.
Definition: RipleyElements.h:110
virtual int getElementFactor() const
If the original element type is not supported they are subdivided into N smaller elements (e....
Definition: RipleyElements.h:121
int nodesPerElement
Definition: RipleyElements.h:134
QuadMaskInfo quadMask
Definition: RipleyElements.h:138
int numElements
Definition: RipleyElements.h:132
IntVec nodes
Definition: RipleyElements.h:136
virtual int getNumElements() const
Returns the number of elements.
Definition: RipleyElements.h:87
virtual StringVec getMeshNames() const
Returns the names of the meshes associated with the elements.
Definition: RipleyElements.cpp:244
void reorderArray(IntVec &v, const IntVec &idx, int elementsPerIndex)
Definition: RipleyElements.cpp:273
virtual ZoneType getType() const
Returns the type of the elements.
Definition: RipleyElements.h:96
virtual const IntVec & getIDs() const
Returns a vector of element IDs.
Definition: RipleyElements.h:102
virtual int getGhostCount() const
Returns the number of "ghost" elements.
Definition: RipleyElements.h:93
virtual const QuadMaskInfo & getQuadMask(int functionSpace) const
Returns a QuadMaskInfo structure for given functionspace code.
Definition: RipleyElements.h:116
virtual ~RipleyElements()
Destructor.
Definition: RipleyElements.h:56
void buildMeshes()
Definition: RipleyElements.cpp:342
IntVec prepareGhostIndices(int ownIndex)
Definition: RipleyElements.cpp:294
virtual void writeConnectivityVTK(std::ostream &os)
Writes connectivity data to a stream in VTK text format.
Definition: RipleyElements.cpp:359
bool initFromRipley(const ripley::RipleyDomain *ripleyDomain, int fsType)
Initialises with data from a RipleyDomain instance.
Definition: RipleyElements.cpp:75
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: RipleyElements.cpp:252
ZoneType type
Definition: RipleyElements.h:135
std::string name
Definition: RipleyElements.h:131
Definition: ripley/src/AbstractAssembler.h:26
Definition: DataVar.cpp:51
std::vector< std::string > StringVec
Definition: weipa.h:61
boost::shared_ptr< ElementData > ElementData_ptr
Definition: weipa.h:67
boost::shared_ptr< RipleyElements > RipleyElements_ptr
Definition: RipleyElements.h:34
std::vector< int > IntVec
Definition: weipa.h:60
boost::shared_ptr< NodeData > NodeData_ptr
Definition: weipa.h:69
ZoneType
Definition: ElementData.h:27
boost::shared_ptr< RipleyNodes > RipleyNodes_ptr
Definition: RipleyNodes.h:32
This struct holds a mask (0's and 1's) that indicates which quad nodes contribute to a sub-element wh...
Definition: ElementData.h:40