escript  Revision_
TestDomain.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2018 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 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 #ifndef __ESCRIPT_TESTDOMAIN_H__
18 #define __ESCRIPT_TESTDOMAIN_H__
19 
20 #include "system_dep.h"
21 #include "NullDomain.h"
22 #include <vector>
23 
24 namespace escript {
25 
41 class ESCRIPT_DLL_API TestDomain : public NullDomain
42 {
43 public:
44  TestDomain(int pointspersample, int numsamples, int dpsize=1);
45 
46  virtual ~TestDomain();
47 
48  virtual int getMPISize() const;
49  virtual int getMPIRank() const;
50  virtual void MPIBarrier() const;
51  virtual bool onMasterProcessor() const;
52 
53  virtual escript::JMPI getMPI() const;
54 
55  virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
56 
57  virtual std::string getDescription() const;
58 
59  virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;
60 
61  virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;
62 
63  virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
64 
65  bool commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const;
66 
67  virtual escript::Data getX() const;
68 
69  virtual void interpolateAcross(escript::Data& target, const escript::Data& source) const;
70 
71  virtual bool probeInterpolationAcross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const;
72 
73  virtual int getDefaultCode() const;
74  virtual int getContinuousFunctionCode() const;
75  virtual int getFunctionCode() const;
76  virtual int getFunctionOnBoundaryCode() const;
77  virtual int getFunctionOnContactZeroCode() const;
78  virtual int getFunctionOnContactOneCode() const;
79  virtual int getSolutionCode() const;
80  virtual int getReducedSolutionCode() const;
81  virtual int getDiracDeltaFunctionsCode() const;
82 
83  virtual std::pair<int,DataTypes::dim_t> getDataShape(int functionSpaceCode) const;
84 
85  virtual int getTagFromSampleNo(int functionSpaceType, DataTypes::index_t sampleNo) const;
86 
87  virtual const DataTypes::dim_t* borrowSampleReferenceIDs(int functionSpaceType) const;
88 
89  virtual int getDim() const;
90 
91  virtual bool operator==(const AbstractDomain& other) const;
92 
93  virtual bool operator!=(const AbstractDomain& other) const;
94 
95  virtual bool canTag(int functionSpaceCode) const;
96 
97  virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
98 
99  virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
100 
101  virtual escript::Data randomFill(const DataTypes::ShapeType& shape,
102  const FunctionSpace& what, long seed,
103  const boost::python::tuple& filter) const;
104 
105  void addUsedTag(int t);
106  void clearUsedTags();
107  void assignTags(std::vector<int> t);
108  void resetTagAssignments();
109 
110 private:
111  DataTypes::dim_t m_totalsamples; // samples in all worlds
112  DataTypes::dim_t m_samples; // number of samples
113  DataTypes::dim_t m_originsample;
114  DataTypes::dim_t m_endsample;
115 
116 
117  int m_dpps; // data points per sample
118  int m_dpsize; // how big are the datapoints?
119  DataTypes::dim_t* m_samplerefids; // sample reference ids
120 
121  std::vector<int> mytags;
122  std::vector<int> tag_assignment; // which tag is assigned to each sample
123  // to make testing easier, the tags in use list is
124  // controlled separately
125  escript::JMPI myworld;
126 };
127 
129 FunctionSpace getTestDomainFunctionSpace(int dpps, DataTypes::dim_t samples, int dpsize);
130 
131 } // end of namespace
132 
133 #endif // __ESCRIPT_TESTDOMAIN_H__
134 
escript::Data::getReady
const DataReady * getReady() const
Definition: Data.h:1772
ESCRIPT_DLL_API
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:28
escript::MPIBarrierWorld
void MPIBarrierWorld()
performs a barrier synchronization across all processors.
Definition: Utils.cpp:376
escript::TestDomain::~TestDomain
virtual ~TestDomain()
Definition: TestDomain.cpp:77
escript::TestDomain::getSolutionCode
virtual int getSolutionCode() const
Definition: TestDomain.cpp:200
escript::TestDomain::getContinuousFunctionCode
virtual int getContinuousFunctionCode() const
Definition: TestDomain.cpp:175
escript::DomainException
Definition: DomainException.h:37
escript::TestDomain::interpolateAcross
virtual void interpolateAcross(escript::Data &target, const escript::Data &source) const
Interpolates data given on source onto target where source and target are given on different domains.
Definition: TestDomain.cpp:149
escript::TestDomain::isValidFunctionSpaceType
virtual bool isValidFunctionSpaceType(int functionSpaceType) const
Returns true if the given integer is a valid function space type for this domain.
Definition: TestDomain.cpp:116
escript::TestDomain::getTagFromSampleNo
virtual int getTagFromSampleNo(int functionSpaceType, DataTypes::index_t sampleNo) const
Return the tag key for the given sample number.
Definition: TestDomain.cpp:220
escript::DataTypes::DataVectorAlt< real_t >
escript::randomFillArray
void randomFillArray(long seed, double *array, size_t n)
Definition: Random.cpp:73
escript::TestDomain::getFunctionOnContactZeroCode
virtual int getFunctionOnContactZeroCode() const
Definition: TestDomain.cpp:190
escript::TestDomain
(Testing use only) Provides a domain to wrap a collection of values.
Definition: TestDomain.h:52
escript::TestDomain::assignTags
void assignTags(std::vector< int > t)
Definition: TestDomain.cpp:325
escript::Domain_ptr
boost::shared_ptr< AbstractDomain > Domain_ptr
Definition: AbstractDomain.h:47
escript::TestDomain::borrowSampleReferenceIDs
virtual const DataTypes::dim_t * borrowSampleReferenceIDs(int functionSpaceType) const
Returns a borrowed pointer to the sample reference number id list.
Definition: TestDomain.cpp:231
escript::getMPISizeWorld
int getMPISizeWorld()
returns the total number of available MPI processes for MPI_COMM_WORLD
Definition: Utils.cpp:93
escript::TestDomain::getMPIRank
virtual int getMPIRank() const
return the number MPI rank of this processor
Definition: TestDomain.cpp:87
escript::TestDomain::operator!=
virtual bool operator!=(const AbstractDomain &other) const
Return true if given domains are not equal.
Definition: TestDomain.cpp:247
escript::FunctionSpace
Definition: FunctionSpace.h:45
escript::makeInfo
JMPI makeInfo(MPI_Comm comm, bool owncom)
Definition: EsysMPI.cpp:39
escript::Data::getFunctionSpace
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:461
speckley::probeInterpolationAcross
bool probeInterpolationAcross(int fsType_source, const escript::AbstractDomain &domain, int fsType_target, int dim)
Definition: CrossDomainCoupler.cpp:30
escript::FunctionSpace::getDomain
const_Domain_ptr getDomain() const
Returns the function space domain.
Definition: FunctionSpace.cpp:101
escript::TestDomain::getMPI
virtual escript::JMPI getMPI() const
returns a shared pointer to the MPI information wrapper for this domain
Definition: TestDomain.cpp:109
system_dep.h
escript::TestDomain::TestDomain
TestDomain(int pointspersample, int numsamples, int dpsize=1)
Definition: TestDomain.cpp:48
MPI_COMM_WORLD
#define MPI_COMM_WORLD
Definition: EsysMPI.h:46
Utils.h
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:62
escript::DataException
Definition: DataException.h:37
escript::TestDomain::getFunctionOnBoundaryCode
virtual int getFunctionOnBoundaryCode() const
Definition: TestDomain.cpp:185
escript::TestDomain::randomFill
virtual escript::Data randomFill(const DataTypes::ShapeType &shape, const FunctionSpace &what, long seed, const boost::python::tuple &filter) const
Fills the data object with filtered random values.
Definition: TestDomain.cpp:290
escript::DataTypes::dim_t
index_t dim_t
Definition: DataTypes.h:87
escript::DataTypes::ShapeType
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:65
escript::JMPI
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:70
DomainException.h
escript::TestDomain::borrowListOfTagsInUse
virtual const int * borrowListOfTagsInUse(int functionSpaceCode) const
Definition: TestDomain.cpp:320
escript::TestDomain::getX
virtual escript::Data getX() const
Returns locations in the domain. The function space is chosen appropriately.
Definition: TestDomain.cpp:262
escript::TestDomain::resetTagAssignments
void resetTagAssignments()
Definition: TestDomain.cpp:339
escript::TestDomain::getDataShape
virtual std::pair< int, DataTypes::dim_t > getDataShape(int functionSpaceCode) const
Returns the number of data points per sample, and the number of samples as a pair.
Definition: TestDomain.cpp:215
escript::TestDomain::getDefaultCode
virtual int getDefaultCode() const
Definition: TestDomain.cpp:170
escript::TestDomain::addUsedTag
void addUsedTag(int t)
Definition: TestDomain.cpp:302
escript::TestDomain::getMPISize
virtual int getMPISize() const
return the number of processors used for this domain
Definition: TestDomain.cpp:82
escript::TestDomain::operator==
virtual bool operator==(const AbstractDomain &other) const
Return true if given domains are equal.
Definition: TestDomain.cpp:241
escript::TestDomain::getReducedSolutionCode
virtual int getReducedSolutionCode() const
Definition: TestDomain.cpp:205
escript::TestDomain::functionSpaceTypeAsString
virtual std::string functionSpaceTypeAsString(int functionSpaceType) const
Return a description for the given function space type code.
Definition: TestDomain.cpp:126
escript::TestDomain::canTag
virtual bool canTag(int functionSpaceCode) const
Checks if this domain allows tags for the specified functionSpaceCode.
Definition: TestDomain.cpp:252
escript::TestDomain::commonFunctionSpace
bool commonFunctionSpace(const std::vector< int > &fs, int &resultcode) const
given a vector of FunctionSpace type codes, pass back a code which then can all be interpolated to.
Definition: TestDomain.cpp:160
escript::TestDomain::MPIBarrier
virtual void MPIBarrier() const
If compiled for MPI then execute an MPI_Barrier, else do nothing.
Definition: TestDomain.cpp:92
escript::TestDomain::interpolateOnDomain
virtual void interpolateOnDomain(escript::Data &target, const escript::Data &source) const
Interpolates data given on source onto target where source and target have to be given on the same do...
Definition: TestDomain.cpp:131
escript::TestDomain::clearUsedTags
void clearUsedTags()
Definition: TestDomain.cpp:314
escript::getTestDomainFunctionSpace
FunctionSpace getTestDomainFunctionSpace(int dpps, DataTypes::dim_t samples, int dpsize)
Definition: TestDomain.cpp:349
escript::TestDomain::getNumberOfTagsInUse
virtual int getNumberOfTagsInUse(int functionSpaceCode) const
returns the number of tags in use and a pointer to an array with the number of tags in use
Definition: TestDomain.cpp:257
escript::TestDomain::getDiracDeltaFunctionsCode
virtual int getDiracDeltaFunctionsCode() const
Definition: TestDomain.cpp:210
escript::DataTypes::index_t
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:82
Random.h
escript
Definition: AbstractContinuousDomain.cpp:22
escript::DataTypes::DataVectorAlt::size
size_type size() const
Return the number of elements in this DataVectorAlt.
Definition: DataVectorAlt.h:237
escript::DataReady::getVectorRW
virtual DataTypes::RealVectorType & getVectorRW()=0
Provide access to underlying storage. Internal use only!
escript::TestDomain::probeInterpolationOnDomain
virtual bool probeInterpolationOnDomain(int functionSpaceType_source, int functionSpaceType_target) const
True if interpolation is possible from source to target.
Definition: TestDomain.cpp:140
NullDomain.h
escript::TestDomain::getFunctionOnContactOneCode
virtual int getFunctionOnContactOneCode() const
Definition: TestDomain.cpp:195
escript::TestDomain::probeInterpolationAcross
virtual bool probeInterpolationAcross(int functionSpaceType_source, const AbstractDomain &targetDomain, int functionSpaceType_target) const
Definition: TestDomain.cpp:154
escript::TestDomain::getDescription
virtual std::string getDescription() const
Return a description for this domain.
Definition: TestDomain.cpp:121
Data.h
escript::AbstractDomain
Base class for all escript domains.
Definition: AbstractDomain.h:56
escript::getMPIRankWorld
int getMPIRankWorld()
returns the MPI processor number within MPI_COMM_WORLD
Definition: Utils.cpp:102
escript::TestDomain::onMasterProcessor
virtual bool onMasterProcessor() const
Return true if on MPI master, else false.
Definition: TestDomain.cpp:97
escript::TestDomain::getFunctionCode
virtual int getFunctionCode() const
Definition: TestDomain.cpp:180
escript::TestDomain::getDim
virtual int getDim() const
Returns the spatial dimension of the domain.
Definition: TestDomain.cpp:236
TestDomain.h
escript::DataTypes::scalarShape
static const ShapeType scalarShape
Use this instead of creating empty shape objects for scalars.
Definition: DataTypes.h:69