Chaste Commit::1fd4e48e3990e67db148bc1bc4cf6991a0049d0c
|
#include <OdeLinearSystemSolver.hpp>
Public Member Functions | |
OdeLinearSystemSolver (unsigned systemSize, double timeStep) | |
~OdeLinearSystemSolver () | |
double | GetTimeStep () |
Mat & | rGetLhsMatrix () |
Vec & | rGetForceVector () |
void | SetInitialConditionVector (Vec initialConditionsVector) |
Vec | SolveOneTimeStep () |
Private Attributes | |
double | mTimeStep |
LinearSystem | mLinearSystem |
Vec | mForceVector |
Vec | mCurrentSolution |
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.
systemSize | size of the ODE system |
timeStep | the 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 | ( | ) |
Destructor.
Definition at line 49 of file OdeLinearSystemSolver.cpp.
References PetscTools::Destroy(), mCurrentSolution, and mForceVector.
double OdeLinearSystemSolver::GetTimeStep | ( | ) |
Definition at line 55 of file OdeLinearSystemSolver.cpp.
References mTimeStep.
Vec & OdeLinearSystemSolver::rGetForceVector | ( | ) |
Definition at line 65 of file OdeLinearSystemSolver.cpp.
References mForceVector.
Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().
Mat & OdeLinearSystemSolver::rGetLhsMatrix | ( | ) |
Definition at line 60 of file OdeLinearSystemSolver.cpp.
References mLinearSystem, and LinearSystem::rGetLhsMatrix().
Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().
void OdeLinearSystemSolver::SetInitialConditionVector | ( | Vec | initialConditionsVector | ) |
Set the initial conditions.
initialConditionsVector | the initial condition |
Definition at line 70 of file OdeLinearSystemSolver.cpp.
References mCurrentSolution.
Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().
Vec OdeLinearSystemSolver::SolveOneTimeStep | ( | ) |
Solve the ODE system over one time step.
Definition at line 75 of file OdeLinearSystemSolver.cpp.
References PetscVecTools::AddScaledVector(), PetscTools::Destroy(), mCurrentSolution, mForceVector, mLinearSystem, mTimeStep, LinearSystem::rGetLhsMatrix(), LinearSystem::rGetRhsVector(), and LinearSystem::Solve().
Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().
|
private |
Solution at current timestep.
Definition at line 70 of file OdeLinearSystemSolver.hpp.
Referenced by OdeLinearSystemSolver(), ~OdeLinearSystemSolver(), SetInitialConditionVector(), and SolveOneTimeStep().
|
private |
Force vector (f in M dr/dt = f).
Definition at line 67 of file OdeLinearSystemSolver.hpp.
Referenced by OdeLinearSystemSolver(), ~OdeLinearSystemSolver(), rGetForceVector(), and SolveOneTimeStep().
|
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().
|
private |
Timestep for solver.
Definition at line 61 of file OdeLinearSystemSolver.hpp.
Referenced by OdeLinearSystemSolver(), GetTimeStep(), and SolveOneTimeStep().