|
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)\))
1.8.12