ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 00015 #if !defined escript_TestDomain_20090618_H 00016 #define escript_TestDomain_20090618_H 00017 #include "system_dep.h" 00018 00019 #include "AbstractDomain.h" 00020 #include "FunctionSpace.h" 00021 00022 #include <string> 00023 00024 namespace escript { 00025 00042 class TestDomain : public AbstractDomain { 00043 00044 public: 00045 00054 ESCRIPT_DLL_API 00055 TestDomain(int pointspersample, int numsamples, int dpsize=1); 00056 00057 ESCRIPT_DLL_API 00058 ~TestDomain(); 00059 00065 ESCRIPT_DLL_API 00066 virtual bool isValidFunctionSpaceType(int functionSpaceType) const; 00067 00072 ESCRIPT_DLL_API 00073 virtual std::string getDescription() const; 00074 00079 ESCRIPT_DLL_API 00080 virtual std::string functionSpaceTypeAsString(int functionSpaceType) const; 00081 00087 ESCRIPT_DLL_API 00088 virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const; 00089 ESCRIPT_DLL_API 00090 virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const; 00091 00092 ESCRIPT_DLL_API 00093 bool 00094 commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const; 00095 00100 ESCRIPT_DLL_API 00101 virtual escript::Data getX() const; 00102 00103 00109 ESCRIPT_DLL_API 00110 virtual void interpolateACross(escript::Data& target, const escript::Data& source) const; 00111 ESCRIPT_DLL_API 00112 virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const; 00113 00114 00119 ESCRIPT_DLL_API 00120 virtual int getDefaultCode() const; 00121 00122 00127 ESCRIPT_DLL_API 00128 virtual int getContinuousFunctionCode() const; 00129 00134 ESCRIPT_DLL_API 00135 virtual int getFunctionCode() const; 00136 00141 ESCRIPT_DLL_API 00142 virtual int getFunctionOnBoundaryCode() const; 00143 00148 ESCRIPT_DLL_API 00149 virtual int getFunctionOnContactZeroCode() const; 00150 00155 ESCRIPT_DLL_API 00156 virtual int getFunctionOnContactOneCode() const; 00157 00162 ESCRIPT_DLL_API 00163 virtual int getSolutionCode() const; 00164 00169 ESCRIPT_DLL_API 00170 virtual int getReducedSolutionCode() const; 00171 00176 ESCRIPT_DLL_API 00177 virtual int getDiracDeltaFunctionsCode() const; 00178 00185 ESCRIPT_DLL_API 00186 virtual std::pair<int,int> getDataShape(int functionSpaceCode) const; 00187 00194 ESCRIPT_DLL_API 00195 virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const; 00196 00202 ESCRIPT_DLL_API 00203 virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const; 00204 00208 ESCRIPT_DLL_API 00209 virtual int getDim() const; 00210 00215 ESCRIPT_DLL_API 00216 virtual bool operator==(const AbstractDomain& other) const; 00217 ESCRIPT_DLL_API 00218 virtual bool operator!=(const AbstractDomain& other) const; 00219 00223 ESCRIPT_DLL_API 00224 virtual 00225 bool canTag(int functionSpaceCode) const; 00226 00232 ESCRIPT_DLL_API 00233 virtual int getNumberOfTagsInUse(int functionSpaceCode) const; 00234 00239 ESCRIPT_DLL_API 00240 virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const; 00241 00242 protected: 00243 00244 private: 00245 int m_samples; // number of samples 00246 int m_dpps; // data points per sample 00247 int m_dpsize; // how big are the datapoints? 00248 int* m_samplerefids; // sample reference ids 00249 }; 00250 00251 ESCRIPT_DLL_API 00252 FunctionSpace 00253 getTestDomainFunctionSpace(int dpps, int samples, int dpsize); 00254 00255 } // end of namespace 00256 00257 #endif