ESScript  Revision_4488
TestDomain.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2013 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development since 2012 by School of Earth Sciences
13 *
14 *****************************************************************************/
15 
16 
17 #if !defined escript_TestDomain_20090618_H
18 #define escript_TestDomain_20090618_H
19 #include "system_dep.h"
20 
21 #include "AbstractDomain.h"
22 #include "FunctionSpace.h"
23 
24 #include <string>
25 
26 namespace escript {
27 
44 class TestDomain : public AbstractDomain {
45 
46  public:
47 
57  TestDomain(int pointspersample, int numsamples, int dpsize=1);
58 
60  ~TestDomain();
61 
68  virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
69 
75  virtual std::string getDescription() const;
76 
82  virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;
83 
90  virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;
92  virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
93 
95  bool
96  commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const;
97 
103  virtual escript::Data getX() const;
104 
105 
112  virtual void interpolateACross(escript::Data& target, const escript::Data& source) const;
114  virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const;
115 
116 
122  virtual int getDefaultCode() const;
123 
124 
130  virtual int getContinuousFunctionCode() const;
131 
137  virtual int getFunctionCode() const;
138 
144  virtual int getFunctionOnBoundaryCode() const;
145 
151  virtual int getFunctionOnContactZeroCode() const;
152 
158  virtual int getFunctionOnContactOneCode() const;
159 
165  virtual int getSolutionCode() const;
166 
172  virtual int getReducedSolutionCode() const;
173 
179  virtual int getDiracDeltaFunctionsCode() const;
180 
188  virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;
189 
197  virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const;
198 
205  virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const;
206 
211  virtual int getDim() const;
212 
218  virtual bool operator==(const AbstractDomain& other) const;
220  virtual bool operator!=(const AbstractDomain& other) const;
221 
226  virtual
227  bool canTag(int functionSpaceCode) const;
228 
235  virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
236 
242  virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
243 
244  protected:
245 
246  private:
247  int m_samples; // number of samples
248  int m_dpps; // data points per sample
249  int m_dpsize; // how big are the datapoints?
250  int* m_samplerefids; // sample reference ids
251 };
252 
255 getTestDomainFunctionSpace(int dpps, int samples, int dpsize);
256 
257 } // end of namespace
258 
259 #endif