escript Revision_
SpeckleyNodes.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_SPECKLEYNODES_H__
19#define __WEIPA_SPECKLEYNODES_H__
20
21#include <weipa/NodeData.h>
22
23class DBfile;
24
25namespace speckley {
26class SpeckleyDomain;
27}
28
29namespace weipa {
30
31class SpeckleyNodes;
32typedef boost::shared_ptr<SpeckleyNodes> SpeckleyNodes_ptr;
33
39class SpeckleyNodes : public NodeData
40{
41public:
43 SpeckleyNodes(const std::string& meshName);
44
45 SpeckleyNodes(SpeckleyNodes_ptr fullNodes, IntVec& requiredNodes,
46 const std::string& meshName);
47
50
52 virtual ~SpeckleyNodes();
53
55 bool initFromSpeckley(const speckley::SpeckleyDomain* speckleyDomain);
56
58 bool writeToSilo(DBfile* dbfile);
59
61 virtual void writeCoordinatesVTK(std::ostream& os, int ownIndex);
62
64 void setSiloPath(const std::string& path) { siloPath = path; }
65
69 const IntVec& getVarDataByName(const std::string& name) const;
70
72 virtual StringVec getVarNames() const;
73
75 virtual std::string getName() const { return name; }
76
78 std::string getFullSiloName() const;
79
81 virtual const IntVec& getNodeIDs() const { return nodeID; }
82
84 virtual const IntVec& getNodeDistribution() const { return nodeDist; }
85
87 virtual const IntVec& getGlobalNodeIndices() const { return nodeID; }
88
90 virtual const CoordArray& getCoords() const { return coords; }
91
93 virtual int getNumDims() const { return numDims; }
94
96 virtual int getNumNodes() const { return numNodes; }
97
99 virtual int getGlobalNumNodes() const { return globalNumNodes; }
100
101protected:
109 std::string name;
110 std::string siloPath;
111};
112
113
114inline std::string SpeckleyNodes::getFullSiloName() const
115{
116 std::string result(siloPath);
117 if (result.length() == 0 || *result.rbegin() != '/')
118 result += '/';
119 result += name;
120 return result;
121}
122
123} // namespace weipa
124
125#endif // __WEIPA_SPECKLEYNODES_H__
126
SpeckleyDomain extends the AbstractContinuousDomain interface for the Speckley library and is the bas...
Definition: speckley/src/SpeckleyDomain.h:86
Definition: NodeData.h:28
Stores and manipulates speckley mesh nodes.
Definition: SpeckleyNodes.h:40
virtual const IntVec & getNodeIDs() const
Returns the node ID array.
Definition: SpeckleyNodes.h:81
std::string name
node distribution
Definition: SpeckleyNodes.h:109
virtual int getNumDims() const
Returns the dimensionality of this mesh (2 or 3).
Definition: SpeckleyNodes.h:93
virtual ~SpeckleyNodes()
Virtual destructor.
Definition: SpeckleyNodes.cpp:111
SpeckleyNodes(const std::string &meshName)
Constructor with mesh name.
Definition: SpeckleyNodes.cpp:40
IntVec nodeDist
node tags
Definition: SpeckleyNodes.h:108
virtual int getGlobalNumNodes() const
Returns the total number of mesh nodes for a distributed mesh.
Definition: SpeckleyNodes.h:99
bool initFromSpeckley(const speckley::SpeckleyDomain *speckleyDomain)
Initialises with speckley domain.
Definition: SpeckleyNodes.cpp:121
int globalNumNodes
number of nodes
Definition: SpeckleyNodes.h:105
CoordArray coords
Definition: SpeckleyNodes.h:102
const IntVec & getVarDataByName(const std::string &name) const
Returns an array of nodal data by the given name.
Definition: SpeckleyNodes.cpp:182
std::string getFullSiloName() const
Returns full Silo mesh name, e.g. "/block0000/Nodes".
Definition: SpeckleyNodes.h:114
int numDims
x, y[, z] coordinates of nodes
Definition: SpeckleyNodes.h:103
IntVec nodeTag
node IDs
Definition: SpeckleyNodes.h:107
virtual const IntVec & getNodeDistribution() const
Returns the node distribution array.
Definition: SpeckleyNodes.h:84
virtual void writeCoordinatesVTK(std::ostream &os, int ownIndex)
Writes coordinates to a stream in VTK text format.
Definition: SpeckleyNodes.cpp:206
std::string siloPath
the name of this node mesh
Definition: SpeckleyNodes.h:110
virtual int getNumNodes() const
Returns the number of mesh nodes.
Definition: SpeckleyNodes.h:96
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: SpeckleyNodes.cpp:195
void setSiloPath(const std::string &path)
Sets the silo path to be used when saving.
Definition: SpeckleyNodes.h:64
int numNodes
dimensionality (2 or 3)
Definition: SpeckleyNodes.h:104
virtual const IntVec & getGlobalNodeIndices() const
Returns the global node index array.
Definition: SpeckleyNodes.h:87
virtual std::string getName() const
Returns the name of this node mesh.
Definition: SpeckleyNodes.h:75
bool writeToSilo(DBfile *dbfile)
Writes node data to a Silo file.
Definition: SpeckleyNodes.cpp:227
virtual const CoordArray & getCoords() const
Returns the coordinates of the mesh nodes.
Definition: SpeckleyNodes.h:90
IntVec nodeID
global number of nodes
Definition: SpeckleyNodes.h:106
Definition: AbstractAssembler.cpp:19
Definition: DataVar.cpp:51
boost::shared_ptr< SpeckleyNodes > SpeckleyNodes_ptr
Definition: SpeckleyNodes.h:32
std::vector< std::string > StringVec
Definition: weipa.h:61
std::vector< int > IntVec
Definition: weipa.h:60
std::vector< float * > CoordArray
Definition: weipa.h:62