diff --git a/src/BeamAdapter/component/mapping/BeamLengthMapping.h b/src/BeamAdapter/component/mapping/BeamLengthMapping.h index 6f9f16b32..43b41f09f 100644 --- a/src/BeamAdapter/component/mapping/BeamLengthMapping.h +++ b/src/BeamAdapter/component/mapping/BeamLengthMapping.h @@ -156,11 +156,6 @@ class BeamLengthMapping : public Mapping virtual void applyJ(const MechanicalParams *mparams, Data& out, const Data& in) override; virtual void applyJT(const MechanicalParams *mparams, Data& out, const Data& in) override; virtual void applyJT(const ConstraintParams *cparams, Data& out, const Data& in) override; - virtual void applyDJT(const MechanicalParams* mparams, core::MultiVecDerivId parentDfId, core::ConstMultiVecDerivId childDfId) override; - - // interface of baseMapping.h - virtual void updateK( const MechanicalParams* /*mparams*/, core::ConstMultiVecDerivId /*outForce*/ ) override; - const linearalgebra::BaseMatrix* getK() override; @@ -179,6 +174,12 @@ class BeamLengthMapping : public Mapping /* Vec3 F0_buf, F1_buf, F2_buf, F3_buf; // Used for debug */ SparseKMatrixEigen K_geom; + virtual void doApplyDJT(const MechanicalParams* mparams, core::MultiVecDerivId parentDfId, core::ConstMultiVecDerivId childDfId) override; + + // interface of baseMapping.h + virtual void doUpdateK( const MechanicalParams* /*mparams*/, core::ConstMultiVecDerivId /*outForce*/ ) override; + const linearalgebra::BaseMatrix* doGetK() override; + // used for applyJ on one beam void computeJSpline(Real &dlength, const Vec3& P0, const Vec3& P1, const Vec3& P2, const Vec3& P3, const Vec3& dP0, const Vec3& dP1, const Vec3& dP2, const Vec3& dP3); diff --git a/src/BeamAdapter/component/mapping/BeamLengthMapping.inl b/src/BeamAdapter/component/mapping/BeamLengthMapping.inl index 83b219f5a..f716cb4f4 100644 --- a/src/BeamAdapter/component/mapping/BeamLengthMapping.inl +++ b/src/BeamAdapter/component/mapping/BeamLengthMapping.inl @@ -419,7 +419,7 @@ void BeamLengthMapping< TIn, TOut>::applyJT(const core::ConstraintParams* cparam /// BeamLengthMapping::applyDJT(MultiVecDerivId parentDfId, const ConstMultiVecDerivId childDfId) /// this function computes the additional stiffness force created on the parents by the force on the child (due to mapping non-linearity) template -void BeamLengthMapping< TIn, TOut>::applyDJT(const MechanicalParams* mparams, core::MultiVecDerivId parentDfId, core::ConstMultiVecDerivId childDfId) +void BeamLengthMapping< TIn, TOut>::doApplyDJT(const MechanicalParams* mparams, core::MultiVecDerivId parentDfId, core::ConstMultiVecDerivId childDfId) { const unsigned& geometricStiffness = d_geometricStiffness.getValue(); if( !geometricStiffness ) return; @@ -579,7 +579,7 @@ void BeamLengthMapping< TIn, TOut>::applyDJT(const MechanicalParams* mparams, co } template -void BeamLengthMapping::updateK(const core::MechanicalParams* mparams, core::ConstMultiVecDerivId childForceId ) +void BeamLengthMapping::doUpdateK(const core::MechanicalParams* mparams, core::ConstMultiVecDerivId childForceId ) { SOFA_UNUSED(mparams); const unsigned& geometricStiffness = d_geometricStiffness.getValue(); @@ -761,7 +761,7 @@ void BeamLengthMapping::updateK(const core::MechanicalParams* mparams template -const sofa::linearalgebra::BaseMatrix* BeamLengthMapping::getK() +const sofa::linearalgebra::BaseMatrix* BeamLengthMapping::doGetK() { return &K_geom; } diff --git a/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.h b/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.h index 070b13580..5dca57cb6 100644 --- a/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.h +++ b/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.h @@ -144,20 +144,14 @@ class SOFA_BEAMADAPTER_API BeamProjectionDifferenceMultiMapping : public sofa::c const sofa::type::vector< In2DataVecDeriv*>& dataVecOut2RootForce, const sofa::type::vector& dataVecInForce) override; - void applyDJT(const sofa::core::MechanicalParams* mparams, - sofa::core::MultiVecDerivId inForce, - sofa::core::ConstMultiVecDerivId outForce) override; - virtual void applyJT( const sofa::core::ConstraintParams* cparams , const sofa::type::vector< In1DataMatrixDeriv*>& dataMatOut1Const , const sofa::type::vector< In2DataMatrixDeriv*>& dataMatOut2Const , const sofa::type::vector& dataMatInConst) override; - virtual const sofa::type::vector* getJs() override; void computeProjection(const In1VecCoord &xFrom, const In2VecCoord &xTo, const bool &updateOrientation); -public: sofa::Data> d_indices; sofa::Data> d_directions; sofa::Data d_updateProjectionPosition; @@ -171,6 +165,13 @@ class SOFA_BEAMADAPTER_API BeamProjectionDifferenceMultiMapping : public sofa::c using sofa::core::Multi2Mapping::d_componentState ; protected: + + void doApplyDJT(const sofa::core::MechanicalParams* mparams, + sofa::core::MultiVecDerivId inForce, + sofa::core::ConstMultiVecDerivId outForce) override; + virtual const sofa::type::vector* doGetJs() override; + + sofa::core::State* m_fromModel1; sofa::core::State* m_fromModel2; sofa::core::State* m_toModel; diff --git a/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.inl b/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.inl index 4b46b032b..c1b0250f0 100644 --- a/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.inl +++ b/src/BeamAdapter/component/mapping/BeamProjectionDifferenceMultiMapping.inl @@ -443,7 +443,7 @@ void BeamProjectionDifferenceMultiMapping::applyJT( const sofa } template -void BeamProjectionDifferenceMultiMapping::applyDJT(const sofa::core::MechanicalParams* mparams, +void BeamProjectionDifferenceMultiMapping::doApplyDJT(const sofa::core::MechanicalParams* mparams, sofa::core::MultiVecDerivId inForce, sofa::core::ConstMultiVecDerivId outForce) { @@ -453,7 +453,7 @@ void BeamProjectionDifferenceMultiMapping::applyDJT(const sofa } template -const sofa::type::vector* BeamProjectionDifferenceMultiMapping::getJs() +const sofa::type::vector* BeamProjectionDifferenceMultiMapping::doGetJs() { const OutVecCoord& out = m_toModel->read(sofa::core::vec_id::read_access::position)->getValue(); const In1VecCoord& in1 = m_fromModel1->read(sofa::core::vec_id::read_access::position)->getValue();