escript Revision_
TestDomain.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 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-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18#ifndef __ESCRIPT_TESTDOMAIN_H__
19#define __ESCRIPT_TESTDOMAIN_H__
20
21#include "system_dep.h"
22#include "NullDomain.h"
23#include <vector>
24
25namespace escript {
26
43{
44public:
45 TestDomain(int pointspersample, int numsamples, int dpsize=1);
46
47 virtual ~TestDomain();
48
49 virtual int getMPISize() const;
50 virtual int getMPIRank() const;
51 virtual void MPIBarrier() const;
52 virtual bool onMasterProcessor() const;
53
54 virtual escript::JMPI getMPI() const;
55
56 virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
57
58 virtual std::string getDescription() const;
59
60 virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;
61
62 virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;
63
64 virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
65
66 bool commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const;
67
68 virtual escript::Data getX() const;
69
70 virtual void interpolateAcross(escript::Data& target, const escript::Data& source) const;
71
72 virtual bool probeInterpolationAcross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const;
73
74 virtual int getDefaultCode() const;
75 virtual int getContinuousFunctionCode() const;
76 virtual int getFunctionCode() const;
77 virtual int getFunctionOnBoundaryCode() const;
78 virtual int getFunctionOnContactZeroCode() const;
79 virtual int getFunctionOnContactOneCode() const;
80 virtual int getSolutionCode() const;
81 virtual int getReducedSolutionCode() const;
82 virtual int getDiracDeltaFunctionsCode() const;
83
84 virtual std::pair<int,DataTypes::dim_t> getDataShape(int functionSpaceCode) const;
85
86 virtual int getTagFromSampleNo(int functionSpaceType, DataTypes::index_t sampleNo) const;
87
88 virtual const DataTypes::dim_t* borrowSampleReferenceIDs(int functionSpaceType) const;
89
90 virtual int getDim() const;
91
92 virtual bool operator==(const AbstractDomain& other) const;
93
94 virtual bool operator!=(const AbstractDomain& other) const;
95
96 virtual bool canTag(int functionSpaceCode) const;
97
98 virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
99
100 virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
101
102 virtual escript::Data randomFill(const DataTypes::ShapeType& shape,
103 const FunctionSpace& what, long seed,
104 const boost::python::tuple& filter) const;
105
106 void addUsedTag(int t);
107 void clearUsedTags();
108 void assignTags(std::vector<int> t);
109 void resetTagAssignments();
110
111private:
112 DataTypes::dim_t m_totalsamples; // samples in all worlds
113 DataTypes::dim_t m_samples; // number of samples
116
117
118 int m_dpps; // data points per sample
119 int m_dpsize; // how big are the datapoints?
120 DataTypes::dim_t* m_samplerefids; // sample reference ids
121
122 std::vector<int> mytags;
123 std::vector<int> tag_assignment; // which tag is assigned to each sample
124 // to make testing easier, the tags in use list is
125 // controlled separately
127};
128
130FunctionSpace getTestDomainFunctionSpace(int dpps, DataTypes::dim_t samples, int dpsize);
131
132} // end of namespace
133
134#endif // __ESCRIPT_TESTDOMAIN_H__
135
Base class for all escript domains.
Definition AbstractDomain.h:51
Data represents a collection of datapoints.
Definition Data.h:64
Definition FunctionSpace.h:36
NullDomain provides a null value for domain. Needed for the construction of a default FunctionSpace.
Definition NullDomain.h:41
(Testing use only) Provides a domain to wrap a collection of values.
Definition TestDomain.h:43
std::vector< int > tag_assignment
Definition TestDomain.h:123
int m_dpps
Definition TestDomain.h:118
int m_dpsize
Definition TestDomain.h:119
DataTypes::dim_t * m_samplerefids
Definition TestDomain.h:120
escript::JMPI myworld
Definition TestDomain.h:126
DataTypes::dim_t m_endsample
Definition TestDomain.h:115
DataTypes::dim_t m_samples
Definition TestDomain.h:113
DataTypes::dim_t m_totalsamples
Definition TestDomain.h:112
std::vector< int > mytags
Definition TestDomain.h:122
DataTypes::dim_t m_originsample
Definition TestDomain.h:114
#define ESCRIPT_DLL_API
Definition escriptcore/src/system_dep.h:30
std::vector< int > ShapeType
The shape of a single datapoint.
Definition DataTypes.h:44
index_t dim_t
Definition DataTypes.h:66
int index_t
type for array/matrix indices used both globally and on each rank
Definition DataTypes.h:61
Definition AbstractContinuousDomain.cpp:23
FunctionSpace getTestDomainFunctionSpace(int dpps, DataTypes::dim_t samples, int dpsize)
Definition TestDomain.cpp:338
boost::shared_ptr< JMPI_ > JMPI
Definition EsysMPI.h:76