escript  Revision_4925
AbstractContinuousDomain.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2014 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 
18 #if !defined escript_AbstractContinuousDomain_20040528_H
19 #define escript_AbstractContinuousDomain_20040528_H
20 
21 #include "system_dep.h"
22 #include "AbstractDomain.h"
23 
24 #include <string>
25 #include <vector>
26 
27 #include "AbstractSystemMatrix.h"
29 
30 namespace escript {
31 
32 //
33 // Forward declaration
34 class Data;
35 
47 
48  public:
49 
65 
80  virtual ~AbstractContinuousDomain();
81 
88  virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
89 
95  virtual std::string getDescription() const;
96 
102  virtual int getContinuousFunctionCode() const;
103 
109  virtual int getReducedContinuousFunctionCode() const;
110 
116  virtual int getFunctionCode() const;
117 
123  virtual int getReducedFunctionCode() const;
124 
130  virtual int getFunctionOnBoundaryCode() const;
131 
137  virtual int getReducedFunctionOnBoundaryCode() const;
138 
139 
145  virtual int getFunctionOnContactZeroCode() const;
146 
152  virtual int getReducedFunctionOnContactZeroCode() const;
153 
159  virtual int getFunctionOnContactOneCode() const;
160 
166  virtual int getReducedFunctionOnContactOneCode() const;
167 
173  virtual int getSolutionCode() const;
174 
180  virtual int getReducedSolutionCode() const;
181 
187  virtual int getDiracDeltaFunctionsCode() const;
188 
196  virtual int getSystemMatrixTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
197 
205  virtual int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
206 
214  virtual void setToIntegrals(std::vector<double>& integrals,const escript::Data& arg) const;
215 
216 // /**
217 // \brief
218 // Return the domain as const AbstractContinuousDomain&
219 // */
220 // ESCRIPT_DLL_API
221 // static const AbstractContinuousDomain& asAbstractContinuousDomain(const AbstractDomain& domain);
222 
223 
224 
225 
231  virtual void addPDEToSystem(
233  const escript::Data& A, const escript::Data& B, const escript::Data& C,
234  const escript::Data& D, const escript::Data& X, const escript::Data& Y,
235  const escript::Data& d, const escript::Data& y,
236  const escript::Data& d_contact, const escript::Data& y_contact,
237  const escript::Data& d_dirac, const escript::Data& y_dirac) const;
238 
239 // We do not require this method at this level since the python side checks to ensure it exists
240 // before calling it.
241 
242 // /**
243 // \brief
244 // adds a PDE onto the lumped stiffness matrix matrix
245 // */
246 // ESCRIPT_DLL_API
247 // virtual void addPDEToLumpedSystem(
248 // escript::Data& mat,
249 // const escript::Data& D,
250 // const escript::Data& d) const;
251 
257  virtual void addPDEToRHS(escript::Data& rhs,
258  const escript::Data& X, const escript::Data& Y,
259  const escript::Data& y, const escript::Data& y_contact, const escript::Data& y_dirac) const;
266  virtual void addPDEToTransportProblem(
268  const escript::Data& M,
269  const escript::Data& A, const escript::Data& B, const escript::Data& C,const escript::Data& D,
270  const escript::Data& X,const escript::Data& Y,
271  const escript::Data& d, const escript::Data& y,
272  const escript::Data& d_contact,const escript::Data& y_contact,
273  const escript::Data& d_dirac,const escript::Data& y_dirac) const;
274 
280  virtual ASM_ptr newSystemMatrix(
281  const int row_blocksize,
282  const escript::FunctionSpace& row_functionspace,
283  const int column_blocksize,
284  const escript::FunctionSpace& column_functionspace,
285  const int type) const;
294  const int blocksize,
295  const escript::FunctionSpace& functionspace,
296  const int type) const;
297 
303  virtual int getNumDataPointsGlobal() const;
304 
311  virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;
312 
318  virtual void setNewX(const escript::Data& arg);
319 
325  virtual void Print_Mesh_Info(const bool full=false) const;
326 
327 
328  protected:
329 
330  private:
331 
332 };
333 
334 } // end of namespace
335 
336 #endif
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:46
Give a short description of what FunctionSpace does.
Definition: FunctionSpace.h:46
virtual int getFunctionOnBoundaryCode() const
Return a function on boundary FunctionSpace code.
Definition: AbstractContinuousDomain.cpp:69
virtual int getFunctionCode() const
Return a function FunctionSpace code.
Definition: AbstractContinuousDomain.cpp:57
virtual int getSystemMatrixTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const
return the identifier of the matrix type to be used for the global stiffness matrix when a particular...
Definition: AbstractContinuousDomain.cpp:129
virtual int getNumDataPointsGlobal() const
Return the number of data points summed across all MPI processes.
Definition: AbstractContinuousDomain.cpp:190
virtual void Print_Mesh_Info(const bool full=false) const
Definition: AbstractContinuousDomain.cpp:208
virtual ASM_ptr newSystemMatrix(const int row_blocksize, const escript::FunctionSpace &row_functionspace, const int column_blocksize, const escript::FunctionSpace &column_functionspace, const int type) const
creates a SystemMatrixAdapter stiffness matrix and initializes it with zeros:
Definition: AbstractContinuousDomain.cpp:170
virtual int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const
return the identifier of the matrix type to be used for the global stiffness matrix when a particular...
Definition: AbstractContinuousDomain.cpp:134
virtual void addPDEToSystem(AbstractSystemMatrix &mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
Return the domain as const AbstractContinuousDomain&.
Definition: AbstractContinuousDomain.cpp:139
virtual int getReducedSolutionCode() const
Return a ReducedSolution code.
Definition: AbstractContinuousDomain.cpp:111
static dim_t M
Definition: SparseMatrix_saveHB.cpp:36
virtual void setNewX(const escript::Data &arg)
assigns new location to the domain
Definition: AbstractContinuousDomain.cpp:202
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:162
virtual std::pair< int, int > getDataShape(int functionSpaceCode) const
Return the number of data points per sample, and the number of samples as a pair. ...
Definition: AbstractContinuousDomain.cpp:196
virtual int getFunctionOnContactOneCode() const
Return a FunctionOnContactOne code.
Definition: AbstractContinuousDomain.cpp:93
virtual void addPDEToRHS(escript::Data &rhs, const escript::Data &X, const escript::Data &Y, const escript::Data &y, const escript::Data &y_contact, const escript::Data &y_dirac) const
adds a PDE onto the lumped stiffness matrix matrix
Definition: AbstractContinuousDomain.cpp:150
virtual int getSolutionCode() const
Return a Solution code.
Definition: AbstractContinuousDomain.cpp:105
virtual int getReducedFunctionOnContactOneCode() const
Return a FunctionOnContactOne for reduced integration order code.
Definition: AbstractContinuousDomain.cpp:99
virtual int getReducedFunctionOnBoundaryCode() const
Return a code for a function on boundary FunctionSpace with reduced integration order.
Definition: AbstractContinuousDomain.cpp:75
Data represents a collection of datapoints.
Definition: Data.h:71
AbstractContinuousDomain()
Default constructor for AbstractContinuousDomain.
Definition: AbstractContinuousDomain.cpp:25
virtual ~AbstractContinuousDomain()
Destructor for AbstractContinuousDomain.
Definition: AbstractContinuousDomain.cpp:29
virtual void addPDEToTransportProblem(AbstractTransportProblem &tp, escript::Data &source, const escript::Data &M, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
adds a PDE onto a transport problem
Definition: AbstractContinuousDomain.cpp:158
virtual bool isValidFunctionSpaceType(int functionSpaceType) const
Returns true if the given integer is a valid function space type for this domain. ...
Definition: AbstractContinuousDomain.cpp:33
virtual std::string getDescription() const
Return a description for this domain.
Definition: AbstractContinuousDomain.cpp:39
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:64
virtual int getDiracDeltaFunctionsCode() const
Return a DiracDeltaFunctions code.
Definition: AbstractContinuousDomain.cpp:117
Give a short description of what AbstractSystemMatrix does.
Definition: AbstractSystemMatrix.h:44
virtual int getContinuousFunctionCode() const
Return a continuous FunctionSpace code.
Definition: AbstractContinuousDomain.cpp:45
virtual void setToIntegrals(std::vector< double > &integrals, const escript::Data &arg) const
copies the integrals of the function defined by arg into integrals. arg has to be defined on this...
Definition: AbstractContinuousDomain.cpp:123
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:201
Definition: AbstractDomain.h:62
virtual int getReducedContinuousFunctionCode() const
Return a continuous on reduced order FunctionSpace code.
Definition: AbstractContinuousDomain.cpp:51
virtual int getReducedFunctionOnContactZeroCode() const
Return a FunctionOnContactZero for reduced integration order code.
Definition: AbstractContinuousDomain.cpp:87
virtual int getReducedFunctionCode() const
Return a function FunctionSpace code with reduced integration order.
Definition: AbstractContinuousDomain.cpp:63
virtual ATP_ptr newTransportProblem(const int blocksize, const escript::FunctionSpace &functionspace, const int type) const
creates a TransportProblemAdapter
Definition: AbstractContinuousDomain.cpp:181
virtual int getFunctionOnContactZeroCode() const
Return a FunctionOnContactZero code.
Definition: AbstractContinuousDomain.cpp:81