3 #include <SofaCaribou/Ode/NewtonRaphsonSolver.h>
4 #include <SofaBaseLinearSolver/DefaultMultiMatrixAccessor.h>
5 #include <sofa/core/objectmodel/Data.h>
7 namespace SofaCaribou::ode {
98 using Data = sofa::core::objectmodel::Data<T>;
102 void solve (
const sofa::core::ExecParams* params, SReal dt, sofa::core::MultiVecCoordId x_id, sofa::core::MultiVecDerivId v_id)
override;
106 void assemble_rhs_vector(
const sofa::core::MechanicalParams & mechanical_parameters,
107 const sofa::core::behavior::MultiMatrixAccessor & matrix_accessor,
108 sofa::core::MultiVecDerivId & f_id,
109 sofa::defaulttype::BaseVector * f)
final;
112 void assemble_system_matrix(
const sofa::core::MechanicalParams & mechanical_parameters,
113 sofa::component::linearsolver::DefaultMultiMatrixAccessor & matrix_accessor,
114 sofa::defaulttype::BaseMatrix * A)
final;
117 void propagate_position_increment(
const sofa::core::MechanicalParams & mechanical_parameters,
118 const sofa::core::behavior::MultiMatrixAccessor & matrix_accessor,
119 const sofa::defaulttype::BaseVector * dx,
120 sofa::core::MultiVecCoordId & x_id,
121 sofa::core::MultiVecDerivId & v_id,
122 sofa::core::MultiVecDerivId & dx_id)
final;
125 Data<double> d_rayleigh_stiffness;
126 Data<double> d_rayleigh_mass;
131 sofa::core::MultiVecCoordId p_previous_x_id;
134 sofa::core::MultiVecDerivId p_previous_v_id;
137 sofa::core::MultiVecDerivId p_a_id;