opensurgsim
|
Ode equation of 2nd order of the form \(M(x,v).a = F(x, v)\) with \((x0, v0)\) for initial conditions and a set of boundary conditions. More...
#include <OdeEquation.h>
Public Member Functions | |
virtual | ~OdeEquation () |
Virtual destructor. | |
const std::shared_ptr< OdeState > | getInitialState () const |
Retrieves the ode initial conditions \((x0, v0)\) (i.e the initial state) More... | |
virtual Matrix | applyCompliance (const OdeState &state, const Matrix &b)=0 |
Calculate the product \(C.b\) where \(C\) is the compliance matrix with boundary conditions applied. More... | |
virtual void | updateFMDK (const OdeState &state, int options) |
Update the OdeEquation (and support data) based on the given state. More... | |
const Vector & | getF () const |
const SparseMatrix & | getM () const |
const SparseMatrix & | getD () const |
const SparseMatrix & | getK () const |
bool | hasF () const |
bool | hasM () const |
bool | hasK () const |
bool | hasD () const |
Protected Member Functions | |
virtual void | computeF (const OdeState &state)=0 |
Evaluation of the RHS function \(f(x, v)\) for a given state. More... | |
virtual void | computeM (const OdeState &state)=0 |
Evaluation of the LHS matrix \(M(x,v)\) for a given state. More... | |
virtual void | computeD (const OdeState &state)=0 |
Evaluation of \(D = -\frac{\partial f}{\partial v}(x,v)\) for a given state. More... | |
virtual void | computeK (const OdeState &state)=0 |
Evaluation of \(K = -\frac{\partial f}{\partial x}(x,v)\) for a given state. More... | |
virtual void | computeFMDK (const OdeState &state)=0 |
Evaluation of \(f(x,v)\), \(M(x,v)\), \(D = -\frac{\partial f}{\partial v}(x,v)\) and \(K = -\frac{\partial f}{\partial x}(x,v)\). More... | |
Protected Attributes | |
std::shared_ptr< OdeState > | m_initialState |
The initial state (which defines the ODE initial conditions \((x0, v0)\)) More... | |
unsigned int | m_initState |
Vector | m_f |
The vector containing \(f(x, v)\). | |
SparseMatrix | m_M |
The matrix \(M(x,v)\). | |
SparseMatrix | m_D |
The The matrix \(D = -\frac{\partial f}{\partial v}(x,v)\). | |
SparseMatrix | m_K |
The The matrix \(K = -\frac{\partial f}{\partial x}(x,v)\). | |
Ode equation of 2nd order of the form \(M(x,v).a = F(x, v)\) with \((x0, v0)\) for initial conditions and a set of boundary conditions.
The problem is called a Boundary Value Problem (BVP). This ode equation is solved as an ode of order 1 by defining the state vector \(y = \left(\begin{array}{c}x\\v\end{array}\right)\):
\[ y' = \left(\begin{array}{c} x' \\ v' \end{array}\right) = \left(\begin{array}{c} v \\ M(x, v)^{-1}.f(t, x, v) \end{array}\right) \]
|
pure virtual |
Calculate the product \(C.b\) where \(C\) is the compliance matrix with boundary conditions applied.
Note that this can be rewritten as \((B^T)(M^{-1})(B.b) = (B^T)((M^{-1})(B.b)) = x\), where \((M^{-1})(B.b) = y\) is simply the solution to \(M.y = B.b\) and \(B^T.y = x\).
state | \((x, v)\) the current position and velocity to evaluate the various terms with |
b | The input matrix |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Math::MassPointsForStatic, SurgSim::Physics::FemRepresentation, SurgSim::Physics::DeformableRepresentation, and SurgSim::Math::MassPoint.
|
protectedpure virtual |
Evaluation of \(D = -\frac{\partial f}{\partial v}(x,v)\) for a given state.
state | \((x, v)\) the current position and velocity to evaluate the Jacobian matrix with |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Physics::MockDeformableRepresentation, SurgSim::Physics::FemRepresentation, SurgSim::Math::MassPointsForStatic, SurgSim::Physics::MassSpringRepresentation, and SurgSim::Math::MassPoint.
|
protectedpure virtual |
Evaluation of the RHS function \(f(x, v)\) for a given state.
state | \((x, v)\) the current position and velocity to evaluate the function \(f(x,v)\) with |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Physics::MockDeformableRepresentation, SurgSim::Physics::FemRepresentation, SurgSim::Physics::MassSpringRepresentation, SurgSim::Math::MassPointsForStatic, and SurgSim::Math::MassPoint.
|
protectedpure virtual |
Evaluation of \(f(x,v)\), \(M(x,v)\), \(D = -\frac{\partial f}{\partial v}(x,v)\) and \(K = -\frac{\partial f}{\partial x}(x,v)\).
When all the terms are needed, this method can perform optimization in evaluating everything together
state | \((x, v)\) the current position and velocity to evaluate the various terms with |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Math::MassPointsForStatic, SurgSim::Physics::FemRepresentation, SurgSim::Physics::MockDeformableRepresentation, SurgSim::Physics::MassSpringRepresentation, and SurgSim::Math::MassPoint.
|
protectedpure virtual |
Evaluation of \(K = -\frac{\partial f}{\partial x}(x,v)\) for a given state.
state | \((x, v)\) the current position and velocity to evaluate the Jacobian matrix with |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Physics::FemRepresentation, SurgSim::Physics::MockDeformableRepresentation, SurgSim::Math::MassPointsForStatic, SurgSim::Physics::MassSpringRepresentation, and SurgSim::Math::MassPoint.
|
protectedpure virtual |
Evaluation of the LHS matrix \(M(x,v)\) for a given state.
state | \((x, v)\) the current position and velocity to evaluate the matrix \(M(x,v)\) with |
Implemented in SurgSim::Math::OdeComplexNonLinear, SurgSim::Physics::MockDeformableRepresentation, SurgSim::Physics::FemRepresentation, SurgSim::Physics::MassSpringRepresentation, SurgSim::Math::MassPointsForStatic, and SurgSim::Math::MassPoint.
const SparseMatrix & SurgSim::Math::OdeEquation::getD | ( | ) | const |
const Vector & SurgSim::Math::OdeEquation::getF | ( | ) | const |
const std::shared_ptr< OdeState > SurgSim::Math::OdeEquation::getInitialState | ( | ) | const |
Retrieves the ode initial conditions \((x0, v0)\) (i.e the initial state)
const SparseMatrix & SurgSim::Math::OdeEquation::getK | ( | ) | const |
const SparseMatrix & SurgSim::Math::OdeEquation::getM | ( | ) | const |
|
virtual |
Update the OdeEquation (and support data) based on the given state.
state | \((x, v)\) the current position and velocity to evaluate the various terms with |
options | Flag to specify which of F, M, D, K needs to be updated. |
Reimplemented in SurgSim::Physics::FemRepresentation.
|
protected |
The initial state (which defines the ODE initial conditions \((x0, v0)\))