escript  Revision_
RipleyNodes.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_RIPLEYNODES_H__
19 #define __WEIPA_RIPLEYNODES_H__
20 
21 #include <weipa/NodeData.h>
22 
23 class DBfile;
24 
25 namespace ripley {
26 class RipleyDomain;
27 }
28 
29 namespace weipa {
30 
31 class RipleyNodes;
32 typedef boost::shared_ptr<RipleyNodes> RipleyNodes_ptr;
33 
39 class RipleyNodes : public NodeData
40 {
41 public:
43  RipleyNodes(const std::string& meshName);
44 
45  RipleyNodes(RipleyNodes_ptr fullNodes, IntVec& requiredNodes,
46  const std::string& meshName);
47 
49  RipleyNodes(const RipleyNodes& m);
50 
52  virtual ~RipleyNodes();
53 
55  bool initFromRipley(const ripley::RipleyDomain* ripleyDomain);
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 
101 protected:
103  int numDims;
104  int numNodes;
109  std::string name;
110  std::string siloPath;
111 };
112 
113 
114 inline std::string RipleyNodes::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_RIPLEYNODES_H__
126 
ripley
Definition: ripley/src/AbstractAssembler.h:26
weipa::RipleyNodes::getVarNames
virtual StringVec getVarNames() const
Returns a vector with the mesh variable names.
Definition: RipleyNodes.cpp:194
weipa::RipleyNodes::getNodeDistribution
virtual const IntVec & getNodeDistribution() const
Returns the node distribution array.
Definition: RipleyNodes.h:84
weipa::RipleyNodes::siloPath
std::string siloPath
the name of this node mesh
Definition: RipleyNodes.h:110
weipa::RipleyNodes::name
std::string name
node distribution
Definition: RipleyNodes.h:109
weipa::RipleyNodes::coords
CoordArray coords
Definition: RipleyNodes.h:102
ripley::RipleyDomain::getNumNodesPerDim
virtual const dim_t * getNumNodesPerDim() const =0
returns the number of nodes per MPI rank in each dimension
ripley::Nodes
@ Nodes
Definition: Ripley.h:52
weipa::RipleyNodes::getNumDims
virtual int getNumDims() const
Returns the dimensionality of this mesh (2 or 3).
Definition: RipleyNodes.h:93
ripley::RipleyDomain::getNodeDistribution
virtual IndexVector getNodeDistribution() const =0
returns the node distribution vector
weipa
Definition: DataVar.cpp:51
weipa::RipleyNodes::~RipleyNodes
virtual ~RipleyNodes()
Virtual destructor.
Definition: RipleyNodes.cpp:110
weipa::RipleyNodes::getNodeIDs
virtual const IntVec & getNodeIDs() const
Returns the node ID array.
Definition: RipleyNodes.h:81
weipa::RipleyNodes::nodeDist
IntVec nodeDist
node tags
Definition: RipleyNodes.h:108
weipa::RipleyNodes::nodeID
IntVec nodeID
global number of nodes
Definition: RipleyNodes.h:106
weipa::RipleyNodes::getName
virtual std::string getName() const
Returns the name of this node mesh.
Definition: RipleyNodes.h:75
weipa::RipleyNodes
Stores and manipulates ripley mesh nodes.
Definition: RipleyNodes.h:40
paso::util::copy
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:88
weipa::NodeData
Definition: NodeData.h:28
weipa::RipleyNodes::getVarDataByName
const IntVec & getVarDataByName(const std::string &name) const
Returns an array of nodal data by the given name.
Definition: RipleyNodes.cpp:181
ripley::RipleyDomain
RipleyDomain extends the AbstractContinuousDomain interface for the Ripley library and is the base cl...
Definition: ripley/src/RipleyDomain.h:103
ripley::RipleyDomain::getNumDataPointsGlobal
virtual dim_t getNumDataPointsGlobal() const =0
returns the number of data points summed across all MPI processes
escript::DataTypes::dim_t
index_t dim_t
Definition: DataTypes.h:65
weipa::IndexMap
std::map< int, size_t > IndexMap
Definition: weipa.h:63
weipa::CoordArray
std::vector< float * > CoordArray
Definition: weipa.h:62
weipa::RipleyNodes::getNumNodes
virtual int getNumNodes() const
Returns the number of mesh nodes.
Definition: RipleyNodes.h:96
weipa::RipleyNodes::getGlobalNumNodes
virtual int getGlobalNumNodes() const
Returns the total number of mesh nodes for a distributed mesh.
Definition: RipleyNodes.h:99
weipa::RipleyNodes::setSiloPath
void setSiloPath(const std::string &path)
Sets the silo path to be used when saving.
Definition: RipleyNodes.h:64
weipa::RipleyNodes::writeToSilo
bool writeToSilo(DBfile *dbfile)
Writes node data to a Silo file.
Definition: RipleyNodes.cpp:226
weipa::RipleyNodes::RipleyNodes
RipleyNodes(const std::string &meshName)
Constructor with mesh name.
Definition: RipleyNodes.cpp:39
weipa::RipleyNodes::getCoords
virtual const CoordArray & getCoords() const
Returns the coordinates of the mesh nodes.
Definition: RipleyNodes.h:90
weipa::RipleyNodes::initFromRipley
bool initFromRipley(const ripley::RipleyDomain *ripleyDomain)
Initialises with ripley domain.
Definition: RipleyNodes.cpp:120
ripley::RipleyDomain::getDim
virtual int getDim() const
returns the number of spatial dimensions of the domain
Definition: ripley/src/RipleyDomain.h:177
weipa::RipleyNodes::getGlobalNodeIndices
virtual const IntVec & getGlobalNodeIndices() const
Returns the global node index array.
Definition: RipleyNodes.h:87
weipa::RipleyNodes::nodeTag
IntVec nodeTag
node IDs
Definition: RipleyNodes.h:107
ripley::RipleyDomain::borrowSampleReferenceIDs
const dim_t * borrowSampleReferenceIDs(int fsType) const =0
returns the array of reference numbers for a function space type
ripley::IndexVector
std::vector< index_t > IndexVector
Definition: Ripley.h:44
weipa::RipleyNodes::writeCoordinatesVTK
virtual void writeCoordinatesVTK(std::ostream &os, int ownIndex)
Writes coordinates to a stream in VTK text format.
Definition: RipleyNodes.cpp:205
ripley::RipleyDomain::getLocalCoordinate
virtual double getLocalCoordinate(index_t index, int dim) const =0
returns the index'th coordinate value in given dimension for this rank
weipa::RipleyNodes::getFullSiloName
std::string getFullSiloName() const
Returns full Silo mesh name, e.g. "/block0000/Nodes".
Definition: RipleyNodes.h:114
weipa::StringVec
std::vector< std::string > StringVec
Definition: weipa.h:61
weipa::RipleyNodes::numDims
int numDims
x, y[, z] coordinates of nodes
Definition: RipleyNodes.h:103
weipa::RipleyNodes::numNodes
int numNodes
dimensionality (2 or 3)
Definition: RipleyNodes.h:104
weipa::RipleyNodes::globalNumNodes
int globalNumNodes
number of nodes
Definition: RipleyNodes.h:105
ripley::RipleyDomain::getDataShape
virtual std::pair< int, dim_t > getDataShape(int fsType) const
returns the number of data points per sample, and the number of samples as a pair.
Definition: ripley/src/RipleyDomain.cpp:152
weipa::IntVec
std::vector< int > IntVec
Definition: weipa.h:60
weipa::RipleyNodes_ptr
boost::shared_ptr< RipleyNodes > RipleyNodes_ptr
Definition: RipleyNodes.h:31