From 01c2410fbf0c4b129d46ab7a0256eee113a79ebe Mon Sep 17 00:00:00 2001 From: bakpaul Date: Wed, 10 Jun 2026 18:26:54 +0200 Subject: [PATCH 1/3] Apply changes from SOFA PR #6117 --- .../Sofa/Core/Binding_BaseComponent.cpp | 17 ----------------- .../src/SofaPython3/Sofa/Core/Binding_Node.cpp | 6 +++--- .../SofaPython3/Sofa/Core/Binding_Node_doc.h | 4 ++-- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_BaseComponent.cpp b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_BaseComponent.cpp index 3e0c6d82..f37750ad 100644 --- a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_BaseComponent.cpp +++ b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_BaseComponent.cpp @@ -34,23 +34,6 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include diff --git a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node.cpp b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node.cpp index 85d0de2b..291280b7 100644 --- a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node.cpp +++ b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node.cpp @@ -629,9 +629,9 @@ py::object getMechanicalState(Node *self) } -py::object hasODESolver(Node *self) +py::object hasIntergationScheme(Node *self) { - const bool hasODE = self->solver.size() > 0; + const bool hasODE = self->integrationScheme.size() > 0; return py::cast(hasODE); } @@ -719,7 +719,7 @@ void moduleAddNode(py::module &m) { p.def("getAsACreateObjectParameter", &getLinkPath, sofapython3::doc::sofa::core::Node::getAsACreateObjectParameter); p.def("detachFromGraph", &Node::detachFromGraph, sofapython3::doc::sofa::core::Node::detachFromGraph); p.def("getMass", &getMass, sofapython3::doc::sofa::core::Node::getMass); - p.def("hasODESolver", &hasODESolver, sofapython3::doc::sofa::core::Node::hasODESolver); + p.def("hasIntergationScheme", &hasIntergationScheme, sofapython3::doc::sofa::core::Node::hasIntergationScheme); p.def("getForceField", &getForceField, sofapython3::doc::sofa::core::Node::getForceField); p.def("getMechanicalState", &getMechanicalState, sofapython3::doc::sofa::core::Node::getMechanicalState); p.def("getMechanicalMapping", &getMechanicalMapping, sofapython3::doc::sofa::core::Node::getMechanicalMapping); diff --git a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node_doc.h b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node_doc.h index 56ca7411..1ea10324 100644 --- a/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node_doc.h +++ b/bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node_doc.h @@ -378,9 +378,9 @@ static auto getMechanicalState = Get the mechanical state of the node. )"; -static auto hasODESolver = +static auto hasIntergationScheme = R"( - Return true if the node includes an ODE Solver + Return true if the node includes an integration scheme )"; static auto getMechanicalMapping = From 16f2a6cfe556d083a11aca43f4305505c10948ef Mon Sep 17 00:00:00 2001 From: bakpaul Date: Thu, 11 Jun 2026 10:04:31 +0200 Subject: [PATCH 2/3] Fix tests --- .../Modules/tests/SofaConstraintSolver/matrix_access.py | 2 +- bindings/Modules/tests/SofaLinearSolver/matrix_access.py | 2 +- bindings/Sofa/tests/Core/ForceField.py | 6 +++--- bindings/Sofa/tests/Core/Mass.py | 2 +- docs/sphinx/source/content/FirstSteps.rst | 4 ++-- docs/sphinx/source/content/UsingThePlugin.rst | 4 ++-- examples/CCDIntersection.py | 4 ++-- examples/MessageHandler.py | 2 +- examples/RPYC/ExampleLocalCreateSceneMethod.py | 2 +- examples/RPYC/ExampleManipulatingTheNodeLocally.py | 2 +- examples/ReadTheDocs_Example.py | 2 +- examples/access_compliance_matrix.py | 2 +- examples/access_constraint_matrix.py | 2 +- examples/access_contact_forces.py | 4 ++-- examples/access_energy.py | 2 +- examples/access_mass_matrix.py | 2 +- examples/access_matrix.py | 2 +- examples/access_stiffness_matrix.py | 2 +- examples/additional-examples/pygame_example.py | 2 +- examples/additional-examples/pyqt_example.py | 2 +- examples/advanced_timer.py | 5 ++--- examples/emptyForceField.py | 2 +- examples/example-forcefield.py | 2 +- examples/example-mapping.py | 2 +- examples/example-mapping_3_to_1.py | 2 +- examples/jax/forcefield.py | 6 +++--- examples/liver-scriptcontroller.py | 4 ++-- examples/liver.py | 2 +- examples/springForceField.py | 2 +- examples/taskScheduler.py | 2 +- examples/thermoelasticity.py | 4 ++-- 31 files changed, 42 insertions(+), 43 deletions(-) diff --git a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py index 037796fe..9fa2ea1b 100644 --- a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py +++ b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py @@ -24,7 +24,7 @@ def simulate_pendulum(self): root.addObject("BlockGaussSeidelConstraintSolver", name="constraint_solver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("EigenSimplicialLLT") root.addObject("GenericConstraintCorrection") diff --git a/bindings/Modules/tests/SofaLinearSolver/matrix_access.py b/bindings/Modules/tests/SofaLinearSolver/matrix_access.py index 8738b4ed..96bd362b 100644 --- a/bindings/Modules/tests/SofaLinearSolver/matrix_access.py +++ b/bindings/Modules/tests/SofaLinearSolver/matrix_access.py @@ -16,7 +16,7 @@ def simulate_beam(self, linear_solver_template): root.addObject('RequiredPlugin', pluginName='Sofa.Component.SolidMechanics.FEM.Elastic') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Mass') - root.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") linear_solver = root.addObject('SparseLDLSolver', name='linear_solver', template=linear_solver_template) root.addObject('MechanicalObject', name="DoFs") diff --git a/bindings/Sofa/tests/Core/ForceField.py b/bindings/Sofa/tests/Core/ForceField.py index ba48b357..d226c028 100644 --- a/bindings/Sofa/tests/Core/ForceField.py +++ b/bindings/Sofa/tests/Core/ForceField.py @@ -12,10 +12,10 @@ def createIntegrationScheme(node, use_implicit_scheme): if use_implicit_scheme is True: - node.addObject('EulerImplicitSolver', name='odeImplicitSolver', + node.addObject('EulerImplicitIntegrationScheme', name='odeImplicitSolver', rayleighStiffness='0.1', rayleighMass='0.1') else: - node.addObject('EulerExplicitSolver', name='odeExplicitSolver') + node.addObject('EulerExplicitIntegrationScheme', name='odeExplicitSolver') def createSolver(node, use_iterative_solver): @@ -117,7 +117,7 @@ def simulate_beam(linear_solver_template): root.addObject('RequiredPlugin', pluginName='Sofa.Component.StateContainer') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Topology.Container.Grid') - root.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") root.addObject('SparseLDLSolver', template=linear_solver_template) root.addObject('MechanicalObject', name="DoFs") diff --git a/bindings/Sofa/tests/Core/Mass.py b/bindings/Sofa/tests/Core/Mass.py index 4255c1a5..33035705 100644 --- a/bindings/Sofa/tests/Core/Mass.py +++ b/bindings/Sofa/tests/Core/Mass.py @@ -24,7 +24,7 @@ def simulate_beam(linear_solver_template): root.addObject('RequiredPlugin', pluginName='Sofa.Component.Mass') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Topology.Container.Grid') - root.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") root.addObject('SparseLDLSolver', template=linear_solver_template) root.addObject('MechanicalObject', name="DoFs") diff --git a/docs/sphinx/source/content/FirstSteps.rst b/docs/sphinx/source/content/FirstSteps.rst index a0b9ad01..5f846a6e 100644 --- a/docs/sphinx/source/content/FirstSteps.rst +++ b/docs/sphinx/source/content/FirstSteps.rst @@ -249,7 +249,7 @@ We add properties to the sphere. First, we add a mass, then an object called 'Un # Creating the falling sphere object sphere = rootNode.addChild("sphere") - sphere.addObject('EulerImplicitSolver', name='odesolver') + sphere.addObject('EulerImplicitIntegrationScheme', name='odesolver') sphere.addObject('CGLinearSolver', name='Solver', iterations=25, tolerance=1e-05, threshold=1e-05) sphere.addObject('MechanicalObject', name="mstate", template="Rigid3", translation2=[0., 0., 0.], rotation2=[0., 0., 0.], showObjectScale=50) sphere.addObject('UniformMass', name="mass", vertexMass=[totalMass, volume, inertiaMatrix[:]]) @@ -450,7 +450,7 @@ Here is the entire code of the scene : sphere = rootNode.addChild("sphere") - sphere.addObject('EulerImplicitSolver', name='odesolver') + sphere.addObject('EulerImplicitIntegrationScheme', name='odesolver') sphere.addObject('CGLinearSolver', name='Solver', iterations=25, tolerance=1e-05, threshold=1e-05) sphere.addObject('MechanicalObject', name="mstate", template="Rigid3", translation2=[0., 0., 0.], rotation2=[0., 0., 0.], showObjectScale=50) sphere.addObject('UniformMass', name="mass", vertexMass=[totalMass, volume, inertiaMatrix[:]]) diff --git a/docs/sphinx/source/content/UsingThePlugin.rst b/docs/sphinx/source/content/UsingThePlugin.rst index d076d7dc..29e05151 100644 --- a/docs/sphinx/source/content/UsingThePlugin.rst +++ b/docs/sphinx/source/content/UsingThePlugin.rst @@ -301,7 +301,7 @@ We add properties to the sphere. First, we add a mass, then an object called 'Un # Creating the falling sphere object sphere = rootNode.addChild("sphere") - sphere.addObject('EulerImplicitSolver', name='odesolver') + sphere.addObject('EulerImplicitIntegrationScheme', name='odesolver') sphere.addObject('CGLinearSolver', name='Solver', iterations=25, tolerance=1e-05, threshold=1e-05) sphere.addObject('MechanicalObject', name="mstate", template="Rigid3", translation2=[0., 0., 0.], rotation2=[0., 0., 0.], showObjectScale=50) sphere.addObject('UniformMass', name="mass", vertexMass=[totalMass, volume, inertiaMatrix[:]]) @@ -486,7 +486,7 @@ Here is the entire code of the scene : sphere = rootNode.addChild("sphere") - sphere.addObject('EulerImplicitSolver', name='odesolver') + sphere.addObject('EulerImplicitIntegrationScheme', name='odesolver') sphere.addObject('CGLinearSolver', name='Solver', iterations=25, tolerance=1e-05, threshold=1e-05) sphere.addObject('MechanicalObject', name="mstate", template="Rigid3", translation2=[0., 0., 0.], rotation2=[0., 0., 0.], showObjectScale=50) sphere.addObject('UniformMass', name="mass", vertexMass=[totalMass, volume, inertiaMatrix[:]]) diff --git a/examples/CCDIntersection.py b/examples/CCDIntersection.py index 2a09e96d..6ed206b4 100644 --- a/examples/CCDIntersection.py +++ b/examples/CCDIntersection.py @@ -45,7 +45,7 @@ def createScene(root_node): #Liver mecha Liver = root_node.addChild('Liver') - Liver.addObject('EulerImplicitSolver') + Liver.addObject('EulerImplicitIntegrationScheme') Liver.addObject('SparseLDLSolver', name="ldl", template="CompressedRowSparseMatrixMat3x3", parallelInverseProduct=True) Liver.addObject('MeshGmshLoader', name="meshLoader", filename="mesh/liver.msh", scale3d=[0.2, 0.2, 0.2], rotation=[0, 180, -45], translation=[15.2, -0.15, 0.14]) Liver.addObject('TetrahedronSetTopologyContainer', name="Container", src='@meshLoader') @@ -89,7 +89,7 @@ def createScene(root_node): #Plate mecha PlateMecha = root_node.addChild('PlateMecha') - PlateMecha.addObject('EulerImplicitSolver') + PlateMecha.addObject('EulerImplicitIntegrationScheme') PlateMecha.addObject('SparseLDLSolver', name="ldl", template="CompressedRowSparseMatrixMat3x3", parallelInverseProduct=True) PlateMecha.addObject('TetrahedronSetTopologyContainer', name="Container", position="@../BeamDomainFromGridTopology/HexaTop.position", tetrahedra="@../BeamDomainFromGridTopology/TetraTopology/Container.tetrahedra") PlateMecha.addObject('TetrahedronSetTopologyModifier', name="Modifier") diff --git a/examples/MessageHandler.py b/examples/MessageHandler.py index 43d06142..54eaf1ba 100644 --- a/examples/MessageHandler.py +++ b/examples/MessageHandler.py @@ -66,7 +66,7 @@ def createScene(root): root.addObject('DefaultAnimationLoop') root.addObject('DefaultVisualManagerLoop') - root.addObject('EulerImplicitSolver', rayleighStiffness=0.1, rayleighMass=0.1, printLog=False) + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness=0.1, rayleighMass=0.1, printLog=False) root.addObject('SparseLDLSolver', template="CompressedRowSparseMatrixd") root.addObject('MechanicalObject', name="DoFs") diff --git a/examples/RPYC/ExampleLocalCreateSceneMethod.py b/examples/RPYC/ExampleLocalCreateSceneMethod.py index 782c3ff0..d4359c68 100644 --- a/examples/RPYC/ExampleLocalCreateSceneMethod.py +++ b/examples/RPYC/ExampleLocalCreateSceneMethod.py @@ -42,7 +42,7 @@ def createScene(root): root.addObject('MeshOBJLoader', name="LiverSurface", filename="mesh/liver-smooth.obj") liver = root.addChild('Liver') - liver.addObject('EulerImplicitSolver', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") + liver.addObject('EulerImplicitIntegrationScheme', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") liver.addObject('CGLinearSolver', name="linear_solver", iterations="25", tolerance="1e-09", threshold="1e-09") liver.addObject('MeshGmshLoader', name="meshLoader", filename="mesh/liver.msh") liver.addObject('TetrahedronSetTopologyContainer', name="topo", src="@meshLoader") diff --git a/examples/RPYC/ExampleManipulatingTheNodeLocally.py b/examples/RPYC/ExampleManipulatingTheNodeLocally.py index af7e5041..6fcd7024 100644 --- a/examples/RPYC/ExampleManipulatingTheNodeLocally.py +++ b/examples/RPYC/ExampleManipulatingTheNodeLocally.py @@ -47,7 +47,7 @@ root.addObject('MeshOBJLoader', name="LiverSurface", filename="mesh/liver-smooth.obj") liver = root.addChild('Liver') - liver.addObject('EulerImplicitSolver', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") + liver.addObject('EulerImplicitIntegrationScheme', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") liver.addObject('CGLinearSolver', name="linear_solver", iterations="25", tolerance="1e-09", threshold="1e-09") liver.addObject('MeshGmshLoader', name="meshLoader", filename="mesh/liver.msh") liver.addObject('TetrahedronSetTopologyContainer', name="topo", src="@meshLoader") diff --git a/examples/ReadTheDocs_Example.py b/examples/ReadTheDocs_Example.py index 5c14e3b3..91d449f2 100644 --- a/examples/ReadTheDocs_Example.py +++ b/examples/ReadTheDocs_Example.py @@ -92,7 +92,7 @@ def createScene(rootNode): sphere.addObject('UniformMass', name="mass", vertexMass=[totalMass, volume, inertiaMatrix[:]]) sphere.addObject('UncoupledConstraintCorrection') - sphere.addObject('EulerImplicitSolver', name='odesolver') + sphere.addObject('EulerImplicitIntegrationScheme', name='odesolver') sphere.addObject('CGLinearSolver', name='Solver', iterations=25, tolerance=1e-5, threshold=1e-5) collision = sphere.addChild('collision') diff --git a/examples/access_compliance_matrix.py b/examples/access_compliance_matrix.py index 8c80d6ef..54f69d70 100644 --- a/examples/access_compliance_matrix.py +++ b/examples/access_compliance_matrix.py @@ -26,7 +26,7 @@ def createScene(root): constraint_solver = root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("EigenSimplicialLLT", template='CompressedRowSparseMatrixMat3x3d') root.addObject("GenericConstraintCorrection") diff --git a/examples/access_constraint_matrix.py b/examples/access_constraint_matrix.py index 50adf709..691a9a61 100644 --- a/examples/access_constraint_matrix.py +++ b/examples/access_constraint_matrix.py @@ -25,7 +25,7 @@ def createScene(root): root.addObject("BlockGaussSeidelConstraintSolver", tolerance=1e-9, maxIterations=1000) root.addObject("StringMeshCreator", name="loader", resolution="20") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("EigenSimplicialLLT", template='CompressedRowSparseMatrixMat3x3d') root.addObject("GenericConstraintCorrection") diff --git a/examples/access_contact_forces.py b/examples/access_contact_forces.py index c857df9a..b18d15b8 100644 --- a/examples/access_contact_forces.py +++ b/examples/access_contact_forces.py @@ -56,7 +56,7 @@ def createScene(root): root.addObject('MeshOBJLoader', name="load_liver_surface", filename="mesh/liver-smooth.obj") liver = root.addChild('Liver') - liver.addObject('EulerImplicitSolver', name="cg_odesolver", rayleighStiffness=0.1, rayleighMass=0.1) + liver.addObject('EulerImplicitIntegrationScheme', name="cg_odesolver", rayleighStiffness=0.1, rayleighMass=0.1) liver.addObject('SparseLDLSolver', name="linear_solver", template="CompressedRowSparseMatrixMat3x3d") liver.addObject('MeshGmshLoader', name="loader_liver_volume", filename="mesh/liver.msh") liver.addObject('TetrahedronSetTopologyContainer', name="topo", src="@loader_liver_volume") @@ -85,7 +85,7 @@ def createScene(root): particle = root.addChild('Particle') - particle.addObject('EulerImplicitSolver') + particle.addObject('EulerImplicitIntegrationScheme') particle.addObject('CGLinearSolver', threshold=1e-09, tolerance=1e-09, iterations=200) # Particle MechanicalObject where the constraint/contact forces will be stored in the (x,y,z) coordinate system particleMO = particle.addObject('MechanicalObject', showObject=True, position=[-2, 10, 0, 0, 0, 0, 1], name=f'particle_DoFs', template='Rigid3d') diff --git a/examples/access_energy.py b/examples/access_energy.py index 1c80b3a8..0bea9e29 100644 --- a/examples/access_energy.py +++ b/examples/access_energy.py @@ -46,7 +46,7 @@ def createScene(rootNode, dt=0.01, m=1, g=1, L=100, mu=0): # rootNode/Box Box = rootNode.addChild('Box') - Box.addObject('EulerImplicitSolver', name='EulerImplicitScheme') + Box.addObject('EulerImplicitIntegrationScheme', name='EulerImplicitScheme') Box.addObject('SparseLDLSolver', name='linearSolver', template='CompressedRowSparseMatrixd', linearSystem='@system') Box.addObject('MatrixLinearSystem', template='CompressedRowSparseMatrixd', name='system') diff --git a/examples/access_mass_matrix.py b/examples/access_mass_matrix.py index ce37af20..b146b5ef 100644 --- a/examples/access_mass_matrix.py +++ b/examples/access_mass_matrix.py @@ -43,7 +43,7 @@ def createScene(root): root.addObject('DefaultAnimationLoop') root.addObject('DefaultVisualManagerLoop') - root.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") matrices = root.addChild('matrices') # in this Node, two linear systems are declared: diff --git a/examples/access_matrix.py b/examples/access_matrix.py index 1ba44ddc..5dfb62bb 100644 --- a/examples/access_matrix.py +++ b/examples/access_matrix.py @@ -7,7 +7,7 @@ def createBeam(root, matrix_type): node = root.addChild(matrix_type) - node.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + node.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") linear_system = node.addObject('MatrixLinearSystem', template=matrix_type) node.addObject('MechanicalObject', name="DoFs") diff --git a/examples/access_stiffness_matrix.py b/examples/access_stiffness_matrix.py index 53da11ff..9f88fa97 100644 --- a/examples/access_stiffness_matrix.py +++ b/examples/access_stiffness_matrix.py @@ -28,7 +28,7 @@ def createScene(root): root.addObject('DefaultAnimationLoop') root.addObject('DefaultVisualManagerLoop') - root.addObject('EulerImplicitSolver', rayleighStiffness="0.1", rayleighMass="0.1") + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness="0.1", rayleighMass="0.1") root.addObject('SparseLDLSolver', template="CompressedRowSparseMatrixd") root.addObject('MechanicalObject', name="DoFs") diff --git a/examples/additional-examples/pygame_example.py b/examples/additional-examples/pygame_example.py index bba86c5a..b7f876f1 100644 --- a/examples/additional-examples/pygame_example.py +++ b/examples/additional-examples/pygame_example.py @@ -64,7 +64,7 @@ def createScene(root): root.addObject("MeshOBJLoader", name="meshLoaderFine", filename="mesh/liver-smooth.obj") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("CGLinearSolver", iterations="200", tolerance="1e-09", threshold="1e-09") diff --git a/examples/additional-examples/pyqt_example.py b/examples/additional-examples/pyqt_example.py index fe60bd8d..bde90936 100644 --- a/examples/additional-examples/pyqt_example.py +++ b/examples/additional-examples/pyqt_example.py @@ -108,7 +108,7 @@ def __init__(self): root.addObject("MeshOBJLoader", name="meshLoaderFine", filename="mesh/liver-smooth.obj") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("CGLinearSolver", iterations="200", tolerance="1e-09", threshold="1e-09") diff --git a/examples/advanced_timer.py b/examples/advanced_timer.py index dba1bccd..075819f7 100644 --- a/examples/advanced_timer.py +++ b/examples/advanced_timer.py @@ -70,9 +70,8 @@ def createScene(root): # Create our mechanical node with root.addChild("meca") as meca: - meca.addObject("NewtonRaphsonSolver", name="newtonSolver_springs", maxNbIterationsNewton=5, - maxNbIterationsLineSearch=1, warnWhenLineSearchFails=False, printLog=False) - meca.addObject("StaticSolver", newtonSolver="@newtonSolver_springs") + meca.addObject("StaticEquilibriumIntegrationScheme", maxNbIterationsNewton=5, + maxNbIterationsLineSearch=1) meca.addObject("CGLinearSolver", iterations=25, tolerance=1e-5, threshold=1e-5) meca.addObject('MechanicalObject', name='mo', position='@../grid.position') diff --git a/examples/emptyForceField.py b/examples/emptyForceField.py index 90bcb6ce..b3b9b019 100644 --- a/examples/emptyForceField.py +++ b/examples/emptyForceField.py @@ -47,7 +47,7 @@ def createScene(root): node1 = root.addChild("Node1") - node1.addObject('EulerImplicitSolver') + node1.addObject('EulerImplicitIntegrationScheme') node1.addObject('CGLinearSolver', iterations="100", tolerance="10-3", threshold="10-3") node1.addObject('MechanicalObject', template="Vec3d") diff --git a/examples/example-forcefield.py b/examples/example-forcefield.py index 60c47452..2f47fc23 100644 --- a/examples/example-forcefield.py +++ b/examples/example-forcefield.py @@ -42,7 +42,7 @@ def createScene(root): root.addObject("LineAxis") root.addObject("DefaultAnimationLoop", name="loop") - root.addObject("EulerImplicitSolver") + root.addObject("EulerImplicitIntegrationScheme") root.addObject("CGLinearSolver", tolerance=1e-12, threshold=1e-12, iterations=25) o = root.addChild("Object") diff --git a/examples/example-mapping.py b/examples/example-mapping.py index c3218389..9451d2ac 100644 --- a/examples/example-mapping.py +++ b/examples/example-mapping.py @@ -71,7 +71,7 @@ def createScene(root): m.addObject( IdentityMapping(name="CPPObject", input=c, output=sm ) ) root.addChild("Simulation") - root.Simulation.addObject("EulerImplicitSolver") + root.Simulation.addObject("EulerImplicitIntegrationScheme") root.Simulation.addObject("CGLinearSolver", tolerance=1e-12, threshold=1e-12, iterations=25) root.Simulation.addChild(root.Modelling) diff --git a/examples/example-mapping_3_to_1.py b/examples/example-mapping_3_to_1.py index d486855f..899019d9 100644 --- a/examples/example-mapping_3_to_1.py +++ b/examples/example-mapping_3_to_1.py @@ -71,7 +71,7 @@ def createScene(root): m.addObject( MSELossMapping(name="MSELossObject", input=c, output=sm, target=c ) ) root.addChild("Simulation") - root.Simulation.addObject("EulerImplicitSolver") + root.Simulation.addObject("EulerImplicitIntegrationScheme") root.Simulation.addObject("CGLinearSolver", tolerance=1e-12, threshold=1e-12, iterations=25) root.Simulation.addChild(root.Modelling) diff --git a/examples/jax/forcefield.py b/examples/jax/forcefield.py index ccd827e8..24457e59 100644 --- a/examples/jax/forcefield.py +++ b/examples/jax/forcefield.py @@ -129,12 +129,12 @@ def createScene(root, method="implicit-matrix-assembly", n_particles=1_000, use_ physics = root.addChild("Physics") if method.lower() == "explicit": # Requires the implementation of 'addForce' - physics.addObject("EulerExplicitSolver", name="eulerExplicit") + physics.addObject("EulerExplicitIntegrationScheme", name="eulerExplicit") elif method.lower() == "implicit-matrix-free": # Requires the implementation of 'addForce' and 'addDForce' - physics.addObject("EulerImplicitSolver", name="eulerImplicit") + physics.addObject("EulerImplicitIntegrationScheme", name="eulerImplicit") physics.addObject("CGLinearSolver", template="GraphScattered", name="solver", iterations=50, tolerance=1e-5, threshold=1e-5) elif method == "implicit-matrix-assembly": # Requires the implementation of 'addForce', 'addDForce' and 'addKToMatrix' - physics.addObject("EulerImplicitSolver", name="eulerImplicit") + physics.addObject("EulerImplicitIntegrationScheme", name="eulerImplicit") physics.addObject("SparseLDLSolver", name="solver", template="CompressedRowSparseMatrixd") position = np.random.uniform(-1, 1, (n_particles, 3)) diff --git a/examples/liver-scriptcontroller.py b/examples/liver-scriptcontroller.py index 43f72fcc..695d758f 100644 --- a/examples/liver-scriptcontroller.py +++ b/examples/liver-scriptcontroller.py @@ -61,7 +61,7 @@ def createScene(root): root.addObject('MeshOBJLoader', name="LiverSurface", filename="mesh/liver-smooth.obj") liver = root.addChild('Liver') - liver.addObject('EulerImplicitSolver', name="cg_odesolver", rayleighStiffness=0.1, rayleighMass=0.1) + liver.addObject('EulerImplicitIntegrationScheme', name="cg_odesolver", rayleighStiffness=0.1, rayleighMass=0.1) liver.addObject('CGLinearSolver', name="linear_solver", iterations=25, tolerance=1e-09, threshold=1e-09) liver.addObject('MeshGmshLoader', name="meshLoader", filename="mesh/liver.msh") liver.addObject('TetrahedronSetTopologyContainer', name="topo", src="@meshLoader") @@ -102,7 +102,7 @@ def onKeypressedEvent(self, event): def createNewSphere(self): root = self.getContext() newSphere = root.addChild('FallingSphere-'+str(self.iteration)) - newSphere.addObject('EulerImplicitSolver') + newSphere.addObject('EulerImplicitIntegrationScheme') newSphere.addObject('CGLinearSolver', threshold='1e-09', tolerance='1e-09', iterations='200') MO = newSphere.addObject('MechanicalObject', showObject=True, position=[-2, 10+self.iteration, 0, 0, 0, 0, 1], name=f'Particle-{self.iteration}', template='Rigid3d') Mass = newSphere.addObject('UniformMass', totalMass=1) diff --git a/examples/liver.py b/examples/liver.py index 0acb3fed..b168c8cd 100644 --- a/examples/liver.py +++ b/examples/liver.py @@ -55,7 +55,7 @@ def createScene(root): root.addObject('MeshOBJLoader', name="LiverSurface", filename="mesh/liver-smooth.obj") liver = root.addChild('Liver') - liver.addObject('EulerImplicitSolver', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") + liver.addObject('EulerImplicitIntegrationScheme', name="cg_odesolver", rayleighStiffness="0.1", rayleighMass="0.1") liver.addObject('CGLinearSolver', name="linear_solver", iterations="25", tolerance="1e-09", threshold="1e-09") liver.addObject('MeshGmshLoader', name="meshLoader", filename="mesh/liver.msh") liver.addObject('TetrahedronSetTopologyContainer', name="topo", src="@meshLoader") diff --git a/examples/springForceField.py b/examples/springForceField.py index 2a8753cf..6da575c3 100644 --- a/examples/springForceField.py +++ b/examples/springForceField.py @@ -23,7 +23,7 @@ def createScene(root): surface_node = root.addChild('Surface') surface_loader = surface_node.addObject('MeshOBJLoader', name='surface_loader', filename='mesh/ball.obj') - root.addObject('EulerImplicitSolver', name='ODE', rayleighStiffness=0.1, rayleighMass=0.1) + root.addObject('EulerImplicitIntegrationScheme', name='ODE', rayleighStiffness=0.1, rayleighMass=0.1) root.addObject('CGLinearSolver', name='linear solver', iterations=25, tolerance=1e-08, threshold=1e-08) ball_0 = add_ball(root, 'ball_0', (-2, 0, 0), surface_loader) diff --git a/examples/taskScheduler.py b/examples/taskScheduler.py index 598bec9f..9bb695be 100644 --- a/examples/taskScheduler.py +++ b/examples/taskScheduler.py @@ -19,7 +19,7 @@ def createScene(root): ]) root.addObject('VisualStyle', displayFlags="showForceFields") root.addObject('DefaultAnimationLoop') - root.addObject('EulerImplicitSolver', rayleighStiffness=0.1, rayleighMass=0.1) + root.addObject('EulerImplicitIntegrationScheme', rayleighStiffness=0.1, rayleighMass=0.1) root.addObject('CGLinearSolver', iterations=25, tolerance=1.0e-9, threshold=1.0e-9) root.addObject('MechanicalObject', template="Vec3") root.addObject('UniformMass', vertexMass=1) diff --git a/examples/thermoelasticity.py b/examples/thermoelasticity.py index ba29187e..674b7c14 100644 --- a/examples/thermoelasticity.py +++ b/examples/thermoelasticity.py @@ -45,7 +45,7 @@ def createScene(root): meca = tetraTopo.addChild("Mechanics") - meca.addObject("EulerImplicitSolver", name="Euler Impl IntegrationScheme") + meca.addObject("EulerImplicitIntegrationScheme", name="Euler Impl IntegrationScheme") meca.addObject("SparseLDLSolver", name="LDL LinearSolver", template="CompressedRowSparseMatrixMat3x3d") meca.addObject("TetrahedronSetTopologyContainer", name="tetContainer", src=tetrahedraContainer.linkpath) meca.addObject("TetrahedronSetGeometryAlgorithms", name="tetGeometry", template="Vec3d") @@ -59,7 +59,7 @@ def createScene(root): thermo = tetraTopo.addChild("Thermodynamics") - thermo.addObject("EulerImplicitSolver", name="Euler Impl IntegrationScheme", firstOrder=True) + thermo.addObject("EulerImplicitIntegrationScheme", name="Euler Impl IntegrationScheme", firstOrder=True) thermo.addObject("CGLinearSolver", name="Conjugate Gradient", iterations="1000", tolerance=1.0e-10, threshold=1.0e-30) thermo.addObject("TetrahedronSetTopologyContainer", name="tetContainer", src="@../tetContainer") thermo.addObject("TetrahedronSetGeometryAlgorithms", name="tetGeometry", template="Vec3d") From 7733874a24d66c2d725776677596e0794de1f4e8 Mon Sep 17 00:00:00 2001 From: bakpaul Date: Thu, 11 Jun 2026 11:44:54 +0200 Subject: [PATCH 3/3] Fix requiredPlugins --- bindings/Modules/tests/SofaConstraintSolver/matrix_access.py | 2 +- bindings/Modules/tests/SofaLinearSolver/matrix_access.py | 2 +- bindings/Sofa/tests/Core/ForceField.py | 4 ++-- bindings/Sofa/tests/Core/Mass.py | 2 +- docs/sphinx/source/content/FirstSteps.rst | 4 ++-- docs/sphinx/source/content/UsingThePlugin.rst | 2 +- examples/CCDIntersection.py | 2 +- examples/MessageHandler.py | 2 +- examples/RPYC/ExampleLocalCreateSceneMethod.py | 2 +- examples/RPYC/ExampleManipulatingTheNodeLocally.py | 2 +- examples/ReadTheDocs_Example.py | 2 +- examples/access_compliance_matrix.py | 2 +- examples/access_constraint_matrix.py | 2 +- examples/access_contact_forces.py | 2 +- examples/access_energy.py | 2 +- examples/access_mass_matrix.py | 2 +- examples/access_matrix.py | 2 +- examples/access_stiffness_matrix.py | 2 +- examples/advanced_timer.py | 2 +- examples/emptyForceField.py | 2 +- examples/example-forcefield.py | 2 +- examples/example-mapping.py | 2 +- examples/example-mapping_3_to_1.py | 2 +- examples/jax/forcefield.py | 4 ++-- examples/liver-scriptcontroller.py | 2 +- examples/liver.py | 2 +- examples/springForceField.py | 2 +- examples/taskScheduler.py | 2 +- examples/thermoelasticity.py | 2 +- 29 files changed, 32 insertions(+), 32 deletions(-) diff --git a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py index 9fa2ea1b..cd0692e0 100644 --- a/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py +++ b/bindings/Modules/tests/SofaConstraintSolver/matrix_access.py @@ -17,7 +17,7 @@ def simulate_pendulum(self): "Sofa.Component.Mapping.NonLinear", "Sofa.Component.Mapping.MappedMatrix", "Sofa.Component.Mass", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.Topology.Container.Dynamic"]) root.addObject("FreeMotionAnimationLoop", solveVelocityConstraintFirst=True) diff --git a/bindings/Modules/tests/SofaLinearSolver/matrix_access.py b/bindings/Modules/tests/SofaLinearSolver/matrix_access.py index 96bd362b..d2b90884 100644 --- a/bindings/Modules/tests/SofaLinearSolver/matrix_access.py +++ b/bindings/Modules/tests/SofaLinearSolver/matrix_access.py @@ -9,7 +9,7 @@ def simulate_beam(self, linear_solver_template): loop = root.addObject('DefaultAnimationLoop') - root.addObject('RequiredPlugin', pluginName='Sofa.Component.ODESolver.Backward') + root.addObject('RequiredPlugin', pluginName='Sofa.Component.IntegrationSchemes.Backward') root.addObject('RequiredPlugin', pluginName='Sofa.Component.LinearSolver.Direct') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Engine.Select') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Constraint.Projective') diff --git a/bindings/Sofa/tests/Core/ForceField.py b/bindings/Sofa/tests/Core/ForceField.py index d226c028..a3dd3231 100644 --- a/bindings/Sofa/tests/Core/ForceField.py +++ b/bindings/Sofa/tests/Core/ForceField.py @@ -44,7 +44,7 @@ def rssffScene(use_implicit_scheme=True, use_iterative_solver=True): node.addObject('DefaultAnimationLoop') node.addObject("RequiredPlugin", pluginName="Sofa.Component.StateContainer") node.addObject("RequiredPlugin", pluginName="Sofa.Component.LinearSolver") - node.addObject("RequiredPlugin", pluginName="Sofa.Component.ODESolver") + node.addObject("RequiredPlugin", pluginName="Sofa.Component.IntegrationScheme") node.addObject("RequiredPlugin", pluginName="Sofa.Component.Mass") node.gravity = [0, -10, 0] @@ -112,7 +112,7 @@ def simulate_beam(linear_solver_template): root.addObject('RequiredPlugin', pluginName='Sofa.Component.Engine.Select') root.addObject('RequiredPlugin', pluginName='Sofa.Component.LinearSolver.Direct') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Mass') - root.addObject('RequiredPlugin', pluginName='Sofa.Component.ODESolver.Backward') + root.addObject('RequiredPlugin', pluginName='Sofa.Component.IntegrationSchemes.Backward') root.addObject('RequiredPlugin', pluginName='Sofa.Component.SolidMechanics.FEM.Elastic') root.addObject('RequiredPlugin', pluginName='Sofa.Component.StateContainer') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Topology.Container.Grid') diff --git a/bindings/Sofa/tests/Core/Mass.py b/bindings/Sofa/tests/Core/Mass.py index 33035705..1c04845a 100644 --- a/bindings/Sofa/tests/Core/Mass.py +++ b/bindings/Sofa/tests/Core/Mass.py @@ -16,7 +16,7 @@ def simulate_beam(linear_solver_template): root.addObject('DefaultAnimationLoop') root.addObject('RequiredPlugin', pluginName='Sofa.Component.StateContainer') - root.addObject('RequiredPlugin', pluginName='Sofa.Component.ODESolver.Backward') + root.addObject('RequiredPlugin', pluginName='Sofa.Component.IntegrationSchemes.Backward') root.addObject('RequiredPlugin', pluginName='Sofa.Component.LinearSolver.Direct') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Engine.Select') root.addObject('RequiredPlugin', pluginName='Sofa.Component.Constraint.Projective') diff --git a/docs/sphinx/source/content/FirstSteps.rst b/docs/sphinx/source/content/FirstSteps.rst index 5f846a6e..a2fdb910 100644 --- a/docs/sphinx/source/content/FirstSteps.rst +++ b/docs/sphinx/source/content/FirstSteps.rst @@ -242,7 +242,7 @@ We add properties to the sphere. First, we add a mass, then an object called 'Un .. code-block:: python - SofaRuntime.importPlugin("Sofa.Component.ODESolver.Backward") + SofaRuntime.importPlugin("Sofa.Component.IntegrationSchemes.Backward") SofaRuntime.importPlugin("Sofa.Component.LinearSolver.Iterative") SofaRuntime.importPlugin("Sofa.Component.Mass") SofaRuntime.importPlugin("Sofa.Component.Constraint.Lagrangian.Correction") @@ -425,7 +425,7 @@ Here is the entire code of the scene : confignode.addObject('RequiredPlugin', name="Sofa.Component.LinearSolver.Iterative", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Mapping.NonLinear", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Mass", printLog=False) - confignode.addObject('RequiredPlugin', name="Sofa.Component.ODESolver.Backward", printLog=False) + confignode.addObject('RequiredPlugin', name="Sofa.Component.IntegrationSchemes.Backward", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.StateContainer", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Topology.Container.Constant", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Visual", printLog=False) diff --git a/docs/sphinx/source/content/UsingThePlugin.rst b/docs/sphinx/source/content/UsingThePlugin.rst index 29e05151..9f18405e 100644 --- a/docs/sphinx/source/content/UsingThePlugin.rst +++ b/docs/sphinx/source/content/UsingThePlugin.rst @@ -462,7 +462,7 @@ Here is the entire code of the scene : confignode.addObject('RequiredPlugin', name="Sofa.Component.LinearSolver.Iterative", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Mapping.NonLinear", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Mass", printLog=False) - confignode.addObject('RequiredPlugin', name="Sofa.Component.ODESolver.Backward", printLog=False) + confignode.addObject('RequiredPlugin', name="Sofa.Component.IntegrationSchemes.Backward", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.StateContainer", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Topology.Container.Constant", printLog=False) confignode.addObject('RequiredPlugin', name="Sofa.Component.Visual", printLog=False) diff --git a/examples/CCDIntersection.py b/examples/CCDIntersection.py index 6ed206b4..2c7fe8d9 100644 --- a/examples/CCDIntersection.py +++ b/examples/CCDIntersection.py @@ -25,7 +25,7 @@ def createScene(root_node): "Sofa.Component.Collision.Geometry", "Sofa.Component.Collision.Response.Contact", "Sofa.Component.Constraint.Lagrangian.Correction", "Sofa.Component.Constraint.Lagrangian.Solver", "Sofa.Component.IO.Mesh", "Sofa.Component.LinearSolver.Direct", "Sofa.Component.Mapping.Linear", - "Sofa.Component.Mass", "Sofa.Component.ODESolver.Backward", "Sofa.Component.SolidMechanics.FEM.Elastic", + "Sofa.Component.Mass", "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.SolidMechanics.FEM.Elastic", "Sofa.Component.StateContainer", "Sofa.Component.Topology.Container.Dynamic", "Sofa.Component.Topology.Container.Grid", "Sofa.Component.Topology.Mapping", "Sofa.Component.Visual", "Sofa.GL.Component.Rendering3D", "Sofa.Component.Engine.Select", "Sofa.GUI.Component"]) diff --git a/examples/MessageHandler.py b/examples/MessageHandler.py index 54eaf1ba..10eb5995 100644 --- a/examples/MessageHandler.py +++ b/examples/MessageHandler.py @@ -54,7 +54,7 @@ def createScene(root): 'Sofa.Component.Engine.Select', 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Grid', diff --git a/examples/RPYC/ExampleLocalCreateSceneMethod.py b/examples/RPYC/ExampleLocalCreateSceneMethod.py index d4359c68..baf12e5b 100644 --- a/examples/RPYC/ExampleLocalCreateSceneMethod.py +++ b/examples/RPYC/ExampleLocalCreateSceneMethod.py @@ -22,7 +22,7 @@ def createScene(root): root.addObject("RequiredPlugin", pluginName='Sofa.Component.LinearSolver.Iterative') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Mapping.Linear') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Mass') - root.addObject("RequiredPlugin", pluginName='Sofa.Component.ODESolver.Backward') + root.addObject("RequiredPlugin", pluginName='Sofa.Component.IntegrationSchemes.Backward') root.addObject("RequiredPlugin", pluginName='Sofa.Component.SolidMechanics.FEM.Elastic') root.addObject("RequiredPlugin", pluginName='Sofa.Component.StateContainer') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Topology.Container.Dynamic') diff --git a/examples/RPYC/ExampleManipulatingTheNodeLocally.py b/examples/RPYC/ExampleManipulatingTheNodeLocally.py index 6fcd7024..e3a7c4ed 100644 --- a/examples/RPYC/ExampleManipulatingTheNodeLocally.py +++ b/examples/RPYC/ExampleManipulatingTheNodeLocally.py @@ -27,7 +27,7 @@ root.addObject("RequiredPlugin", pluginName='Sofa.Component.LinearSolver.Iterative') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Mapping.Linear') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Mass') - root.addObject("RequiredPlugin", pluginName='Sofa.Component.ODESolver.Backward') + root.addObject("RequiredPlugin", pluginName='Sofa.Component.IntegrationSchemes.Backward') root.addObject("RequiredPlugin", pluginName='Sofa.Component.SolidMechanics.FEM.Elastic') root.addObject("RequiredPlugin", pluginName='Sofa.Component.StateContainer') root.addObject("RequiredPlugin", pluginName='Sofa.Component.Topology.Container.Dynamic') diff --git a/examples/ReadTheDocs_Example.py b/examples/ReadTheDocs_Example.py index 91d449f2..58b46557 100644 --- a/examples/ReadTheDocs_Example.py +++ b/examples/ReadTheDocs_Example.py @@ -26,7 +26,7 @@ def createScene(rootNode): 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.Mapping.NonLinear', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Constant', 'Sofa.Component.Visual', diff --git a/examples/access_compliance_matrix.py b/examples/access_compliance_matrix.py index 54f69d70..3530744f 100644 --- a/examples/access_compliance_matrix.py +++ b/examples/access_compliance_matrix.py @@ -16,7 +16,7 @@ def createScene(root): "Sofa.Component.LinearSolver.Direct", "Sofa.Component.Mapping.MappedMatrix", "Sofa.Component.Mass", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.Topology.Container.Dynamic", "Sofa.Component.Mapping.NonLinear", "Sofa.Component.StateContainer" diff --git a/examples/access_constraint_matrix.py b/examples/access_constraint_matrix.py index 691a9a61..eec1234a 100644 --- a/examples/access_constraint_matrix.py +++ b/examples/access_constraint_matrix.py @@ -15,7 +15,7 @@ def createScene(root): "Sofa.Component.LinearSolver.Direct", "Sofa.Component.Mapping.MappedMatrix", "Sofa.Component.Mass", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.Topology.Container.Dynamic", "Sofa.Component.Mapping.NonLinear", "Sofa.Component.StateContainer" diff --git a/examples/access_contact_forces.py b/examples/access_contact_forces.py index b18d15b8..0f99905f 100644 --- a/examples/access_contact_forces.py +++ b/examples/access_contact_forces.py @@ -34,7 +34,7 @@ def createScene(root): 'Sofa.Component.Collision.Detection.Intersection', 'Sofa.Component.Collision.Geometry', 'Sofa.Component.Collision.Response.Contact', 'Sofa.Component.Constraint.Projective', 'Sofa.Component.IO.Mesh','Sofa.Component.LinearSolver.Iterative', - 'Sofa.Component.Mapping.Linear', 'Sofa.Component.Mass', 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.Mapping.Linear', 'Sofa.Component.Mass', 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic','Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Dynamic','Sofa.Component.Visual', 'Sofa.GL.Component.Rendering3D','Sofa.Component.Constraint.Lagrangian.Correction', diff --git a/examples/access_energy.py b/examples/access_energy.py index 0bea9e29..01869a10 100644 --- a/examples/access_energy.py +++ b/examples/access_energy.py @@ -13,7 +13,7 @@ def createScene(rootNode, dt=0.01, m=1, g=1, L=100, mu=0): rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.LinearSolver.Iterative') rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.Mapping.Linear') rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.Mass') - rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.ODESolver.Backward') + rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.IntegrationSchemes.Backward') rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.SolidMechanics.Spring') rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.StateContainer') rootNode.addObject('RequiredPlugin', pluginName='Sofa.Component.Topology.Container.Constant') diff --git a/examples/access_mass_matrix.py b/examples/access_mass_matrix.py index b146b5ef..d634cd59 100644 --- a/examples/access_mass_matrix.py +++ b/examples/access_mass_matrix.py @@ -33,7 +33,7 @@ def createScene(root): 'Sofa.Component.LinearSolver.Ordering', 'Sofa.Component.LinearSystem', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Grid', diff --git a/examples/access_matrix.py b/examples/access_matrix.py index 5dfb62bb..bc457487 100644 --- a/examples/access_matrix.py +++ b/examples/access_matrix.py @@ -31,7 +31,7 @@ def createScene(root): 'Sofa.Component.Topology.Container.Grid', 'Sofa.Component.Visual', 'Sofa.Component.Constraint.Projective', 'Sofa.Component.Engine.Select', 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.LinearSystem', - 'Sofa.Component.ODESolver.Backward','Sofa.Component.SolidMechanics.FEM.Elastic' + 'Sofa.Component.IntegrationSchemes.Backward','Sofa.Component.SolidMechanics.FEM.Elastic' ]) root.addObject('DefaultAnimationLoop', parallelODESolving=True) diff --git a/examples/access_stiffness_matrix.py b/examples/access_stiffness_matrix.py index 9f88fa97..dbee33de 100644 --- a/examples/access_stiffness_matrix.py +++ b/examples/access_stiffness_matrix.py @@ -18,7 +18,7 @@ def createScene(root): 'Sofa.Component.Engine.Select', 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Grid', diff --git a/examples/advanced_timer.py b/examples/advanced_timer.py index 075819f7..9cef2cad 100644 --- a/examples/advanced_timer.py +++ b/examples/advanced_timer.py @@ -48,7 +48,7 @@ def createScene(root): 'Sofa.Component.Engine.Select', 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.MechanicalLoad', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Dynamic', diff --git a/examples/emptyForceField.py b/examples/emptyForceField.py index b3b9b019..4a8d4280 100644 --- a/examples/emptyForceField.py +++ b/examples/emptyForceField.py @@ -40,7 +40,7 @@ def createScene(root): root.bbox = [[-1, -1, -1],[1,1,1]] root.addObject("RequiredPlugin", pluginName=["Sofa.Component.LinearSolver.Iterative", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.StateContainer" ]) root.addObject('DefaultAnimationLoop') diff --git a/examples/example-forcefield.py b/examples/example-forcefield.py index 2f47fc23..995ccedb 100644 --- a/examples/example-forcefield.py +++ b/examples/example-forcefield.py @@ -32,7 +32,7 @@ def addDForce(self, params, df, dx): def createScene(root): root.addObject("RequiredPlugin", pluginName=["Sofa.GL.Component", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.LinearSolver.Direct", "Sofa.Component.LinearSolver.Iterative", "Sofa.Component.Mass", diff --git a/examples/example-mapping.py b/examples/example-mapping.py index 9451d2ac..4f0bac92 100644 --- a/examples/example-mapping.py +++ b/examples/example-mapping.py @@ -41,7 +41,7 @@ def applyConstraintsJT(self, m, outDeriv, inDeriv): def createScene(root): root.addObject("RequiredPlugin", pluginName=["Sofa.GL.Component", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.LinearSolver.Direct", "Sofa.Component.LinearSolver.Iterative", "Sofa.Component.Mass", diff --git a/examples/example-mapping_3_to_1.py b/examples/example-mapping_3_to_1.py index 899019d9..c3735be8 100644 --- a/examples/example-mapping_3_to_1.py +++ b/examples/example-mapping_3_to_1.py @@ -43,7 +43,7 @@ def applyConstraintsJT(self, m, outDeriv, inDeriv): def createScene(root): root.addObject("RequiredPlugin", pluginName=["Sofa.GL.Component", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.LinearSolver.Direct", "Sofa.Component.LinearSolver.Iterative", "Sofa.Component.Mass", diff --git a/examples/jax/forcefield.py b/examples/jax/forcefield.py index 24457e59..d86acd0d 100644 --- a/examples/jax/forcefield.py +++ b/examples/jax/forcefield.py @@ -113,8 +113,8 @@ def createScene(root, method="implicit-matrix-assembly", n_particles=1_000, use_ "RequiredPlugin", pluginName=[ 'Sofa.Component.Visual', - 'Sofa.Component.ODESolver.Forward', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Forward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.StateContainer', diff --git a/examples/liver-scriptcontroller.py b/examples/liver-scriptcontroller.py index 695d758f..613166b6 100644 --- a/examples/liver-scriptcontroller.py +++ b/examples/liver-scriptcontroller.py @@ -40,7 +40,7 @@ def createScene(root): 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.Mapping.Linear', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.MechanicalLoad', diff --git a/examples/liver.py b/examples/liver.py index b168c8cd..b40d925a 100644 --- a/examples/liver.py +++ b/examples/liver.py @@ -35,7 +35,7 @@ def createScene(root): 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.Mapping.Linear', 'Sofa.Component.Mass', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.StateContainer', 'Sofa.Component.Topology.Container.Dynamic', diff --git a/examples/springForceField.py b/examples/springForceField.py index 6da575c3..0c1f6df8 100644 --- a/examples/springForceField.py +++ b/examples/springForceField.py @@ -11,7 +11,7 @@ def createScene(root): 'Sofa.Component.Mapping.NonLinear', 'Sofa.Component.Mass', 'Sofa.Component.MechanicalLoad', - 'Sofa.Component.ODESolver.Backward', + 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.Spring', 'Sofa.Component.StateContainer', 'Sofa.GL.Component.Rendering3D' diff --git a/examples/taskScheduler.py b/examples/taskScheduler.py index 9bb695be..d3a50ff7 100644 --- a/examples/taskScheduler.py +++ b/examples/taskScheduler.py @@ -11,7 +11,7 @@ def createScene(root): "Sofa.Component.Engine.Select", "Sofa.Component.LinearSolver.Iterative", "Sofa.Component.Mass", - "Sofa.Component.ODESolver.Backward", + "Sofa.Component.IntegrationSchemes.Backward", "Sofa.Component.StateContainer", "Sofa.Component.Topology.Container.Grid", "Sofa.Component.Visual", diff --git a/examples/thermoelasticity.py b/examples/thermoelasticity.py index 674b7c14..b83a2606 100644 --- a/examples/thermoelasticity.py +++ b/examples/thermoelasticity.py @@ -27,7 +27,7 @@ def createScene(root): root.addObject('DefaultAnimationLoop') root.addObject('DefaultVisualManagerLoop') root.addObject('RequiredPlugin', pluginName=['Sofa.Component.Constraint.Projective', 'Sofa.Component.Diffusion', 'Sofa.Component.Engine.Select', - 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.Mass', 'Sofa.Component.ODESolver.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', + 'Sofa.Component.LinearSolver.Direct', 'Sofa.Component.LinearSolver.Iterative', 'Sofa.Component.Mass', 'Sofa.Component.IntegrationSchemes.Backward', 'Sofa.Component.SolidMechanics.FEM.Elastic', 'Sofa.Component.Topology.Container.Dynamic', 'Sofa.Component.Topology.Container.Grid', 'Sofa.Component.Topology.Mapping', 'Sofa.Component.Visual', 'Sofa.GL.Component.Engine', 'Sofa.GL.Component.Rendering2D', 'Sofa.GL.Component.Rendering3D', 'Sofa.Component.StateContainer', 'Sofa.Component.Mapping.Linear']) root.addObject('VisualStyle', displayFlags="hideCollisionModels showVisualModels hideForceFields showBehaviorModels")