Caribou
StaticODESolver.h
1 #pragma once
2 
3 #include <SofaCaribou/Ode/NewtonRaphsonSolver.h>
4 #include <SofaBaseLinearSolver/DefaultMultiMatrixAccessor.h>
5 #include <sofa/core/objectmodel/Data.h>
6 
7 namespace SofaCaribou::ode {
8 
37 public:
39 
40  template <typename T>
41  using Data = sofa::core::objectmodel::Data<T>;
42 
43 private:
44 
46  void assemble_rhs_vector(const sofa::core::MechanicalParams & mechanical_parameters,
47  const sofa::core::behavior::MultiMatrixAccessor & matrix_accessor,
48  sofa::core::MultiVecDerivId & f_id,
49  sofa::defaulttype::BaseVector * f) final;
50 
52  void assemble_system_matrix(const sofa::core::MechanicalParams & mechanical_parameters,
53  sofa::component::linearsolver::DefaultMultiMatrixAccessor & matrix_accessor,
54  sofa::defaulttype::BaseMatrix * A) final;
55 
57  void propagate_position_increment(const sofa::core::MechanicalParams & mechanical_parameters,
58  const sofa::core::behavior::MultiMatrixAccessor & matrix_accessor,
59  const sofa::defaulttype::BaseVector * dx,
60  sofa::core::MultiVecCoordId & x_id,
61  sofa::core::MultiVecDerivId & v_id,
62  sofa::core::MultiVecDerivId & dx_id) final;
63 };
64 
65 } // namespace SofaCaribou::ode
SofaCaribou::ode::StaticODESolver
Implementation of a static ODE solver compatible with non-linear materials.
Definition: StaticODESolver.h:36
SofaCaribou::ode::NewtonRaphsonSolver
This class implements a generic Newton-Raphson solver for SOFA.
Definition: NewtonRaphsonSolver.h:40