Skip to content

Commit 6e336a4

Browse files
committed
forgot the condition on diagonal masses
1 parent 68402c1 commit 6e336a4

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

Sofa/Component/ODESolver/Forward/src/sofa/component/odesolver/forward/EulerExplicitSolver.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <sofa/simulation/MechanicalOperations.h>
2525
#include <sofa/simulation/VectorOperations.h>
2626
#include <sofa/core/ObjectFactory.h>
27+
#include <sofa/core/behavior/BaseMass.h>
2728
#include <sofa/core/behavior/LinearSolver.h>
2829
#include <sofa/helper/AdvancedTimer.h>
2930
#include <sofa/helper/ScopedAdvancedTimer.h>
@@ -87,10 +88,16 @@ void EulerExplicitSolver::solve(const core::ExecParams* params,
8788
sofa::Size nbNonDiagonalMasses = 0;
8889
this->getContext()->accept(
8990
sofa::core::objectmodel::topDownVisitor
90-
| [&nbNonDiagonalMasses](sofa::core::behavior::BaseMass* mass){nbNonDiagonalMasses++;});
91+
| [&nbNonDiagonalMasses](sofa::core::behavior::BaseMass* mass)
92+
{
93+
if (mass && !mass->isDiagonal())
94+
{
95+
nbNonDiagonalMasses++;
96+
}
97+
});
9198

9299
// Mass matrix is diagonal, solution can thus be found by computing acc = f/m
93-
if(nbNonDiagonalMasses == 0.)
100+
if(nbNonDiagonalMasses == 0)
94101
{
95102
// acc = M^-1 * f
96103
computeAcceleration(&mop, acc, f);

0 commit comments

Comments
 (0)