Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.IntegrationSchemes.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.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')
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 hasIntergationScheme(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("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);
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 hasIntergationScheme =
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.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')

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.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')
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.IntegrationSchemes.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.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)
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.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)
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.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"])
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.IntegrationSchemes.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
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.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')
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.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')
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.IntegrationSchemes.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