00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2009 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 00041 class TestDomain : public AbstractDomain { 00042 00043 public: 00044 00053 ESCRIPT_DLL_API 00054 TestDomain(int pointspersample, int numsamples); 00055 00056 ESCRIPT_DLL_API 00057 ~TestDomain(); 00058 00064 ESCRIPT_DLL_API 00065 virtual bool isValidFunctionSpaceType(int functionSpaceType) const; 00066 00071 ESCRIPT_DLL_API 00072 virtual std::string getDescription() const; 00073 00078 ESCRIPT_DLL_API 00079 virtual std::string functionSpaceTypeAsString(int functionSpaceType) const; 00080 00086 ESCRIPT_DLL_API 00087 virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const; 00088 ESCRIPT_DLL_API 00089 virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const; 00090 00096 ESCRIPT_DLL_API 00097 virtual void interpolateACross(escript::Data& target, const escript::Data& source) const; 00098 ESCRIPT_DLL_API 00099 virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const; 00100 00101 00106 ESCRIPT_DLL_API 00107 virtual int getDefaultCode() const; 00108 00109 00114 ESCRIPT_DLL_API 00115 virtual int getContinuousFunctionCode() const; 00116 00121 ESCRIPT_DLL_API 00122 virtual int getFunctionCode() const; 00123 00128 ESCRIPT_DLL_API 00129 virtual int getFunctionOnBoundaryCode() const; 00130 00135 ESCRIPT_DLL_API 00136 virtual int getFunctionOnContactZeroCode() const; 00137 00142 ESCRIPT_DLL_API 00143 virtual int getFunctionOnContactOneCode() const; 00144 00149 ESCRIPT_DLL_API 00150 virtual int getSolutionCode() const; 00151 00156 ESCRIPT_DLL_API 00157 virtual int getReducedSolutionCode() const; 00158 00163 ESCRIPT_DLL_API 00164 virtual int getDiracDeltaFunctionCode() const; 00165 00172 ESCRIPT_DLL_API 00173 virtual std::pair<int,int> getDataShape(int functionSpaceCode) const; 00174 00181 ESCRIPT_DLL_API 00182 virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const; 00183 00189 ESCRIPT_DLL_API 00190 virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const; 00191 00195 ESCRIPT_DLL_API 00196 virtual int getDim() const; 00197 00202 ESCRIPT_DLL_API 00203 virtual bool operator==(const AbstractDomain& other) const; 00204 ESCRIPT_DLL_API 00205 virtual bool operator!=(const AbstractDomain& other) const; 00206 00210 ESCRIPT_DLL_API 00211 virtual 00212 bool canTag(int functionSpaceCode) const; 00213 00219 ESCRIPT_DLL_API 00220 virtual int getNumberOfTagsInUse(int functionSpaceCode) const; 00221 00226 ESCRIPT_DLL_API 00227 virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const; 00228 00229 protected: 00230 00231 private: 00232 int m_samples; // number of samples 00233 int m_dpps; // data points per sample 00234 int* m_samplerefids; // sample reference ids 00235 }; 00236 00237 FunctionSpace 00238 getTestDomainFunctionSpace(int dpps, int samples); 00239 00240 } // end of namespace 00241 00242 #endif