diff --git a/Sofa/Component/Constraint/Lagrangian/Model/src/sofa/component/constraint/lagrangian/model/BaseContactLagrangianConstraint.inl b/Sofa/Component/Constraint/Lagrangian/Model/src/sofa/component/constraint/lagrangian/model/BaseContactLagrangianConstraint.inl index e88e3c553fb..e18da5a21e5 100644 --- a/Sofa/Component/Constraint/Lagrangian/Model/src/sofa/component/constraint/lagrangian/model/BaseContactLagrangianConstraint.inl +++ b/Sofa/Component/Constraint/Lagrangian/Model/src/sofa/component/constraint/lagrangian/model/BaseContactLagrangianConstraint.inl @@ -34,15 +34,15 @@ BaseContactLagrangianConstraint::BaseContactLagrangian : Inherit(object1, object2) , yetIntegrated(false) , customTolerance(0.0) - , contactsStatus(nullptr) +// , contactsStatus(nullptr) { } template BaseContactLagrangianConstraint::~BaseContactLagrangianConstraint() { - if(contactsStatus) - delete[] contactsStatus; +// if(contactsStatus) +// delete[] contactsStatus; } template @@ -107,24 +107,25 @@ void BaseContactLagrangianConstraint::buildConstraintM { helper::WriteAccessor c1 = c1_d; + for (unsigned int i = 0; i < contacts.size(); i++) { Contact& c = contacts[i]; c.id = contactId++; - MatrixDerivRowIterator c1_it = c1.writeLine(c.id); + MatrixDerivRowIterator c1_it = c1->writeLine(c.id); c1_it.addCol(c.m1, -c.norm); c1_it.addCol(c.m2, c.norm); if (c.parameters.hasTangentialComponent()) { - c1_it = c1.writeLine(c.id + 1); + c1_it = c1->writeLine(c.id + 1); c1_it.setCol(c.m1, -c.t); c1_it.setCol(c.m2, c.t); - c1_it = c1.writeLine(c.id + 2); + c1_it = c1->writeLine(c.id + 2); c1_it.setCol(c.m1, -c.s); c1_it.setCol(c.m2, c.s); @@ -144,24 +145,24 @@ void BaseContactLagrangianConstraint::buildConstraintM c.id = contactId++; - MatrixDerivRowIterator c1_it = c1.writeLine(c.id); + MatrixDerivRowIterator c1_it = c1->writeLine(c.id); c1_it.addCol(c.m1, -c.norm); - MatrixDerivRowIterator c2_it = c2.writeLine(c.id); + MatrixDerivRowIterator c2_it = c2->writeLine(c.id); c2_it.addCol(c.m2, c.norm); if (c.parameters.hasTangentialComponent()) { - c1_it = c1.writeLine(c.id + 1); + c1_it = c1->writeLine(c.id + 1); c1_it.setCol(c.m1, -c.t); - c1_it = c1.writeLine(c.id + 2); + c1_it = c1->writeLine(c.id + 2); c1_it.setCol(c.m1, -c.s); - c2_it = c2.writeLine(c.id + 1); + c2_it = c2->writeLine(c.id + 1); c2_it.setCol(c.m2, c.t); - c2_it = c2.writeLine(c.id + 2); + c2_it = c2->writeLine(c.id + 2); c2_it.setCol(c.m2, c.s); contactId += 2;