escript  Revision_
AbstractContinuousDomain.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2016 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
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 #ifndef __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
19 #define __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
20 
21 #include "system_dep.h"
22 #include "AbstractDomain.h"
23 #include "AbstractSystemMatrix.h"
25 
26 #include <string>
27 #include <vector>
28 
29 namespace escript {
30 
31 //
32 // Forward declaration
33 class Data;
34 
46 {
47 
48  public:
49 
64 
78  virtual ~AbstractContinuousDomain();
79 
85  virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
86 
91  virtual std::string getDescription() const;
92 
97  virtual int getContinuousFunctionCode() const;
98 
103  virtual int getReducedContinuousFunctionCode() const;
104 
109  virtual int getFunctionCode() const;
110 
115  virtual int getReducedFunctionCode() const;
116 
121  virtual int getFunctionOnBoundaryCode() const;
122 
127  virtual int getReducedFunctionOnBoundaryCode() const;
128 
129 
134  virtual int getFunctionOnContactZeroCode() const;
135 
140  virtual int getReducedFunctionOnContactZeroCode() const;
141 
146  virtual int getFunctionOnContactOneCode() const;
147 
152  virtual int getReducedFunctionOnContactOneCode() const;
153 
158  virtual int getSolutionCode() const;
159 
164  virtual int getReducedSolutionCode() const;
165 
170  virtual int getDiracDeltaFunctionsCode() const;
171 
177  virtual int getSystemMatrixTypeId(const boost::python::object& options) const;
178 
185  virtual int getTransportTypeId(int solver, int preconditioner, int package, bool symmetry) const;
186 
193  virtual void setToIntegrals(std::vector<double>& integrals,const escript::Data& arg) const;
194 
195 // /**
196 // \brief
197 // Return the domain as const AbstractContinuousDomain&
198 // */
199 // static const AbstractContinuousDomain& asAbstractContinuousDomain(const AbstractDomain& domain);
200 
201 
202 
203 
208  virtual void addPDEToSystem(
210  const escript::Data& A, const escript::Data& B, const escript::Data& C,
211  const escript::Data& D, const escript::Data& X, const escript::Data& Y,
212  const escript::Data& d, const escript::Data& y,
213  const escript::Data& d_contact, const escript::Data& y_contact,
214  const escript::Data& d_dirac, const escript::Data& y_dirac) const;
215 
216 // We do not require this method at this level since the python side checks to ensure it exists
217 // before calling it.
218 
219 // /**
220 // \brief
221 // adds a PDE onto the lumped stiffness matrix matrix
222 // */
223 // virtual void addPDEToLumpedSystem(
224 // escript::Data& mat,
225 // const escript::Data& D,
226 // const escript::Data& d) const;
227 
232  virtual void addPDEToRHS(escript::Data& rhs,
233  const escript::Data& X, const escript::Data& Y,
234  const escript::Data& y, const escript::Data& y_contact, const escript::Data& y_dirac) const;
240  virtual void addPDEToTransportProblem(
242  const escript::Data& M,
243  const escript::Data& A, const escript::Data& B, const escript::Data& C,const escript::Data& D,
244  const escript::Data& X,const escript::Data& Y,
245  const escript::Data& d, const escript::Data& y,
246  const escript::Data& d_contact,const escript::Data& y_contact,
247  const escript::Data& d_dirac,const escript::Data& y_dirac) const;
248 
253  virtual ASM_ptr newSystemMatrix(
254  const int row_blocksize,
255  const escript::FunctionSpace& row_functionspace,
256  const int column_blocksize,
257  const escript::FunctionSpace& column_functionspace,
258  const int type) const;
265  virtual ATP_ptr newTransportProblem(
266  const int blocksize,
267  const escript::FunctionSpace& functionspace,
268  const int type) const;
269 
274  virtual DataTypes::dim_t getNumDataPointsGlobal() const;
275 
281  virtual std::pair<int,DataTypes::dim_t> getDataShape(int functionSpaceCode) const;
282 
287  virtual void setNewX(const escript::Data& arg);
288 
293  virtual void Print_Mesh_Info(const bool full=false) const;
294 };
295 
296 } // end of namespace
297 
298 #endif // __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
299 
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:45
Definition: FunctionSpace.h:34
Definition: AbstractContinuousDomain.cpp:22
static dim_t M
Definition: SparseMatrix_saveHB.cpp:37
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:160
Data represents a collection of datapoints.
Definition: Data.h:63
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:43
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:42
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:32
Base class for all escript domains.
Definition: AbstractDomain.h:45
index_t dim_t
Definition: DataTypes.h:64