Chaste Release::3.1
|
#include <AbstractLinearPdeSolver.hpp>
Public Member Functions | |
AbstractLinearPdeSolver (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh) | |
virtual | ~AbstractLinearPdeSolver () |
virtual void | InitialiseForSolve (Vec initialSolution=NULL) |
virtual void | PrepareForSetupLinearSystem (Vec currentSolution) |
virtual void | FinaliseLinearSystem (Vec currentSolution) |
virtual void | FollowingSolveLinearSystem (Vec currentSolution) |
virtual void | SetupLinearSystem (Vec currentSolution, bool computeMatrix)=0 |
LinearSystem * | GetLinearSystem () |
Protected Attributes | |
LinearSystem * | mpLinearSystem |
AbstractTetrahedralMesh < ELEMENT_DIM, SPACE_DIM > * | mpMesh |
Simple abstract class containing some common functionality between AbstractStaticLinearPdeSolver and AbstractDynamicLinearPdeSolver.
Definition at line 49 of file AbstractLinearPdeSolver.hpp.
AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractLinearPdeSolver | ( | AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * | pMesh | ) | [inline] |
virtual AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractLinearPdeSolver | ( | ) | [inline, virtual] |
Destructor.
Definition at line 76 of file AbstractLinearPdeSolver.hpp.
References AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpLinearSystem.
virtual void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::FinaliseLinearSystem | ( | Vec | currentSolution | ) | [inline, virtual] |
The static and dynamic Solve() implementations both call this immediately after SetupLinearSystem(). It can be overloaded if further work needs to be done.
currentSolution | The current solution |
Reimplemented in AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >, AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >, AbstractBidomainSolver< DIM, DIM >, AbstractExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >, and AbstractExtendedBidomainSolver< DIM, DIM >.
Definition at line 112 of file AbstractLinearPdeSolver.hpp.
virtual void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::FollowingSolveLinearSystem | ( | Vec | currentSolution | ) | [inline, virtual] |
The static and dynamic Solve() implementations both call this immediately after the linear solve is carried out (but before the timestep counter is incremented. This can be overloaded if further work on the solution vector needs to be done (for example, in operator splitting of the diffusion and reaction terms in the OperatorSplittingMonodomainSolver.
currentSolution | The current solution (solution of the linear system solve) |
Reimplemented in OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >.
Definition at line 125 of file AbstractLinearPdeSolver.hpp.
LinearSystem* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetLinearSystem | ( | ) | [inline] |
Get a pointer to the linear system.
Definition at line 145 of file AbstractLinearPdeSolver.hpp.
References AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpLinearSystem.
void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseForSolve | ( | Vec | initialSolution = NULL | ) | [virtual] |
Initialise method: sets up the linear system (using the mesh to determine the number of unknowns per row to preallocate) if it is not already set up. Can use an initial solution as PETSc template, or base it on the mesh size.
initialSolution | Initial solution (defaults to NULL) for PETSc to use as a template. |
Reimplemented in AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >, BidomainSolver< ELEMENT_DIM, SPACE_DIM >, AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >, ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >, MonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, LinearParabolicPdeSystemWithCoupledOdeSystemSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >, CellBasedPdeSolver< DIM >, AbstractBidomainSolver< DIM, DIM >, BidomainSolver< 3, 3 >, AbstractExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >, AbstractExtendedBidomainSolver< DIM, DIM >, and SimpleLinearEllipticSolver< DIM, DIM >.
Definition at line 152 of file AbstractLinearPdeSolver.hpp.
References GenericEventHandler< 16, HeartEventHandler >::BeginEvent(), PetscTools::Destroy(), and GenericEventHandler< 16, HeartEventHandler >::EndEvent().
Referenced by SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), and AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve().
virtual void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::PrepareForSetupLinearSystem | ( | Vec | currentSolution | ) | [inline, virtual] |
The static and dynamic Solve() implementations both call this before after SetupLinearSystem(). It can be overloaded if needed.
currentSolution | The current solution |
Reimplemented in AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >, AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >, MonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, LinearParabolicPdeSystemWithCoupledOdeSystemSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, AbstractBidomainSolver< DIM, DIM >, AbstractExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >, and AbstractExtendedBidomainSolver< DIM, DIM >.
Definition at line 101 of file AbstractLinearPdeSolver.hpp.
virtual void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::SetupLinearSystem | ( | Vec | currentSolution, |
bool | computeMatrix | ||
) | [pure virtual] |
The main Solve() methods in the child classes use this method. The concrete solver classes must implement it, depending on the the choice of numerical approach. The method should completely set up the linear system that has to be solved (that timestep, if dynamic PDEs).
currentSolution | The current solution which can be used in setting up the linear system if needed (NULL if there isn't a current solution) |
computeMatrix | Whether to compute the LHS matrix of the linear system (mainly for dynamic solves). |
Implemented in BidomainSolver< ELEMENT_DIM, SPACE_DIM >, ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >, MonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, LinearParabolicPdeSystemWithCoupledOdeSystemSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >, SimpleLinearParabolicSolver< ELEMENT_DIM, SPACE_DIM >, BidomainSolver< 3, 3 >, and SimpleLinearEllipticSolver< DIM, DIM >.
LinearSystem* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpLinearSystem [protected] |
The linear system that will be set up and solved as part of the PDE solve.
Definition at line 54 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetLinearSystem(), SimpleLinearParabolicSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), SimpleLinearEllipticSolver< DIM, DIM >::SetupLinearSystem(), and AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractLinearPdeSolver().
AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpMesh [protected] |
Pointer to the mesh.
Reimplemented in LinearParabolicPdeSystemWithCoupledOdeSystemSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >.
Definition at line 57 of file AbstractLinearPdeSolver.hpp.
Referenced by BidomainSolver< ELEMENT_DIM, SPACE_DIM >::BidomainSolver(), ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::ExtendedBidomainSolver(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::MonodomainSolver(), and OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::OperatorSplittingMonodomainSolver().