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