diff --git a/bindings/Modules/src/SofaPython3/SofaConstraintSolver/Binding_ConstraintSolver_doc.h b/bindings/Modules/src/SofaPython3/SofaConstraintSolver/Binding_ConstraintSolver_doc.h index 1689aef2..2fe4c923 100644 --- a/bindings/Modules/src/SofaPython3/SofaConstraintSolver/Binding_ConstraintSolver_doc.h +++ b/bindings/Modules/src/SofaPython3/SofaConstraintSolver/Binding_ConstraintSolver_doc.h @@ -34,7 +34,7 @@ Returns the compliance matrix projected in constraint space, built in the constr example: ------------ -constraint_solver = root.addObject("ProjectedGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) +constraint_solver = root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) matrix = constraint_solver.W() )"; @@ -45,7 +45,7 @@ Returns the force resulting from the constraints example: ------------ -constraint_solver = root.addObject("ProjectedGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) +constraint_solver = root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) lambda = constraint_solver.lambda_force() )"; @@ -56,7 +56,7 @@ Returns the displacement computed without any constraint example: ------------ -constraint_solver = root.addObject("ProjectedGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) +constraint_solver = root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) dfree = constraint_solver.dfree() )"; diff --git a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py index 00d4d00f..ba2b07a0 100644 --- a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py +++ b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py @@ -21,7 +21,7 @@ def simulate_pendulum(self): "Sofa.Component.Topology.Container.Dynamic"]) root.addObject("FreeMotionAnimationLoop", solveVelocityConstraintFirst=True) - root.addObject("ProjectedGaussSeidelConstraintSolver", name="constraint_solver", tolerance=1e-9, maxIterations=1000) + root.addObject("BlockGaussSeidelConstraintSolver", name="constraint_solver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") root.addObject("EulerImplicitSolver") diff --git a/bindings/Sofa/tests/Core/Events.py b/bindings/Sofa/tests/Core/Events.py index 3e5cf83e..53456aa1 100644 --- a/bindings/Sofa/tests/Core/Events.py +++ b/bindings/Sofa/tests/Core/Events.py @@ -42,7 +42,7 @@ def test_events(self): node.addObject("RequiredPlugin", name="Sofa.Component.AnimationLoop") node.addObject("RequiredPlugin", name="Sofa.Component.Constraint.Lagrangian.Solver") node.addObject("FreeMotionAnimationLoop", name="loop") - node.addObject("ProjectedGaussSeidelConstraintSolver", name="constraintSolver") + node.addObject("BlockGaussSeidelConstraintSolver", name="constraintSolver") controller = node.addObject( MyController() ) Sofa.Simulation.init(node) diff --git a/docs/sphinx/source/content/FirstSteps.rst b/docs/sphinx/source/content/FirstSteps.rst index 3e73b5b2..b3eddfd3 100644 --- a/docs/sphinx/source/content/FirstSteps.rst +++ b/docs/sphinx/source/content/FirstSteps.rst @@ -312,7 +312,7 @@ We first add a collision model for the scene in general, that is stating how a c # Collision pipeline rootNode.addObject('CollisionPipeline') rootNode.addObject('FreeMotionAnimationLoop') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") + rootNode.addObject('BlockGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") rootNode.addObject('BruteForceBroadPhase') rootNode.addObject('BVHNarrowPhase') rootNode.addObject('RuleBasedContactManager', responseParams="mu="+str(0.0), name='Response', response='FrictionContactConstraint') @@ -435,7 +435,7 @@ Here is the entire code of the scene : # Collision pipeline rootNode.addObject('CollisionPipeline') rootNode.addObject('FreeMotionAnimationLoop') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") + rootNode.addObject('BlockGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") rootNode.addObject('BruteForceBroadPhase') rootNode.addObject('BVHNarrowPhase') rootNode.addObject('RuleBasedContactManager', responseParams="mu="+str(0.0), name='Response', response='FrictionContactConstraint') diff --git a/docs/sphinx/source/content/UsingThePlugin.rst b/docs/sphinx/source/content/UsingThePlugin.rst index 659898fe..0f1492d7 100644 --- a/docs/sphinx/source/content/UsingThePlugin.rst +++ b/docs/sphinx/source/content/UsingThePlugin.rst @@ -362,7 +362,7 @@ We first add a collision model for the scene in general, that is stating how a c # Collision pipeline rootNode.addObject('DefaultPipeline') rootNode.addObject('FreeMotionAnimationLoop') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") + rootNode.addObject('BlockGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") rootNode.addObject('BruteForceBroadPhase') rootNode.addObject('BVHNarrowPhase') rootNode.addObject('RuleBasedContactManager', responseParams="mu="+str(0.0), name='Response', response='FrictionContactConstraint') @@ -473,7 +473,7 @@ Here is the entire code of the scene : # Collision pipeline rootNode.addObject('DefaultPipeline') rootNode.addObject('FreeMotionAnimationLoop') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") + rootNode.addObject('BlockGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") rootNode.addObject('BruteForceBroadPhase') rootNode.addObject('BVHNarrowPhase') rootNode.addObject('RuleBasedContactManager', responseParams="mu="+str(0.0), name='Response', response='FrictionContactConstraint') diff --git a/examples/ReadTheDocs_Example.py b/examples/ReadTheDocs_Example.py index b704045f..5c14e3b3 100644 --- a/examples/ReadTheDocs_Example.py +++ b/examples/ReadTheDocs_Example.py @@ -47,7 +47,7 @@ def createScene(rootNode): rootNode.addObject('CollisionPipeline') rootNode.addObject('FreeMotionAnimationLoop') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") + rootNode.addObject('BlockGaussSeidelConstraintSolver', tolerance="1e-6", maxIterations="1000") rootNode.addObject('BruteForceBroadPhase', name="BroadPhase") rootNode.addObject('BVHNarrowPhase', name="NarrowPhase") rootNode.addObject('RuleBasedContactManager', responseParams="mu="+str(0.0), name='Response', response='FrictionContactConstraint') diff --git a/examples/access_compliance_matrix.py b/examples/access_compliance_matrix.py index 6108643d..8c80d6ef 100644 --- a/examples/access_compliance_matrix.py +++ b/examples/access_compliance_matrix.py @@ -23,7 +23,7 @@ def createScene(root): ]) root.addObject("FreeMotionAnimationLoop", solveVelocityConstraintFirst=True) - constraint_solver = root.addObject("ProjectedGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) + constraint_solver = root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") root.addObject("EulerImplicitSolver") diff --git a/examples/access_constraint_matrix.py b/examples/access_constraint_matrix.py index aa12c529..50adf709 100644 --- a/examples/access_constraint_matrix.py +++ b/examples/access_constraint_matrix.py @@ -22,7 +22,7 @@ def createScene(root): ]) root.addObject("FreeMotionAnimationLoop", solveVelocityConstraintFirst=True) - root.addObject("ProjectedGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) + root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") root.addObject("EulerImplicitSolver") diff --git a/examples/access_contact_forces.py b/examples/access_contact_forces.py index 196ae836..c857df9a 100644 --- a/examples/access_contact_forces.py +++ b/examples/access_contact_forces.py @@ -44,7 +44,7 @@ def createScene(root): root.addObject('FreeMotionAnimationLoop') # Constraint solver computing the constraint/contact forces, stored in the constraint space (normal , tangential_1, tangential_2) - constraint_solver = root.addObject('ProjectedGaussSeidelConstraintSolver', maxIterations=1000, tolerance=1e-6, computeConstraintForces=True) + constraint_solver = root.addObject('BlockGaussSeidelConstraintSolver', maxIterations=1000, tolerance=1e-6, computeConstraintForces=True) root.addObject('VisualStyle', displayFlags="showCollisionModels hideVisualModels showForceFields") root.addObject('CollisionPipeline', name="collision_pipeline") diff --git a/examples/access_energy.py b/examples/access_energy.py index bd1cad9c..56b2cf91 100644 --- a/examples/access_energy.py +++ b/examples/access_energy.py @@ -34,7 +34,7 @@ def createScene(rootNode, dt=0.01, m=1, g=1, L=100, mu=0): rootNode.addObject('ParallelBVHNarrowPhase') rootNode.addObject('MinProximityIntersection', name='Proximity', alarmDistance='10', contactDistance='0.02') rootNode.addObject('CollisionResponse', name='Response', response='FrictionContactConstraint', responseParams=f'mu={mu}') - rootNode.addObject('ProjectedGaussSeidelConstraintSolver', maxIterations='10', multithreading='true', tolerance='1.0e-3') + rootNode.addObject('BlockGaussSeidelConstraintSolver', maxIterations='10', multithreading='true', tolerance='1.0e-3') boxTranslation = "-20 -0.9 0" rootNode.addObject('MeshOBJLoader', name='Loader-box', filename='mesh/cube.obj', translation=boxTranslation)