Skip to content
6 changes: 3 additions & 3 deletions Sofa/Component/Mass/src/sofa/component/mass/DiagonalMass.h
Original file line number Diff line number Diff line change
Expand Up @@ -311,12 +311,12 @@ class DiagonalMass : public core::behavior::Mass<DataTypes>

/// Add Mass contribution to global Matrix assembling
void addMToMatrix(sofa::linearalgebra::BaseMatrix * mat, SReal mFact, unsigned int &offset) override;
void buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void buildStiffnessMatrix(core::behavior::StiffnessMatrix* /* matrix */) override {}
void buildDampingMatrix(core::behavior::DampingMatrix* /* matrices */) override {}

SReal getElementMass(sofa::Index index) const override;
void getElementMass(sofa::Index, linearalgebra::BaseMatrix *m) const override;
SReal doGetElementMass(sofa::Index index) const override;
void doGetElementMass(sofa::Index, linearalgebra::BaseMatrix *m) const override;

bool isDiagonal() const override {return true;}

Expand Down
6 changes: 3 additions & 3 deletions Sofa/Component/Mass/src/sofa/component/mass/DiagonalMass.inl
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ void DiagonalMass<DataTypes, GeometricalTypes>::addMToMatrix(sofa::linearalgebra
}

template <class DataTypes, class GeometricalTypes>
void DiagonalMass<DataTypes, GeometricalTypes>::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
void DiagonalMass<DataTypes, GeometricalTypes>::doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
const MassVector &masses= d_vertexMass.getValue();
static constexpr auto N = Deriv::total_size;
Expand All @@ -642,15 +642,15 @@ void DiagonalMass<DataTypes, GeometricalTypes>::buildMassMatrix(sofa::core::beha


template <class DataTypes, class GeometricalTypes>
SReal DiagonalMass<DataTypes, GeometricalTypes>::getElementMass(sofa::Index index) const
SReal DiagonalMass<DataTypes, GeometricalTypes>::doGetElementMass(sofa::Index index) const
{
return SReal(d_vertexMass.getValue()[index]);
}


//TODO: special case for Rigid Mass
template <class DataTypes, class GeometricalTypes>
void DiagonalMass<DataTypes, GeometricalTypes>::getElementMass(sofa::Index index, linearalgebra::BaseMatrix *m) const
void DiagonalMass<DataTypes, GeometricalTypes>::doGetElementMass(sofa::Index index, linearalgebra::BaseMatrix *m) const
{
static const linearalgebra::BaseMatrix::Index dimension = linearalgebra::BaseMatrix::Index(defaulttype::DataTypeInfo<Deriv>::size());
if (m->rowSize() != dimension || m->colSize() != dimension) m->resize(dimension,dimension);
Expand Down
6 changes: 3 additions & 3 deletions Sofa/Component/Mass/src/sofa/component/mass/MeshMatrixMass.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,12 @@ class MeshMatrixMass : public core::behavior::Mass<DataTypes>

/// Add Mass contribution to global Matrix assembling
void addMToMatrix(sofa::linearalgebra::BaseMatrix * mat, SReal mFact, unsigned int &offset) override;
void buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void buildStiffnessMatrix(core::behavior::StiffnessMatrix* /* matrix */) override {}
void buildDampingMatrix(core::behavior::DampingMatrix* /* matrices */) override {}

SReal getElementMass(Index index) const override;
void getElementMass(Index index, linearalgebra::BaseMatrix *m) const override;
SReal doGetElementMass(Index index) const override;
void doGetElementMass(Index index, linearalgebra::BaseMatrix *m) const override;

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2271,7 +2271,7 @@ void MeshMatrixMass<DataTypes, GeometricalTypes>::addMToMatrix(sofa::linearalgeb
}

template <class DataTypes, class GeometricalTypes>
void MeshMatrixMass<DataTypes, GeometricalTypes>::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
void MeshMatrixMass<DataTypes, GeometricalTypes>::doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
const MassVector &vertexMass= d_vertexMass.getValue();
const MassVector &edgeMass= d_edgeMass.getValue();
Expand Down Expand Up @@ -2312,7 +2312,7 @@ void MeshMatrixMass<DataTypes, GeometricalTypes>::buildMassMatrix(sofa::core::be


template <class DataTypes, class GeometricalTypes>
SReal MeshMatrixMass<DataTypes, GeometricalTypes>::getElementMass(Index index) const
SReal MeshMatrixMass<DataTypes, GeometricalTypes>::doGetElementMass(Index index) const
{
const auto &vertexMass= d_vertexMass.getValue();
const SReal mass = vertexMass[index] * m_massLumpingCoeff;
Expand All @@ -2323,7 +2323,7 @@ SReal MeshMatrixMass<DataTypes, GeometricalTypes>::getElementMass(Index index) c

//TODO: special case for Rigid Mass
template <class DataTypes, class GeometricalTypes>
void MeshMatrixMass<DataTypes, GeometricalTypes>::getElementMass(Index index, linearalgebra::BaseMatrix *m) const
void MeshMatrixMass<DataTypes, GeometricalTypes>::doGetElementMass(Index index, linearalgebra::BaseMatrix *m) const
{
static const linearalgebra::BaseMatrix::Index dimension = linearalgebra::BaseMatrix::Index(defaulttype::DataTypeInfo<Deriv>::size());
if (m->rowSize() != dimension || m->colSize() != dimension) m->resize(dimension,dimension);
Expand Down
6 changes: 3 additions & 3 deletions Sofa/Component/Mass/src/sofa/component/mass/UniformMass.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,12 @@ class UniformMass : public core::behavior::Mass<DataTypes>
void addGravityToV(const core::MechanicalParams* mparams, DataVecDeriv& d_v) override;

void addMToMatrix(sofa::linearalgebra::BaseMatrix * mat, SReal mFact, unsigned int &offset) override; /// Add Mass contribution to global Matrix assembling
void buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void buildStiffnessMatrix(core::behavior::StiffnessMatrix* /* matrix */) override {}
void buildDampingMatrix(core::behavior::DampingMatrix* /* matrices */) override {}

SReal getElementMass(sofa::Index index) const override;
void getElementMass(sofa::Index index, linearalgebra::BaseMatrix *m) const override;
SReal doGetElementMass(sofa::Index index) const override;
void doGetElementMass(sofa::Index index, linearalgebra::BaseMatrix *m) const override;

bool isDiagonal() const override {return true;}

Expand Down
6 changes: 3 additions & 3 deletions Sofa/Component/Mass/src/sofa/component/mass/UniformMass.inl
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,7 @@ void UniformMass<DataTypes>::addMToMatrix (sofa::linearalgebra::BaseMatrix * mat
}

template <class DataTypes>
void UniformMass<DataTypes>::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
void UniformMass<DataTypes>::doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
if (!this->isComponentStateValid())
{
Expand All @@ -594,14 +594,14 @@ void UniformMass<DataTypes>::buildMassMatrix(sofa::core::behavior::MassMatrixAcc


template <class DataTypes>
SReal UniformMass<DataTypes>::getElementMass (sofa::Index ) const
SReal UniformMass<DataTypes>::doGetElementMass (sofa::Index ) const
{
return (SReal ( d_vertexMass.getValue() ));
}


template <class DataTypes>
void UniformMass<DataTypes>::getElementMass (sofa::Index index, BaseMatrix *m ) const
void UniformMass<DataTypes>::doGetElementMass (sofa::Index index, BaseMatrix *m ) const
{
SOFA_UNUSED(index);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class HexahedralFEMForceFieldAndMass : virtual public sofa::core::behavior::Mass

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

SReal getElementMass(sofa::Index index) const override;
SReal doGetElementMass(sofa::Index index) const override;

void setDensity(Real d) {d_density.setValue(d );}
Real getDensity() {return d_density.getValue();}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ void HexahedralFEMForceFieldAndMass<DataTypes>::addDForce(const core::Mechanical


template<class DataTypes>
SReal HexahedralFEMForceFieldAndMass<DataTypes>::getElementMass(sofa::Index /*index*/) const
SReal HexahedralFEMForceFieldAndMass<DataTypes>::doGetElementMass(sofa::Index /*index*/) const
{
msg_error() << "HexahedralFEMForceFieldAndMass<DataTypes>::getElementMass not yet implemented";
return 0.0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class HexahedronFEMForceFieldAndMass : virtual public core::behavior::Mass<DataT
}

void buildStiffnessMatrix(core::behavior::StiffnessMatrix*) override;
void buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;
void doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices) override;

void accFromF(const core::MechanicalParams* mparams, DataVecDeriv& a, const DataVecDeriv& f) override;

Expand All @@ -103,7 +103,7 @@ class HexahedronFEMForceFieldAndMass : virtual public core::behavior::Mass<DataT
return 0.0;
}

SReal getPotentialEnergy(const core::MechanicalParams* /*mparams*/) const override
SReal doGetPotentialEnergy(const core::MechanicalParams* /*mparams*/) const override
{
msg_warning() << "Method getPotentialEnergy not implemented yet.";
return 0.0;
Expand All @@ -113,7 +113,7 @@ class HexahedronFEMForceFieldAndMass : virtual public core::behavior::Mass<DataT

void addGravityToV(const core::MechanicalParams* mparams, DataVecDeriv& d_v) override;

SReal getElementMass(Index index) const override;
SReal doGetElementMass(Index index) const override;
// visual model

void draw(const core::visual::VisualParams* vparams) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ void HexahedronFEMForceFieldAndMass<DataTypes>::buildStiffnessMatrix(core::behav
}

template<class DataTypes>
void HexahedronFEMForceFieldAndMass<DataTypes>::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
void HexahedronFEMForceFieldAndMass<DataTypes>::doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
int e = 0;
for(auto it = this->getIndexedElements()->begin(); it != this->getIndexedElements()->end() ; ++it, ++e)
Expand Down Expand Up @@ -337,7 +337,7 @@ void HexahedronFEMForceFieldAndMass<DataTypes>::addDForce(const core::Mechanical


template<class DataTypes>
SReal HexahedronFEMForceFieldAndMass<DataTypes>::getElementMass(sofa::Index /*index*/) const
SReal HexahedronFEMForceFieldAndMass<DataTypes>::doGetElementMass(sofa::Index /*index*/) const
{
msg_warning()<<"HexahedronFEMForceFieldAndMass<DataTypes>::getElementMass not yet implemented"<<msgendl; return 0.0;
}
Expand Down
74 changes: 73 additions & 1 deletion Sofa/framework/Core/src/sofa/core/behavior/BaseMass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,78 @@ BaseMass::BaseMass()
{
}

void BaseMass::addMDx(const MechanicalParams* mparams, MultiVecDerivId fid, SReal factor)
{
//TODO (SPRINT SED 2025): Component state mechanism
doAddMDx(mparams, fid, factor);
}

void BaseMass::accFromF(const MechanicalParams* mparams, MultiVecDerivId aid)
{
//TODO (SPRINT SED 2025): Component state mechanism
doAccFromF(mparams, aid);
}

void BaseMass::addGravityToV(const MechanicalParams* mparams, MultiVecDerivId vid)
{
//TODO (SPRINT SED 2025): Component state mechanism
doAddGravityToV(mparams, vid);
}

SReal BaseMass::getKineticEnergy(const MechanicalParams* mparams) const
{
//TODO (SPRINT SED 2025): Component state mechanism
return doGetKineticEnergy(mparams);
}

SReal BaseMass::getPotentialEnergy(const MechanicalParams* mparams) const
{
//TODO (SPRINT SED 2025): Component state mechanism
return doGetPotentialEnergy(mparams);
}

type::Vec6 BaseMass::getMomentum(const MechanicalParams* mparams) const
{
//TODO (SPRINT SED 2025): Component state mechanism
return doGetMomentum(mparams);
}

void BaseMass::addMToMatrix(const MechanicalParams* mparams, const sofa::core::behavior::MultiMatrixAccessor* matrix)
{
//TODO (SPRINT SED 2025): Component state mechanism
doAddMToMatrix(mparams, matrix);
}

void BaseMass::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
//TODO (SPRINT SED 2025): Component state mechanism
doBuildMassMatrix(matrices);
}

void BaseMass::initGnuplot(const std::string path)
{
//TODO (SPRINT SED 2025): Component state mechanism
doInitGnuplot(path);
}

void BaseMass::exportGnuplot(const MechanicalParams* mparams, SReal time)
{
//TODO (SPRINT SED 2025): Component state mechanism
doExportGnuplot(mparams, time);
}

SReal BaseMass::getElementMass(sofa::Index index) const
{
//TODO (SPRINT SED 2025): Component state mechanism
return doGetElementMass(index);
}

void BaseMass::getElementMass(sofa::Index index, linearalgebra::BaseMatrix *m) const
{
//TODO (SPRINT SED 2025): Component state mechanism
doGetElementMass(index, m);
}

bool BaseMass::insertInNode( objectmodel::BaseNode* node )
{
node->addMass(this);
Expand All @@ -49,7 +121,7 @@ bool BaseMass::removeInNode( objectmodel::BaseNode* node )
return true;
}

void BaseMass::buildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
void BaseMass::doBuildMassMatrix(sofa::core::behavior::MassMatrixAccumulator* matrices)
{
static std::set<BaseMass*> hasEmittedWarning;
if (hasEmittedWarning.insert(this).second)
Expand Down
Loading
Loading