Skip to content
4 changes: 2 additions & 2 deletions bindings/Modules/tests/SofaConstraintSolver/matrix_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ def simulate_pendulum(self):
"Sofa.Component.Mapping.NonLinear",
"Sofa.Component.Mapping.MappedMatrix",
"Sofa.Component.Mass",
"Sofa.Component.ODESolver.Backward",
"Sofa.Component.IntegrationScheme.Backward",
"Sofa.Component.Topology.Container.Dynamic"])

root.addObject("FreeMotionAnimationLoop", solveVelocityConstraintFirst=True)
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")

Expand Down
4 changes: 2 additions & 2 deletions bindings/Modules/tests/SofaLinearSolver/matrix_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ 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.IntegrationScheme.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')
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")
Expand Down
17 changes: 0 additions & 17 deletions bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_BaseComponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,6 @@
#include <sofa/core/CollisionModel.h>
#include <sofa/core/behavior/BaseMechanicalState.h>
#include <sofa/core/behavior/BaseForceField.h>
#include <sofa/core/behavior/BaseInteractionForceField.h>
#include <sofa/core/behavior/BaseProjectiveConstraintSet.h>
#include <sofa/core/behavior/BaseConstraintSet.h>
#include <sofa/core/DataEngine.h>
#include <sofa/core/topology/TopologicalMapping.h>
#include <sofa/core/behavior/BaseMass.h>
#include <sofa/core/behavior/OdeSolver.h>
#include <sofa/core/behavior/ConstraintSolver.h>
#include <sofa/core/behavior/BaseConstraintCorrection.h>
#include <sofa/core/behavior/LinearSolver.h>
#include <sofa/core/behavior/BaseAnimationLoop.h>
#include <sofa/core/topology/BaseTopology.h>
#include <sofa/core/loader/BaseLoader.h>
#include <sofa/core/collision/CollisionAlgorithm.h>
#include <sofa/core/collision/Pipeline.h>
#include <sofa/core/collision/Intersection.h>
#include <sofa/core/objectmodel/ConfigurationSetting.h>
#include <sofa/core/ExecParams.h>
#include <sofa/core/CategoryLibrary.h>
#include <pybind11/stl.h>
Expand Down
6 changes: 3 additions & 3 deletions bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -629,9 +629,9 @@ py::object getMechanicalState(Node *self)
}


py::object hasODESolver(Node *self)
py::object hasIntegrationScheme(Node *self)
{
const bool hasODE = self->solver.size() > 0;
const bool hasODE = self->integrationScheme.size() > 0;
return py::cast(hasODE);
}

Expand Down Expand Up @@ -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("hasIntegrationScheme", &hasIntegrationScheme, sofapython3::doc::sofa::core::Node::hasIntegrationScheme);
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);
Expand Down
4 changes: 2 additions & 2 deletions bindings/Sofa/src/SofaPython3/Sofa/Core/Binding_Node_doc.h
Original file line number Diff line number Diff line change
Expand Up @@ -378,9 +378,9 @@ static auto getMechanicalState =
Get the mechanical state of the node.
)";

static auto hasODESolver =
static auto hasIntegrationScheme =
R"(
Return true if the node includes an ODE Solver
Return true if the node includes an integration scheme
)";

static auto getMechanicalMapping =
Expand Down
10 changes: 5 additions & 5 deletions bindings/Sofa/tests/Core/ForceField.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -112,12 +112,12 @@ 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.IntegrationScheme.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')

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")
Expand Down
4 changes: 2 additions & 2 deletions bindings/Sofa/tests/Core/Mass.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ 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.IntegrationScheme.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')
root.addObject('RequiredPlugin', pluginName='Sofa.Component.SolidMechanics.FEM.Elastic')
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")
Expand Down
8 changes: 4 additions & 4 deletions docs/sphinx/source/content/FirstSteps.rst
Original file line number Diff line number Diff line change
Expand Up @@ -242,14 +242,14 @@ 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.IntegrationScheme.Backward")
SofaRuntime.importPlugin("Sofa.Component.LinearSolver.Iterative")
SofaRuntime.importPlugin("Sofa.Component.Mass")
SofaRuntime.importPlugin("Sofa.Component.Constraint.Lagrangian.Correction")

# 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[:]])
Expand Down Expand Up @@ -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.IntegrationScheme.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)
Expand All @@ -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[:]])
Expand Down
6 changes: 3 additions & 3 deletions docs/sphinx/source/content/UsingThePlugin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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[:]])
Expand Down Expand Up @@ -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.IntegrationScheme.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)
Expand All @@ -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[:]])
Expand Down
6 changes: 3 additions & 3 deletions examples/CCDIntersection.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.IntegrationScheme.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"])
Expand All @@ -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')
Expand Down Expand Up @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions examples/MessageHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def createScene(root):
'Sofa.Component.Engine.Select',
'Sofa.Component.LinearSolver.Direct',
'Sofa.Component.Mass',
'Sofa.Component.ODESolver.Backward',
'Sofa.Component.IntegrationScheme.Backward',
'Sofa.Component.SolidMechanics.FEM.Elastic',
'Sofa.Component.StateContainer',
'Sofa.Component.Topology.Container.Grid',
Expand All @@ -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")
Expand Down
Binary file added examples/MyScreenShot.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions examples/RPYC/ExampleLocalCreateSceneMethod.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.IntegrationScheme.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')
Expand All @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions examples/RPYC/ExampleManipulatingTheNodeLocally.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.IntegrationScheme.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')
Expand All @@ -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")
Expand Down
4 changes: 2 additions & 2 deletions examples/ReadTheDocs_Example.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def createScene(rootNode):
'Sofa.Component.LinearSolver.Iterative',
'Sofa.Component.Mapping.NonLinear',
'Sofa.Component.Mass',
'Sofa.Component.ODESolver.Backward',
'Sofa.Component.IntegrationScheme.Backward',
'Sofa.Component.StateContainer',
'Sofa.Component.Topology.Container.Constant',
'Sofa.Component.Visual',
Expand Down Expand Up @@ -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')
Expand Down
Loading
Loading