00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #if !defined escript_AbstractContinuousDomain_20040528_H
00016 #define escript_AbstractContinuousDomain_20040528_H
00017
00018 #include "system_dep.h"
00019 #include "AbstractDomain.h"
00020
00021 #include <string>
00022 #include <vector>
00023
00024 #include "AbstractSystemMatrix.h"
00025 #include "AbstractTransportProblem.h"
00026
00027 namespace escript {
00028
00029
00030
00031 class Data;
00032
00043 class AbstractContinuousDomain : public AbstractDomain {
00044
00045 public:
00046
00060 ESCRIPT_DLL_API
00061 AbstractContinuousDomain();
00062
00076 ESCRIPT_DLL_API
00077 virtual ~AbstractContinuousDomain();
00078
00084 ESCRIPT_DLL_API
00085 virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
00086
00091 ESCRIPT_DLL_API
00092 virtual std::string getDescription() const;
00093
00098 ESCRIPT_DLL_API
00099 virtual int getContinuousFunctionCode() const;
00100
00105 ESCRIPT_DLL_API
00106 virtual int getReducedContinuousFunctionCode() const;
00107
00112 ESCRIPT_DLL_API
00113 virtual int getFunctionCode() const;
00114
00119 ESCRIPT_DLL_API
00120 virtual int getReducedFunctionCode() const;
00121
00126 ESCRIPT_DLL_API
00127 virtual int getFunctionOnBoundaryCode() const;
00128
00133 ESCRIPT_DLL_API
00134 virtual int getReducedFunctionOnBoundaryCode() const;
00135
00136
00141 ESCRIPT_DLL_API
00142 virtual int getFunctionOnContactZeroCode() const;
00143
00148 ESCRIPT_DLL_API
00149 virtual int getReducedFunctionOnContactZeroCode() const;
00150
00155 ESCRIPT_DLL_API
00156 virtual int getFunctionOnContactOneCode() const;
00157
00162 ESCRIPT_DLL_API
00163 virtual int getReducedFunctionOnContactOneCode() const;
00164
00169 ESCRIPT_DLL_API
00170 virtual int getSolutionCode() const;
00171
00176 ESCRIPT_DLL_API
00177 virtual int getReducedSolutionCode() const;
00178
00183 ESCRIPT_DLL_API
00184 virtual int getDiracDeltaFunctionsCode() const;
00185
00192 ESCRIPT_DLL_API
00193 virtual int getSystemMatrixTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
00194
00201 ESCRIPT_DLL_API
00202 virtual int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
00203
00210 ESCRIPT_DLL_API
00211 virtual void setToIntegrals(std::vector<double>& integrals,const escript::Data& arg) const;
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00227 ESCRIPT_DLL_API
00228 virtual void addPDEToSystem(
00229 AbstractSystemMatrix& mat, escript::Data& rhs,
00230 const escript::Data& A, const escript::Data& B, const escript::Data& C,
00231 const escript::Data& D, const escript::Data& X, const escript::Data& Y,
00232 const escript::Data& d, const escript::Data& y,
00233 const escript::Data& d_contact, const escript::Data& y_contact,
00234 const escript::Data& d_dirac, const escript::Data& y_dirac) const;
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00253 ESCRIPT_DLL_API
00254 virtual void addPDEToRHS(escript::Data& rhs,
00255 const escript::Data& X, const escript::Data& Y,
00256 const escript::Data& y, const escript::Data& y_contact, const escript::Data& y_dirac) const;
00262 ESCRIPT_DLL_API
00263 virtual void addPDEToTransportProblem(
00264 AbstractTransportProblem& tp, escript::Data& source,
00265 const escript::Data& M,
00266 const escript::Data& A, const escript::Data& B, const escript::Data& C,const escript::Data& D,
00267 const escript::Data& X,const escript::Data& Y,
00268 const escript::Data& d, const escript::Data& y,
00269 const escript::Data& d_contact,const escript::Data& y_contact,
00270 const escript::Data& d_dirac,const escript::Data& y_dirac) const;
00271
00276 ESCRIPT_DLL_API
00277 virtual ASM_ptr newSystemMatrix(
00278 const int row_blocksize,
00279 const escript::FunctionSpace& row_functionspace,
00280 const int column_blocksize,
00281 const escript::FunctionSpace& column_functionspace,
00282 const int type) const;
00289 ESCRIPT_DLL_API
00290 virtual ATP_ptr newTransportProblem(
00291 const int blocksize,
00292 const escript::FunctionSpace& functionspace,
00293 const int type) const;
00294
00299 ESCRIPT_DLL_API
00300 virtual int getNumDataPointsGlobal() const;
00301
00307 ESCRIPT_DLL_API
00308 virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;
00309
00314 ESCRIPT_DLL_API
00315 virtual void setNewX(const escript::Data& arg);
00316
00321 ESCRIPT_DLL_API
00322 virtual void Print_Mesh_Info(const bool full=false) const;
00323
00324
00325 protected:
00326
00327 private:
00328
00329 };
00330
00331 }
00332
00333 #endif