Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@ class BarycentricMapping : public LinearMapping<TIn, TOut>
void applyJT(const core::MechanicalParams *mparams, Data< typename In::VecDeriv >& out, const Data< typename Out::VecDeriv >& in) override;
void applyJT(const core::ConstraintParams *cparams, Data< typename In::MatrixDeriv >& out, const Data< typename Out::MatrixDeriv >& in) override;

const sofa::linearalgebra::BaseMatrix* getJ() override;
virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* getJs() override;
void draw(const core::visual::VisualParams* vparams) override;
void handleTopologyChange(core::topology::Topology* t) override;

Expand All @@ -94,6 +92,10 @@ class BarycentricMapping : public LinearMapping<TIn, TOut>

~BarycentricMapping() override;


const sofa::linearalgebra::BaseMatrix* doGetJ() override;
virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* doGetJs() override;

linearalgebra::BaseMatrix *internalMatrix; ///< internally store a matrix for getJ/Compliant
type::vector< linearalgebra::BaseMatrix* > js;
private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ void BarycentricMapping<TIn, TOut>::applyJT (const core::MechanicalParams * mpar


template <class TIn, class TOut>
const sofa::linearalgebra::BaseMatrix* BarycentricMapping<TIn, TOut>::getJ()
const sofa::linearalgebra::BaseMatrix* BarycentricMapping<TIn, TOut>::doGetJ()
{
if (d_mapper!=nullptr )
{
Expand Down Expand Up @@ -473,10 +473,10 @@ void BarycentricMapperTriangleSetTopology<In,Out>::handleTopologyChange(core::to
#endif // BARYCENTRIC_MAPPER_TOPOCHANGE_REINIT

template<class TIn, class TOut>
const type::vector< linearalgebra::BaseMatrix*>* BarycentricMapping<TIn, TOut>::getJs()
const type::vector< linearalgebra::BaseMatrix*>* BarycentricMapping<TIn, TOut>::doGetJs()
{
typedef typename Mapper::MatrixType mat_type;
const sofa::linearalgebra::BaseMatrix* matJ = getJ();
const sofa::linearalgebra::BaseMatrix* matJ = core::BaseMapping::getJ();

const auto * mat = dynamic_cast<const mat_type*>(matJ);
if(mat==nullptr)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,11 @@ class BeamLinearMapping : public LinearMapping<TIn, TOut>

void applyJT(const core::ConstraintParams *cparams, Data< typename In::MatrixDeriv >& out, const Data< typename Out::MatrixDeriv >& in) override;

const sofa::linearalgebra::BaseMatrix* getJ() override;

void draw(const core::visual::VisualParams* vparams) override;

protected:
const sofa::linearalgebra::BaseMatrix* doGetJ() override;

};


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ void BeamLinearMapping<TIn, TOut>::draw(const core::visual::VisualParams* vparam


template <class TIn, class TOut>
const sofa::linearalgebra::BaseMatrix* BeamLinearMapping<TIn, TOut>::getJ()
const sofa::linearalgebra::BaseMatrix* BeamLinearMapping<TIn, TOut>::doGetJ()
{

const unsigned int inStateSize = this->fromModel->getSize();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ class CenterOfMassMulti2Mapping : public LinearMulti2Mapping<TIn1, TIn2, TOut>
msg_warning() << "This object only support Direct Solving but an Indirect Solver in the scene is calling method applyJT(constraint) which is not implemented. This will produce un-expected behavior.";
}

void applyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}

void init() override;
void draw(const core::visual::VisualParams* vparams) override;
Expand All @@ -114,6 +113,9 @@ class CenterOfMassMulti2Mapping : public LinearMulti2Mapping<TIn1, TIn2, TOut>
virtual ~CenterOfMassMulti2Mapping()
{}

void doApplyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}


type::vector<const core::behavior::BaseMass*> inputBaseMass1;
type::vector<In1Coord> inputWeightedCOM1;
type::vector<In1Deriv> inputWeightedForce1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ class CenterOfMassMultiMapping : public LinearMultiMapping<TIn, TOut>
//virtual void applyJ(const type::vector< OutVecDeriv*>& outDeriv, const type::vector<const InVecDeriv*>& inDeriv);
//virtual void applyJT( const type::vector<InVecDeriv*>& outDeriv , const type::vector<const OutVecDeriv*>& inDeriv );

void applyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}

void init() override;
void draw(const core::visual::VisualParams* vparams) override;
Expand All @@ -98,6 +97,9 @@ class CenterOfMassMultiMapping : public LinearMultiMapping<TIn, TOut>

virtual ~CenterOfMassMultiMapping() {}

void doApplyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}


type::vector<const core::behavior::BaseMass*> inputBaseMass;
InVecCoord inputWeightedCOM;
InVecDeriv inputWeightedForce;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ class DeformableOnRigidFrameMapping : public LinearMulti2Mapping<TIn, TInRoot, T
const type::vector< InRootDataVecDeriv*>& dataVecOutRootForce,
const type::vector<const OutDataVecDeriv*>& dataVecInForce) override;

void applyDJT(const core::MechanicalParams* mparams, core::MultiVecDerivId inForce, core::ConstMultiVecDerivId outForce) override;
void doApplyDJT(const core::MechanicalParams* mparams, core::MultiVecDerivId inForce, core::ConstMultiVecDerivId outForce) override;


//ApplyJT Constraint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ void DeformableOnRigidFrameMapping<TIn, TInRoot, TOut>::applyJT(
}

template <class TIn, class TInRoot, class TOut>
void DeformableOnRigidFrameMapping<TIn, TInRoot, TOut>::applyDJT(const core::MechanicalParams* mparams, core::MultiVecDerivId inForce, core::ConstMultiVecDerivId outForce)
void DeformableOnRigidFrameMapping<TIn, TInRoot, TOut>::doApplyDJT(const core::MechanicalParams* mparams, core::MultiVecDerivId inForce, core::ConstMultiVecDerivId outForce)
{
SOFA_UNUSED(mparams);
SOFA_UNUSED(inForce);
Expand Down Expand Up @@ -486,9 +486,9 @@ void DeformableOnRigidFrameMapping<TIn, TInRoot, TOut>::handleTopologyChange(cor
{
case core::topology::TRIANGLESADDED: ///< To notify the end for the current sequence of topological change events
{
core::Multi2Mapping<TIn, TInRoot, TOut>::apply(core::mechanicalparams::defaultInstance(), core::vec_id::write_access::restPosition, core::vec_id::read_access::restPosition);
core::BaseMapping::apply(core::mechanicalparams::defaultInstance(), core::vec_id::write_access::restPosition, core::vec_id::read_access::restPosition);
if(this->f_applyRestPosition.getValue() )
core::Multi2Mapping<TIn, TInRoot, TOut>::apply(core::mechanicalparams::defaultInstance(), core::vec_id::write_access::position, core::vec_id::read_access::position);
core::BaseMapping::apply(core::mechanicalparams::defaultInstance(), core::vec_id::write_access::position, core::vec_id::read_access::position);
break;
}
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ class DistanceToPlaneMapping : public LinearMapping<TIn, defaulttype::Vec1dTypes

void applyJT(const core::ConstraintParams *cparams, Data<MatrixDeriv_t<TIn>>& out, const Data<MatrixDeriv_t<TOut>>& in) override;

const linearalgebra::BaseMatrix* getJ() override;

void handleTopologyChange() override;

Expand All @@ -64,6 +63,7 @@ class DistanceToPlaneMapping : public LinearMapping<TIn, defaulttype::Vec1dTypes

DistanceToPlaneMapping();
virtual ~DistanceToPlaneMapping() {};
const linearalgebra::BaseMatrix* doGetJ() override;

linearalgebra::EigenSparseMatrix<TIn, TOut> J;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ void DistanceToPlaneMapping<TIn>::applyJT(const core::ConstraintParams *cparams,
}

template <class TIn>
const linearalgebra::BaseMatrix* DistanceToPlaneMapping<TIn>::getJ()
const linearalgebra::BaseMatrix* DistanceToPlaneMapping<TIn>::doGetJ()
{
return &J;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ class IdentityMapping : public LinearMapping<TIn, TOut>

void applyJT(const core::ConstraintParams *cparams, Data<InMatrixDeriv>& out, const Data<MatrixDeriv>& in) override;

const sofa::linearalgebra::BaseMatrix* getJ() override;

void handleTopologyChange() override;

Expand All @@ -123,9 +122,9 @@ class IdentityMapping : public LinearMapping<TIn, TOut>
typedef type::vector< linearalgebra::BaseMatrix* > js_type;
js_type Js;

public:
const sofa::linearalgebra::BaseMatrix* doGetJ() override;

const js_type* getJs() override;
const js_type* doGetJs() override;

};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,13 +136,13 @@ void IdentityMapping<TIn, TOut>::handleTopologyChange()
}

template <class TIn, class TOut>
const sofa::linearalgebra::BaseMatrix* IdentityMapping<TIn, TOut>::getJ()
const sofa::linearalgebra::BaseMatrix* IdentityMapping<TIn, TOut>::doGetJ()
{
return &J;
}

template <class TIn, class TOut>
const typename IdentityMapping<TIn, TOut>::js_type* IdentityMapping<TIn, TOut>::getJs()
const typename IdentityMapping<TIn, TOut>::js_type* IdentityMapping<TIn, TOut>::doGetJs()
{
return &Js;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ class IdentityMultiMapping : public LinearMultiMapping<TIn, TOut>
void apply(const core::MechanicalParams* mparams, const type::vector<OutDataVecCoord*>& dataVecOutPos, const type::vector<const InDataVecCoord*>& dataVecInPos) override;
void applyJ(const core::MechanicalParams* mparams, const type::vector<OutDataVecDeriv*>& dataVecOutVel, const type::vector<const InDataVecDeriv*>& dataVecInVel) override;
void applyJT(const core::MechanicalParams* mparams, const type::vector<InDataVecDeriv*>& dataVecOutForce, const type::vector<const OutDataVecDeriv*>& dataVecInForce) override;
void applyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*enforce*/, core::ConstMultiVecDerivId /*outForce*/) override {}
void applyJT( const core::ConstraintParams* cparams, const type::vector< InDataMatrixDeriv* >& dataMatOutConst, const type::vector< const OutDataMatrixDeriv* >& dataMatInConst ) override;

virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* getJs() override;

protected :

IdentityMultiMapping();
virtual ~IdentityMultiMapping();
void doApplyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*enforce*/, core::ConstMultiVecDerivId /*outForce*/) override {}
virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* doGetJs() override;

type::vector<linearalgebra::BaseMatrix*> baseMatrices; ///< Jacobian of the mapping, in a vector

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ void IdentityMultiMapping<TIn, TOut>::applyJT( const core::ConstraintParams* /*c


template <class TIn, class TOut>
const type::vector<sofa::linearalgebra::BaseMatrix*>* IdentityMultiMapping<TIn, TOut>::getJs()
const type::vector<sofa::linearalgebra::BaseMatrix*>* IdentityMultiMapping<TIn, TOut>::doGetJs()
{
return &baseMatrices;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,11 @@ class SkinningMapping : public LinearMapping<TIn, TOut>
protected:
SkinningMapping ();
virtual ~SkinningMapping();


// additional Compliant methods
const type::vector<sofa::linearalgebra::BaseMatrix*>* doGetJs() override;
const sofa::linearalgebra::BaseMatrix* doGetJ() override;

public:
void init() override;
void reinit() override;
Expand All @@ -114,9 +118,6 @@ class SkinningMapping : public LinearMapping<TIn, TOut>
void applyJT( const sofa::core::ConstraintParams* cparams, InDataMatrixDeriv& out, const OutDataMatrixDeriv& in) override;
//void applyJT( typename In::MatrixDeriv& out, const typename Out::MatrixDeriv& in );

// additional Compliant methods
const type::vector<sofa::linearalgebra::BaseMatrix*>* getJs() override;
const sofa::linearalgebra::BaseMatrix* getJ() override;

SeqTriangles triangles; // Topology of toModel (used for weight display)
void draw(const core::visual::VisualParams* vparams) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,13 +328,13 @@ void SkinningMapping<TIn, TOut>::applyJT ( const sofa::core::ConstraintParams* c
}

template <class TIn, class TOut>
const sofa::type::vector<sofa::linearalgebra::BaseMatrix*>* SkinningMapping<TIn, TOut>::getJs()
const sofa::type::vector<sofa::linearalgebra::BaseMatrix*>* SkinningMapping<TIn, TOut>::doGetJs()
{
return new sofa::type::vector<sofa::linearalgebra::BaseMatrix*>(1, (sofa::linearalgebra::BaseMatrix*)&_J);
}

template <class TIn, class TOut>
const sofa::linearalgebra::BaseMatrix* SkinningMapping<TIn, TOut>::getJ()
const sofa::linearalgebra::BaseMatrix* SkinningMapping<TIn, TOut>::doGetJ()
{
return (sofa::linearalgebra::BaseMatrix*)&_J;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,12 @@ class SubsetMapping : public LinearMapping<TIn, TOut>

void applyJT ( const core::ConstraintParams* /*cparams*/, InDataMatrixDeriv& dOut, const OutDataMatrixDeriv& dIn) override;

const sofa::linearalgebra::BaseMatrix* getJ() override;

public:
typedef type::vector< linearalgebra::BaseMatrix* > js_type;
const js_type* getJs() override;

protected:

const sofa::linearalgebra::BaseMatrix* doGetJ() override;
const js_type* doGetJs() override;
typedef linearalgebra::EigenSparseMatrix<In, Out> eigen_type;
eigen_type eigen;
js_type js;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ void SubsetMapping<TIn, TOut>::applyJT ( const core::ConstraintParams * /*cparam
}

template<class TIn, class TOut>
const sofa::linearalgebra::BaseMatrix* SubsetMapping<TIn, TOut>::getJ()
const sofa::linearalgebra::BaseMatrix* SubsetMapping<TIn, TOut>::doGetJ()
{
if (matrixJ.get() == 0 || updateJ)
{
Expand Down Expand Up @@ -322,7 +322,7 @@ const sofa::linearalgebra::BaseMatrix* SubsetMapping<TIn, TOut>::getJ()


template <class TIn, class TOut>
const typename SubsetMapping<TIn, TOut>::js_type* SubsetMapping<TIn, TOut>::getJs()
const typename SubsetMapping<TIn, TOut>::js_type* SubsetMapping<TIn, TOut>::doGetJs()
{
using MatrixIndex = typename MatrixType::Index;
if( !eigen.compressedMatrix.nonZeros() || updateJ ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,20 +56,19 @@ class SubsetMultiMapping : public LinearMultiMapping<TIn, TOut>
void apply(const core::MechanicalParams* mparams, const type::vector<DataVecCoord_t<Out>*>& dataVecOutPos, const type::vector<const DataVecCoord_t<In>*>& dataVecInPos) override;
void applyJ(const core::MechanicalParams* mparams, const type::vector<DataVecDeriv_t<Out>*>& dataVecOutVel, const type::vector<const DataVecDeriv_t<In>*>& dataVecInVel) override;
void applyJT(const core::MechanicalParams* mparams, const type::vector<DataVecDeriv_t<In>*>& dataVecOutForce, const type::vector<const DataVecDeriv_t<Out>*>& dataVecInForce) override;
void applyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}

void applyJT( const core::ConstraintParams* cparams, const type::vector< DataMatrixDeriv_t<In>* >& dataMatOutConst, const type::vector< const DataMatrixDeriv_t<Out>* >& dataMatInConst ) override;

/// Experimental API used to handle multimappings in matrix assembly. Returns pointers to matrices associated with parent states, consistently with getFrom().
virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* getJs() override;

Data< type::vector<unsigned> > d_indexPairs; ///< list of couples (parent index + index in the parent)

protected :

SubsetMultiMapping();
virtual ~SubsetMultiMapping() override;

void doApplyDJT(const core::MechanicalParams* /*mparams*/, core::MultiVecDerivId /*inForce*/, core::ConstMultiVecDerivId /*outForce*/) override {}
/// Experimental API used to handle multimappings in matrix assembly. Returns pointers to matrices associated with parent states, consistently with getFrom().
virtual const type::vector<sofa::linearalgebra::BaseMatrix*>* doGetJs() override;

type::vector<linearalgebra::BaseMatrix*> baseMatrices; ///< Jacobian of the mapping, in a vector

};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ SubsetMultiMapping<TIn, TOut>::~SubsetMultiMapping()
}

template <class TIn, class TOut>
const type::vector<sofa::linearalgebra::BaseMatrix*>* SubsetMultiMapping<TIn, TOut>::getJs()
const type::vector<sofa::linearalgebra::BaseMatrix*>* SubsetMultiMapping<TIn, TOut>::doGetJs()
{
return &baseMatrices;
}
Expand Down
Loading
Loading