ESYS13  Revision_
TestDomain.h
Go to the documentation of this file.
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