escript  Revision_
TestDomain.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 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 
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
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
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 
Definition: FunctionSpace.h:34
bool probeInterpolationAcross(int fsType_source, const escript::AbstractDomain &domain, int fsType_target, int dim)
Definition: CrossDomainCoupler.cpp:31
DataTypes::dim_t m_originsample
Definition: TestDomain.h:113
NullDomain provides a null value for domain. Needed for the construction of a default FunctionSpace...
Definition: NullDomain.h:39
int m_dpsize
Definition: TestDomain.h:118
Definition: AbstractContinuousDomain.cpp:22
DataTypes::dim_t m_samples
Definition: TestDomain.h:112
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:71
(Testing use only) Provides a domain to wrap a collection of values.
Definition: TestDomain.h:41
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:42
DataTypes::dim_t m_totalsamples
Definition: TestDomain.h:111
DataTypes::dim_t m_endsample
Definition: TestDomain.h:114
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:59
int m_dpps
Definition: TestDomain.h:117
Data represents a collection of datapoints.
Definition: Data.h:63
std::vector< int > mytags
Definition: TestDomain.h:121
DataTypes::dim_t * m_samplerefids
Definition: TestDomain.h:119
escript::JMPI myworld
Definition: TestDomain.h:125
FunctionSpace getTestDomainFunctionSpace(int dpps, DataTypes::dim_t samples, int dpsize)
Definition: TestDomain.cpp:334
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
Base class for all escript domains.
Definition: AbstractDomain.h:45
std::vector< int > tag_assignment
Definition: TestDomain.h:122
index_t dim_t
Definition: DataTypes.h:64