#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 |
Definition at line 42 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 71 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 |
) | [inline, 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 >, AbstractMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >, MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >, CellBasedSimulationWithPdesAssembler< DIM >, AbstractBidomainSolver< DIM, DIM >, and SimpleLinearEllipticSolver< DIM, DIM >.
Definition at line 145 of file AbstractLinearPdeSolver.hpp.
References GenericEventHandler< 13, HeartEventHandler >::BeginEvent(), GenericEventHandler< 13, HeartEventHandler >::EndEvent(), AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpLinearSystem, and AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpMesh.
Referenced by SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().
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 >, AbstractMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, and AbstractBidomainSolver< DIM, DIM >.
Definition at line 96 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().
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 >, and AbstractBidomainSolver< DIM, DIM >.
Definition at line 105 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().
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 118 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().
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 BasicBidomainSolver< ELEMENT_DIM, SPACE_DIM >, BasicMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >, MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >, SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >, SimpleLinearParabolicSolver< ELEMENT_DIM, SPACE_DIM >, and SimpleLinearEllipticSolver< DIM, DIM >.
Referenced by AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), and AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().
LinearSystem* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetLinearSystem | ( | ) | [inline] |
Get a pointer to the linear system
Definition at line 138 of file AbstractLinearPdeSolver.hpp.
References AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpLinearSystem.
Referenced by BidomainProblem< DIM >::AtBeginningOfTimestep().
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 49 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::FinaliseForBath(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::FinaliseLinearSystem(), AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetLinearSystem(), SimpleLinearEllipticSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseForSolve(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), CellBasedSimulationWithPdesAssembler< DIM >::InitialiseForSolve(), SimpleLinearParabolicSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), SimpleLinearEllipticSolver< DIM, DIM >::SetupLinearSystem(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), BasicMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), BasicBidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), AbstractStaticLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve(), 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
Definition at line 54 of file AbstractLinearPdeSolver.hpp.
Referenced by AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::FinaliseForBath(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), BasicBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseAssembler(), AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseForSolve(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::InitialiseForSolve(), MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::MatrixBasedBidomainSolver(), MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::MatrixBasedMonodomainSolver(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetFixedExtracellularPotentialNodes(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MatrixBasedMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MatrixBasedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), and BasicMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem().