escript
Revision_
|
00001 00002 /***************************************************************************** 00003 * 00004 * Copyright (c) 2003-2014 by University of Queensland 00005 * http://www.uq.edu.au 00006 * 00007 * Primary Business: Queensland, Australia 00008 * Licensed under the Open Software License version 3.0 00009 * http://www.opensource.org/licenses/osl-3.0.php 00010 * 00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC) 00012 * Development 2012-2013 by School of Earth Sciences 00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp) 00014 * 00015 *****************************************************************************/ 00016 00017 00018 #if !defined escript_TestDomain_20090618_H 00019 #define escript_TestDomain_20090618_H 00020 #include "system_dep.h" 00021 00022 #include "AbstractDomain.h" 00023 #include "FunctionSpace.h" 00024 00025 #include <string> 00026 00027 namespace escript { 00028 00045 class TestDomain : public AbstractDomain { 00046 00047 public: 00048 00057 ESCRIPT_DLL_API 00058 TestDomain(int pointspersample, int numsamples, int dpsize=1); 00059 00060 ESCRIPT_DLL_API 00061 ~TestDomain(); 00062 00068 ESCRIPT_DLL_API 00069 virtual bool isValidFunctionSpaceType(int functionSpaceType) const; 00070 00075 ESCRIPT_DLL_API 00076 virtual std::string getDescription() const; 00077 00082 ESCRIPT_DLL_API 00083 virtual std::string functionSpaceTypeAsString(int functionSpaceType) const; 00084 00090 ESCRIPT_DLL_API 00091 virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const; 00092 ESCRIPT_DLL_API 00093 virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const; 00094 00095 ESCRIPT_DLL_API 00096 bool 00097 commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const; 00098 00103 ESCRIPT_DLL_API 00104 virtual escript::Data getX() const; 00105 00106 00112 ESCRIPT_DLL_API 00113 virtual void interpolateACross(escript::Data& target, const escript::Data& source) const; 00114 ESCRIPT_DLL_API 00115 virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const; 00116 00117 00122 ESCRIPT_DLL_API 00123 virtual int getDefaultCode() const; 00124 00125 00130 ESCRIPT_DLL_API 00131 virtual int getContinuousFunctionCode() const; 00132 00137 ESCRIPT_DLL_API 00138 virtual int getFunctionCode() const; 00139 00144 ESCRIPT_DLL_API 00145 virtual int getFunctionOnBoundaryCode() const; 00146 00151 ESCRIPT_DLL_API 00152 virtual int getFunctionOnContactZeroCode() const; 00153 00158 ESCRIPT_DLL_API 00159 virtual int getFunctionOnContactOneCode() const; 00160 00165 ESCRIPT_DLL_API 00166 virtual int getSolutionCode() const; 00167 00172 ESCRIPT_DLL_API 00173 virtual int getReducedSolutionCode() const; 00174 00179 ESCRIPT_DLL_API 00180 virtual int getDiracDeltaFunctionsCode() const; 00181 00188 ESCRIPT_DLL_API 00189 virtual std::pair<int,int> getDataShape(int functionSpaceCode) const; 00190 00197 ESCRIPT_DLL_API 00198 virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const; 00199 00205 ESCRIPT_DLL_API 00206 virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const; 00207 00211 ESCRIPT_DLL_API 00212 virtual int getDim() const; 00213 00218 ESCRIPT_DLL_API 00219 virtual bool operator==(const AbstractDomain& other) const; 00220 ESCRIPT_DLL_API 00221 virtual bool operator!=(const AbstractDomain& other) const; 00222 00226 ESCRIPT_DLL_API 00227 virtual 00228 bool canTag(int functionSpaceCode) const; 00229 00235 ESCRIPT_DLL_API 00236 virtual int getNumberOfTagsInUse(int functionSpaceCode) const; 00237 00242 ESCRIPT_DLL_API 00243 virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const; 00244 00245 ESCRIPT_DLL_API 00246 virtual escript::Data randomFill(const DataTypes::ShapeType& shape, 00247 const FunctionSpace& what, long seed, const boost::python::tuple& filter) const; 00248 00249 protected: 00250 00251 private: 00252 int m_samples; // number of samples 00253 int m_dpps; // data points per sample 00254 int m_dpsize; // how big are the datapoints? 00255 int* m_samplerefids; // sample reference ids 00256 }; 00257 00258 ESCRIPT_DLL_API 00259 FunctionSpace 00260 getTestDomainFunctionSpace(int dpps, int samples, int dpsize); 00261 00262 } // end of namespace 00263 00264 #endif