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
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