escript Revision_
AbstractContinuousDomain.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 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-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18
19#ifndef __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
20#define __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
21
22#include "system_dep.h"
23#include "AbstractDomain.h"
26
27#include <string>
28#include <vector>
29
30namespace escript {
31
32//
33// Forward declaration
34class Data;
35
47{
48
49 public:
50
65
80
86 virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
87
92 virtual std::string getDescription() const;
93
98 virtual int getContinuousFunctionCode() const;
99
104 virtual int getReducedContinuousFunctionCode() const;
105
110 virtual int getFunctionCode() const;
111
116 virtual int getReducedFunctionCode() const;
117
122 virtual int getFunctionOnBoundaryCode() const;
123
128 virtual int getReducedFunctionOnBoundaryCode() const;
129
130
135 virtual int getFunctionOnContactZeroCode() const;
136
141 virtual int getReducedFunctionOnContactZeroCode() const;
142
147 virtual int getFunctionOnContactOneCode() const;
148
153 virtual int getReducedFunctionOnContactOneCode() const;
154
159 virtual int getSolutionCode() const;
160
165 virtual int getReducedSolutionCode() const;
166
171 virtual int getDiracDeltaFunctionsCode() const;
172
178 virtual int getSystemMatrixTypeId(const boost::python::object& options) const;
179
186 virtual int getTransportTypeId(int solver, int preconditioner, int package, bool symmetry) const;
187
194 virtual void setToIntegrals(std::vector<DataTypes::real_t>& integrals,
195 const escript::Data& arg) const;
196 virtual void setToIntegrals(std::vector<DataTypes::cplx_t>& integrals,
197 const escript::Data& arg) const;
198
199// /**
200// \brief
201// Return the domain as const AbstractContinuousDomain&
202// */
203// static const AbstractContinuousDomain& asAbstractContinuousDomain(const AbstractDomain& domain);
204
205
206
207
212 virtual void addPDEToSystem(
214 const escript::Data& A, const escript::Data& B, const escript::Data& C,
215 const escript::Data& D, const escript::Data& X, const escript::Data& Y,
216 const escript::Data& d, const escript::Data& y,
217 const escript::Data& d_contact, const escript::Data& y_contact,
218 const escript::Data& d_dirac, const escript::Data& y_dirac) const;
219
220// We do not require this method at this level since the python side checks to ensure it exists
221// before calling it.
222
223// /**
224// \brief
225// adds a PDE onto the lumped stiffness matrix matrix
226// */
227// virtual void addPDEToLumpedSystem(
228// escript::Data& mat,
229// const escript::Data& D,
230// const escript::Data& d) const;
231
236 virtual void addPDEToRHS(escript::Data& rhs,
237 const escript::Data& X, const escript::Data& Y,
238 const escript::Data& y, const escript::Data& y_contact, const escript::Data& y_dirac) const;
244 virtual void addPDEToTransportProblem(
246 const escript::Data& M,
247 const escript::Data& A, const escript::Data& B, const escript::Data& C,const escript::Data& D,
248 const escript::Data& X,const escript::Data& Y,
249 const escript::Data& d, const escript::Data& y,
250 const escript::Data& d_contact,const escript::Data& y_contact,
251 const escript::Data& d_dirac,const escript::Data& y_dirac) const;
252
257 virtual ASM_ptr newSystemMatrix(
258 const int row_blocksize,
259 const escript::FunctionSpace& row_functionspace,
260 const int column_blocksize,
261 const escript::FunctionSpace& column_functionspace,
262 const int type) const;
269 virtual ATP_ptr newTransportProblem(
270 const int blocksize,
271 const escript::FunctionSpace& functionspace,
272 const int type) const;
273
278 virtual DataTypes::dim_t getNumDataPointsGlobal() const;
279
285 virtual std::pair<int,DataTypes::dim_t> getDataShape(int functionSpaceCode) const;
286
291 virtual void setNewX(const escript::Data& arg);
292
297 virtual void Print_Mesh_Info(const bool full=false) const;
298};
299
300} // end of namespace
301
302#endif // __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
303
AbstractContinuousDomain, base class for continuous domains.
Definition AbstractContinuousDomain.h:47
Base class for all escript domains.
Definition AbstractDomain.h:51
Base class for escript system matrices.
Definition AbstractSystemMatrix.h:44
Give a short description of what AbstractTransportProblem does.
Definition AbstractTransportProblem.h:45
Data represents a collection of datapoints.
Definition Data.h:64
Definition FunctionSpace.h:36
#define ESCRIPT_DLL_API
Definition escriptcore/src/system_dep.h:30
index_t dim_t
Definition DataTypes.h:66
Definition AbstractContinuousDomain.cpp:23
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition AbstractTransportProblem.h:161
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition AbstractSystemMatrix.h:35