escript  Revision_
RipleyNodes.h
Go to the documentation of this file.
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