From c5bb3d6660320c6b13256311f42ae8e6fd0ed422 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Tue, 3 Feb 2026 15:25:56 +0100 Subject: [PATCH] [Mass] Fix kinetic energy in MeshMatrixMass when lumped --- .../sofa/component/mass/MeshMatrixMass.inl | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Sofa/Component/Mass/src/sofa/component/mass/MeshMatrixMass.inl b/Sofa/Component/Mass/src/sofa/component/mass/MeshMatrixMass.inl index aa3fa6f348a..32317b5a4f7 100644 --- a/Sofa/Component/Mass/src/sofa/component/mass/MeshMatrixMass.inl +++ b/Sofa/Component/Mass/src/sofa/component/mass/MeshMatrixMass.inl @@ -2100,23 +2100,23 @@ SReal MeshMatrixMass::getKineticEnergy( const core: helper::ReadAccessor< DataVecDeriv > v = vv; - const unsigned int nbEdges=l_topology->getNbEdges(); - unsigned int v0,v1; + const sofa::Size nbEdges = l_topology->getNbEdges(); SReal e = 0; + const auto lumpingCoef = isLumped() ? m_massLumpingCoeff : static_cast(1.0); - for (unsigned int i=0; igetEdge(i)[0]; - v1 = l_topology->getEdge(i)[1]; - - e += 2 * dot(v[v0], v[v1])*edgeMass[i]; - + for (unsigned int i = 0; i < nbEdges; ++i) + { + const auto& [v0, v1] = l_topology->getEdge(i).array(); + e += 2 * dot(v[v0], v[v1]) * edgeMass[i]; + } } return e/2;