AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > Class Template Reference

#include <AbstractLinearPdeSolver.hpp>

Inheritance diagram for AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:

Inheritance graph
[legend]
Collaboration diagram for AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >:

Collaboration graph
[legend]

List of all members.

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
LinearSystemGetLinearSystem ()

Protected Attributes

LinearSystemmpLinearSystem
AbstractTetrahedralMesh
< ELEMENT_DIM, SPACE_DIM > * 
mpMesh


Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
class AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >

Simple abstract class containing some common functionality between AbstractStaticLinearPdeSolver and AbstractDynamicLinearPdeSolver

Definition at line 42 of file AbstractLinearPdeSolver.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractLinearPdeSolver ( AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *  pMesh  )  [inline]

Constructor

Parameters:
pMesh the mesh

Definition at line 61 of file AbstractLinearPdeSolver.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
virtual AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractLinearPdeSolver (  )  [inline, virtual]


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
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.

Parameters:
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().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
virtual void AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::PrepareForSetupLinearSystem ( Vec  currentSolution  )  [inline, virtual]

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
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.

Parameters:
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().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
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.

Parameters:
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().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
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).

Parameters:
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().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
LinearSystem* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::GetLinearSystem (  )  [inline]


Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_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 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().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, unsigned PROBLEM_DIM>
AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* AbstractLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpMesh [protected]


The documentation for this class was generated from the following file:

Generated on Mon Apr 18 11:36:02 2011 for Chaste by  doxygen 1.5.5