SimpleLinearParabolicSolver.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef SIMPLELINEARPARABOLICSOLVER_HPP_
00038 #define SIMPLELINEARPARABOLICSOLVER_HPP_
00039
00040 #include "AbstractAssemblerSolverHybrid.hpp"
00041 #include "AbstractDynamicLinearPdeSolver.hpp"
00042 #include "AbstractLinearParabolicPde.hpp"
00043
00049 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00050 class SimpleLinearParabolicSolver
00051 : public AbstractAssemblerSolverHybrid<ELEMENT_DIM, SPACE_DIM, 1, NORMAL>,
00052 public AbstractDynamicLinearPdeSolver<ELEMENT_DIM, SPACE_DIM, 1>
00053 {
00054 protected:
00055
00057 AbstractLinearParabolicPde<ELEMENT_DIM,SPACE_DIM>* mpParabolicPde;
00058
00072 virtual c_matrix<double, 1*(ELEMENT_DIM+1), 1*(ELEMENT_DIM+1)> ComputeMatrixTerm(
00073 c_vector<double, ELEMENT_DIM+1>& rPhi,
00074 c_matrix<double, SPACE_DIM, ELEMENT_DIM+1>& rGradPhi,
00075 ChastePoint<SPACE_DIM>& rX,
00076 c_vector<double,1>& rU,
00077 c_matrix<double,1,SPACE_DIM>& rGradU,
00078 Element<ELEMENT_DIM,SPACE_DIM>* pElement);
00079
00090 virtual c_vector<double,1*(ELEMENT_DIM+1)> ComputeVectorTerm(
00091 c_vector<double, ELEMENT_DIM+1>& rPhi,
00092 c_matrix<double, SPACE_DIM, ELEMENT_DIM+1>& rGradPhi,
00093 ChastePoint<SPACE_DIM>& rX,
00094 c_vector<double,1>& rU,
00095 c_matrix<double,1,SPACE_DIM>& rGradU,
00096 Element<ELEMENT_DIM,SPACE_DIM>* pElement);
00097
00098
00099
00100
00101
00102
00103
00104
00112 void SetupLinearSystem(Vec currentSolution, bool computeMatrix)
00113 {
00114 this->SetupGivenLinearSystem(currentSolution, computeMatrix, this->mpLinearSystem);
00115 }
00116
00117 public:
00118
00126 SimpleLinearParabolicSolver(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh,
00127 AbstractLinearParabolicPde<ELEMENT_DIM,SPACE_DIM>* pPde,
00128 BoundaryConditionsContainer<ELEMENT_DIM,SPACE_DIM,1>* pBoundaryConditions);
00129 };
00130
00131 #endif