escript
Revision_
|
00001 00002 /***************************************************************************** 00003 * 00004 * Copyright (c) 2003-2014 by University of Queensland 00005 * http://www.uq.edu.au 00006 * 00007 * Primary Business: Queensland, Australia 00008 * Licensed under the Open Software License version 3.0 00009 * http://www.opensource.org/licenses/osl-3.0.php 00010 * 00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC) 00012 * Development 2012-2013 by School of Earth Sciences 00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp) 00014 * 00015 *****************************************************************************/ 00016 00017 #ifndef __WEIPA_RIPLEYNODES_H__ 00018 #define __WEIPA_RIPLEYNODES_H__ 00019 00020 #include <weipa/NodeData.h> 00021 00022 class DBfile; 00023 00024 namespace ripley { 00025 class RipleyDomain; 00026 } 00027 00028 namespace weipa { 00029 00030 class RipleyNodes; 00031 typedef boost::shared_ptr<RipleyNodes> RipleyNodes_ptr; 00032 00038 class RipleyNodes : public NodeData 00039 { 00040 public: 00042 RipleyNodes(const std::string& meshName); 00043 00044 RipleyNodes(RipleyNodes_ptr fullNodes, IntVec& requiredNodes, 00045 const std::string& meshName); 00046 00048 RipleyNodes(const RipleyNodes& m); 00049 00051 virtual ~RipleyNodes(); 00052 00054 bool initFromRipley(const ripley::RipleyDomain* ripleyDomain); 00055 00057 bool writeToSilo(DBfile* dbfile); 00058 00060 virtual void writeCoordinatesVTK(std::ostream& os, int ownIndex); 00061 00063 void setSiloPath(const std::string& path) { siloPath = path; } 00064 00068 const IntVec& getVarDataByName(const std::string& name) const; 00069 00071 virtual StringVec getVarNames() const; 00072 00074 virtual std::string getName() const { return name; } 00075 00077 std::string getFullSiloName() const; 00078 00080 virtual const IntVec& getNodeIDs() const { return nodeID; } 00081 00083 virtual const IntVec& getNodeDistribution() const { return nodeDist; } 00084 00086 virtual const IntVec& getGlobalNodeIndices() const { return nodeID; } 00087 00089 virtual const CoordArray& getCoords() const { return coords; } 00090 00092 virtual int getNumDims() const { return numDims; } 00093 00095 virtual int getNumNodes() const { return numNodes; } 00096 00098 virtual int getGlobalNumNodes() const { return globalNumNodes; } 00099 00100 protected: 00101 CoordArray coords; 00102 int numDims; 00103 int numNodes; 00104 int globalNumNodes; 00105 IntVec nodeID; 00106 IntVec nodeTag; 00107 IntVec nodeDist; 00108 std::string name; 00109 std::string siloPath; 00110 }; 00111 00112 00113 inline std::string RipleyNodes::getFullSiloName() const 00114 { 00115 std::string result(siloPath); 00116 if (result.length() == 0 || *result.rbegin() != '/') 00117 result += '/'; 00118 result += name; 00119 return result; 00120 } 00121 00122 } // namespace weipa 00123 00124 #endif // __WEIPA_RIPLEYNODES_H__ 00125