Chaste Commit::1fd4e48e3990e67db148bc1bc4cf6991a0049d0c
OdeLinearSystemSolver Class Reference

#include <OdeLinearSystemSolver.hpp>

+ Collaboration diagram for OdeLinearSystemSolver:

Public Member Functions

 OdeLinearSystemSolver (unsigned systemSize, double timeStep)
 
 ~OdeLinearSystemSolver ()
 
double GetTimeStep ()
 
MatrGetLhsMatrix ()
 
VecrGetForceVector ()
 
void SetInitialConditionVector (Vec initialConditionsVector)
 
Vec SolveOneTimeStep ()
 

Private Attributes

double mTimeStep
 
LinearSystem mLinearSystem
 
Vec mForceVector
 
Vec mCurrentSolution
 

Detailed Description

Solve large systems of ODEs of the form

M dr/dt = f(t,r),

where M is a matrix, typically large and sparse, and r and f are vectors.

This differs from the OdeSolver classes in the ode component, which are for systems of the form dr/dt = f(t,r) and for small numbers of unknowns.

The solver uses forward euler to dicretise as M r^{n+1} = M r^{n} + dt f and solves this linear system.

The calling code is responsible with setting up M and f each timestep.

Definition at line 56 of file OdeLinearSystemSolver.hpp.

Constructor & Destructor Documentation

◆ OdeLinearSystemSolver()

OdeLinearSystemSolver::OdeLinearSystemSolver ( unsigned  systemSize,
double  timeStep 
)

Constructor.

Parameters
systemSizesize of the ODE system
timeStepthe time step used to integrate the ODE system

Definition at line 38 of file OdeLinearSystemSolver.cpp.

References PetscTools::CreateAndSetVec(), mCurrentSolution, mForceVector, and mTimeStep.

◆ ~OdeLinearSystemSolver()

OdeLinearSystemSolver::~OdeLinearSystemSolver ( )

Destructor.

Definition at line 49 of file OdeLinearSystemSolver.cpp.

References PetscTools::Destroy(), mCurrentSolution, and mForceVector.

Member Function Documentation

◆ GetTimeStep()

double OdeLinearSystemSolver::GetTimeStep ( )
Returns
the timestep for the solver.

Definition at line 55 of file OdeLinearSystemSolver.cpp.

References mTimeStep.

◆ rGetForceVector()

Vec & OdeLinearSystemSolver::rGetForceVector ( )
Returns
the force vector.

Definition at line 65 of file OdeLinearSystemSolver.cpp.

References mForceVector.

Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().

◆ rGetLhsMatrix()

Mat & OdeLinearSystemSolver::rGetLhsMatrix ( )

◆ SetInitialConditionVector()

void OdeLinearSystemSolver::SetInitialConditionVector ( Vec  initialConditionsVector)

Set the initial conditions.

Parameters
initialConditionsVectorthe initial condition

Definition at line 70 of file OdeLinearSystemSolver.cpp.

References mCurrentSolution.

Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().

◆ SolveOneTimeStep()

Vec OdeLinearSystemSolver::SolveOneTimeStep ( )

Member Data Documentation

◆ mCurrentSolution

Vec OdeLinearSystemSolver::mCurrentSolution
private

Solution at current timestep.

Definition at line 70 of file OdeLinearSystemSolver.hpp.

Referenced by OdeLinearSystemSolver(), ~OdeLinearSystemSolver(), SetInitialConditionVector(), and SolveOneTimeStep().

◆ mForceVector

Vec OdeLinearSystemSolver::mForceVector
private

Force vector (f in M dr/dt = f).

Definition at line 67 of file OdeLinearSystemSolver.hpp.

Referenced by OdeLinearSystemSolver(), ~OdeLinearSystemSolver(), rGetForceVector(), and SolveOneTimeStep().

◆ mLinearSystem

LinearSystem OdeLinearSystemSolver::mLinearSystem
private

The LHS matrix and the force vector. Solve() is called on this.

Definition at line 64 of file OdeLinearSystemSolver.hpp.

Referenced by rGetLhsMatrix(), and SolveOneTimeStep().

◆ mTimeStep

double OdeLinearSystemSolver::mTimeStep
private

Timestep for solver.

Definition at line 61 of file OdeLinearSystemSolver.hpp.

Referenced by OdeLinearSystemSolver(), GetTimeStep(), and SolveOneTimeStep().


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