![]() |
Chaste
Release::3.4
|
#include <OdeLinearSystemSolver.hpp>
Collaboration diagram for OdeLinearSystemSolver: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 40 of file OdeLinearSystemSolver.cpp.
References PetscTools::CreateAndSetVec(), mCurrentSolution, mForceVector, and mTimeStep.
| OdeLinearSystemSolver::~OdeLinearSystemSolver | ( | ) |
Destructor.
Definition at line 51 of file OdeLinearSystemSolver.cpp.
References PetscTools::Destroy(), mCurrentSolution, and mForceVector.
| double OdeLinearSystemSolver::GetTimeStep | ( | ) |
Definition at line 57 of file OdeLinearSystemSolver.cpp.
References mTimeStep.
| Vec & OdeLinearSystemSolver::rGetForceVector | ( | ) |
Definition at line 67 of file OdeLinearSystemSolver.cpp.
References mForceVector.
Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::UpdateNodeLocations().
| Mat & OdeLinearSystemSolver::rGetLhsMatrix | ( | ) |
Definition at line 62 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 72 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 77 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(), SetInitialConditionVector(), SolveOneTimeStep(), and ~OdeLinearSystemSolver().
|
private |
Force vector (f in M dr/dt = f).
Definition at line 67 of file OdeLinearSystemSolver.hpp.
Referenced by OdeLinearSystemSolver(), rGetForceVector(), SolveOneTimeStep(), and ~OdeLinearSystemSolver().
|
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 GetTimeStep(), OdeLinearSystemSolver(), and SolveOneTimeStep().