16 #ifndef __RIPLEY_DOMAIN_H__
17 #define __RIPLEY_DOMAIN_H__
19 #include <ripley/Ripley.h>
20 #include <ripley/RipleyException.h>
21 #include <escript/AbstractContinuousDomain.h>
22 #include <escript/Data.h>
23 #include <escript/FunctionSpace.h>
56 virtual int getMPISize()
const {
return m_mpiInfo->size; }
62 virtual int getMPIRank()
const {
return m_mpiInfo->rank; }
70 MPI_Barrier(m_mpiInfo->comm);
91 return m_mpiInfo->comm;
102 virtual bool isValidFunctionSpaceType(
int fsType)
const;
108 virtual std::string functionSpaceTypeAsString(
int fsType)
const;
114 virtual int getDim()
const {
return m_numDim; }
125 return !(operator==(other));
134 virtual std::pair<int,int> getDataShape(
int fsType)
const;
142 int getTagFromSampleNo(
int fsType,
int sampleNo)
const;
150 virtual void setTagMap(
const std::string& name,
int tag) {
151 m_tagMap[name] = tag;
159 virtual int getTag(
const std::string& name)
const {
160 if (m_tagMap.find(name) != m_tagMap.end()) {
161 return m_tagMap.find(name)->second;
173 return (m_tagMap.find(name)!=m_tagMap.end());
180 virtual std::string showTagNames()
const;
201 virtual bool probeInterpolationOnDomain(
int fsType_source,
int fsType_target)
const;
210 virtual signed char preferredInterpolationOnDomain(
int fsType_source,
int fsType_target)
const;
219 commonFunctionSpace(
const std::vector<int>& fs,
int& resultcode)
const;
271 virtual void setTags(
const int fsType,
const int newTag,
const escript::Data& mask)
const;
278 virtual bool isCellOriented(
int fsType)
const;
292 virtual int getNumberOfTagsInUse(
int fsType)
const;
298 virtual const int* borrowListOfTagsInUse(
int fsType)
const;
304 virtual bool canTag(
int fsType)
const;
415 virtual int getSystemMatrixTypeId(
const int solver,
const int preconditioner,
const int package,
const bool symmetry)
const;
426 virtual int getTransportTypeId(
const int solver,
const int preconditioner,
const int package,
const bool symmetry)
const;
433 virtual void setToIntegrals(std::vector<double>& integrals,
const escript::Data& arg)
const;
475 const int column_blocksize,
484 const int type)
const;
491 virtual void Print_Mesh_Info(
const bool full=
false)
const;
507 virtual std::string getDescription()
const = 0;
514 void dump(
const std::string& filename)
const = 0;
521 const int* borrowSampleReferenceIDs(
int fsType)
const = 0;
541 const std::vector<int>& first,
542 const std::vector<int>& numValues,
543 const std::vector<int>& multiplier)
const = 0;
548 std::string varname,
const std::vector<int>& first,
549 const std::vector<int>& numValues,
550 const std::vector<int>& multiplier)
const = 0;
556 virtual bool ownSample(
int fsType,
index_t id)
const = 0;
562 virtual int getNumDataPointsGlobal()
const = 0;
574 virtual IndexVector getNumElementsPerDim()
const = 0;
581 virtual IndexVector getNumFacesPerBoundary()
const = 0;
587 virtual IndexVector getNodeDistribution()
const = 0;
593 virtual IndexVector getNumSubdivisionsPerDim()
const = 0;
600 virtual std::pair<double,double> getFirstCoordAndSpacing(
dim_t dim)
const = 0;
621 void updateTagsInUse(
int fsType)
const;
633 void createCouplePatterns(
const std::vector<IndexVector>& colIndices,
639 const std::vector<double>& array)
const;
644 virtual dim_t getNumNodes()
const = 0;
647 virtual dim_t getNumElements()
const = 0;
650 virtual dim_t getNumDOF()
const = 0;
653 virtual dim_t getNumFaceElements()
const = 0;
660 virtual void assembleCoordinates(
escript::Data& arg)
const = 0;
666 virtual void assembleIntegrate(std::vector<double>& integrals,
escript::Data& arg)
const = 0;
722 bool reducedColOrder)
const = 0;
730 bool reduced)
const = 0;
753 #endif // __RIPLEY_DOMAIN_H__