opensurgsim
Public Member Functions | List of all members
SurgSim::Math::OdeSolverLinearEulerExplicit Class Reference

Linear Version of the Euler Explicit ode solver This solver assumes that the system is linear, ie that Mass, Damping, and Stiffness matrices do not change. More...

#include <OdeSolverLinearEulerExplicit.h>

Inheritance diagram for SurgSim::Math::OdeSolverLinearEulerExplicit:
SurgSim::Math::OdeSolverEulerExplicit SurgSim::Math::OdeSolver

Public Member Functions

 OdeSolverLinearEulerExplicit (OdeEquation *equation)
 Constructor. More...
 
void solve (double dt, const OdeState &currentState, OdeState *newState, bool computeCompliance=true) override
 The parameter computeCompliance is irrelevant for any Linear solver as it is a constant matrix. More...
 
- Public Member Functions inherited from SurgSim::Math::OdeSolverEulerExplicit
 OdeSolverEulerExplicit (OdeEquation *equation)
 Constructor. More...
 
- Public Member Functions inherited from SurgSim::Math::OdeSolver
 OdeSolver (OdeEquation *equation)
 Constructor. More...
 
virtual ~OdeSolver ()
 Virtual destructor.
 
const std::string getName () const
 Gets the solver's name. More...
 
void setLinearSolver (std::shared_ptr< LinearSparseSolveAndInverse > linearSolver)
 Sets the specialized linear solver to use with this Ode solver. More...
 
std::shared_ptr< LinearSparseSolveAndInversegetLinearSolver () const
 Gets the specialized linear solver used with this Ode solver. More...
 
void computeMatrices (double dt, const OdeState &state, bool computeCompliance=true)
 Computes the system and compliance matrices for a given state. More...
 
const SparseMatrixgetSystemMatrix () const
 Queries the current system matrix. More...
 
const MatrixgetComplianceMatrix () const
 

Additional Inherited Members

- Protected Member Functions inherited from SurgSim::Math::OdeSolverEulerExplicit
void assembleLinearSystem (double dt, const OdeState &state, const OdeState &newState, bool computeRHS=true) override
 Assemble the linear system (A.x=b) to be solved for the state and new states (useful for certain ode solver). More...
 
- Protected Member Functions inherited from SurgSim::Math::OdeSolver
void computeComplianceMatrixFromSystemMatrix (const OdeState &state)
 Helper method computing the compliance matrix from the system matrix and setting the boundary conditions. More...
 
- Protected Attributes inherited from SurgSim::Math::OdeSolver
std::string m_name
 Name for this solver. More...
 
OdeEquationm_equation
 The ode equation (API providing the necessary evaluation methods and the initial state)
 
std::shared_ptr< LinearSparseSolveAndInversem_linearSolver
 The specialized linear solver to use when solving the ode equation.
 
SparseMatrix m_systemMatrix
 Linear system matrix (can be M, K, combination of MDK depending on the solver), including boundary conditions. More...
 
Vector m_solution
 Linear system solution and rhs vectors (including boundary conditions)
 
Vector m_rhs
 
Matrix m_complianceMatrix
 Compliance matrix which is the inverse of the system matrix, including boundary conditions.
 

Detailed Description

Linear Version of the Euler Explicit ode solver This solver assumes that the system is linear, ie that Mass, Damping, and Stiffness matrices do not change.

Constructor & Destructor Documentation

§ OdeSolverLinearEulerExplicit()

SurgSim::Math::OdeSolverLinearEulerExplicit::OdeSolverLinearEulerExplicit ( OdeEquation equation)
explicit

Constructor.

Parameters
equationThe ode equation to be solved

Member Function Documentation

§ solve()

void SurgSim::Math::OdeSolverLinearEulerExplicit::solve ( double  dt,
const OdeState currentState,
OdeState newState,
bool  computeCompliance = true 
)
overridevirtual

The parameter computeCompliance is irrelevant for any Linear solver as it is a constant matrix.

It will be precomputed on the first call and use in the following calls, no matter what the parameter value is.

Reimplemented from SurgSim::Math::OdeSolverEulerExplicit.


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