Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@
#include <sofa/simulation/CollisionVisitor.h>
#include <sofa/simulation/SolveVisitor.h>
#include <sofa/simulation/task/MainTaskSchedulerFactory.h>
#include <sofa/component/constraint/lagrangian/solver/ProjectedGaussSeidelConstraintSolver.h>
#include <sofa/component/constraint/lagrangian/solver/BlockGaussSeidelConstraintSolver.h>

#include <sofa/simulation/mechanicalvisitor/MechanicalVInitVisitor.h>

#include <sofa/component/constraint/lagrangian/solver/ProjectedGaussSeidelConstraintSolver.h>
#include <sofa/component/constraint/lagrangian/solver/BlockGaussSeidelConstraintSolver.h>
using sofa::simulation::mechanicalvisitor::MechanicalVInitVisitor;


Expand All @@ -71,7 +71,7 @@ using namespace core::behavior;
using namespace sofa::simulation;
using sofa::helper::ScopedAdvancedTimer;

using DefaultConstraintSolver = sofa::component::constraint::lagrangian::solver::ProjectedGaussSeidelConstraintSolver;
using DefaultConstraintSolver = sofa::component::constraint::lagrangian::solver::BlockGaussSeidelConstraintSolver;

FreeMotionAnimationLoop::FreeMotionAnimationLoop() :
d_solveVelocityConstraintFirst(initData(&d_solveVelocityConstraintFirst , false, "solveVelocityConstraintFirst", "solve separately velocity constraint violations before position constraint violations"))
Expand Down Expand Up @@ -104,7 +104,7 @@ void FreeMotionAnimationLoop::init()
l_constraintSolver.set(this->getContext()->get<sofa::core::behavior::ConstraintSolver>(core::objectmodel::BaseContext::SearchDown));
if (!l_constraintSolver)
{
if (const auto constraintSolver = sofa::core::objectmodel::New<constraint::lagrangian::solver::ProjectedGaussSeidelConstraintSolver>())
if (const auto constraintSolver = sofa::core::objectmodel::New<constraint::lagrangian::solver::BlockGaussSeidelConstraintSolver>())
{
getContext()->addObject(constraintSolver);
constraintSolver->setName( this->getContext()->getNameHelper().resolveName(constraintSolver->getClassName(), {}));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Node name="root" dt="0.001" gravity="0 -981 0">
<VisualStyle displayFlags="showForceFields" />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver maxIterations="100" tolerance="1e-3" />
<BlockGaussSeidelConstraintSolver maxIterations="100" tolerance="1e-3" />
<CollisionPipeline depth="6" verbose="0" draw="0" />
<BruteForceBroadPhase/>
<BVHNarrowPhase/>
Expand Down
4 changes: 2 additions & 2 deletions Sofa/Component/Constraint/Lagrangian/Solver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ set(HEADER_FILES
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/BuiltConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/ImprovedJacobiConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/NNCGConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/ProjectedGaussSeidelConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/BlockGaussSeidelConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/UnbuiltConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/UnbuiltGaussSeidelConstraintSolver.h
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/LCPConstraintSolver.h
Expand All @@ -32,7 +32,7 @@ set(SOURCE_FILES
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/BuiltConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/ImprovedJacobiConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/NNCGConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/ProjectedGaussSeidelConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/BlockGaussSeidelConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/UnbuiltConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/UnbuiltGaussSeidelConstraintSolver.cpp
${SOFACOMPONENTCONSTRAINTLAGRANGIANSOLVER_SOURCE_DIR}/LCPConstraintSolver.cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* Contact information: [email protected] *
******************************************************************************/

#include <sofa/component/constraint/lagrangian/solver/ProjectedGaussSeidelConstraintSolver.h>
#include <sofa/component/constraint/lagrangian/solver/BlockGaussSeidelConstraintSolver.h>
#include <sofa/component/constraint/lagrangian/solver/GenericConstraintSolver.h>
#include <sofa/helper/AdvancedTimer.h>
#include <sofa/helper/ScopedAdvancedTimer.h>
Expand All @@ -30,7 +30,7 @@ namespace sofa::component::constraint::lagrangian::solver
{


void ProjectedGaussSeidelConstraintSolver::doSolve( GenericConstraintProblem * problem ,SReal timeout)
void BlockGaussSeidelConstraintSolver::doSolve( GenericConstraintProblem * problem ,SReal timeout)
{
SCOPED_TIMER_VARNAME(gaussSeidelTimer, "ConstraintsGaussSeidel");

Expand Down Expand Up @@ -200,7 +200,7 @@ void ProjectedGaussSeidelConstraintSolver::doSolve( GenericConstraintProblem * p
}
}

void ProjectedGaussSeidelConstraintSolver::gaussSeidel_increment(bool measureError, SReal *dfree, SReal *force, SReal **w, SReal tol, SReal *d, int dim, bool& constraintsAreVerified, SReal& error, std::vector<core::behavior::ConstraintResolution*>& constraintCorrections, sofa::type::vector<SReal>& tabErrors) const
void BlockGaussSeidelConstraintSolver::gaussSeidel_increment(bool measureError, SReal *dfree, SReal *force, SReal **w, SReal tol, SReal *d, int dim, bool& constraintsAreVerified, SReal& error, std::vector<core::behavior::ConstraintResolution*>& constraintCorrections, sofa::type::vector<SReal>& tabErrors) const
{
for(int j=0; j<dim; ) // increment of j realized at the end of the loop
{
Expand Down Expand Up @@ -284,10 +284,10 @@ void ProjectedGaussSeidelConstraintSolver::gaussSeidel_increment(bool measureErr
}


void registerProjectedGaussSeidelConstraintSolver(sofa::core::ObjectFactory* factory)
void registerBlockGaussSeidelConstraintSolver(sofa::core::ObjectFactory* factory)
{
factory->registerObjects(core::ObjectRegistrationData("A Constraint Solver using the Linear Complementarity Problem formulation to solve Constraint based components using a Projected Gauss-Seidel iterative method")
.add< ProjectedGaussSeidelConstraintSolver >());
factory->registerObjects(core::ObjectRegistrationData("A Constraint Solver using the Linear Complementarity Problem formulation to solve Constraint based components using a Block Gauss-Seidel iterative method")
.add< BlockGaussSeidelConstraintSolver >());
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@

namespace sofa::component::constraint::lagrangian::solver
{
class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API ProjectedGaussSeidelConstraintSolver : public BuiltConstraintSolver
class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API BlockGaussSeidelConstraintSolver : public BuiltConstraintSolver
{
public:
SOFA_CLASS(ProjectedGaussSeidelConstraintSolver, BuiltConstraintSolver);
SOFA_CLASS(BlockGaussSeidelConstraintSolver, BuiltConstraintSolver);

protected:
virtual void doSolve(GenericConstraintProblem * problem , SReal timeout = 0.0) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ void NNCGConstraintSolver::doSolve(GenericConstraintProblem * problem , SReal ti
sofa::type::vector<SReal> tabErrors(dimension);

{
// perform one iteration of ProjectedGaussSeidel
// perform one iteration of BlockGaussSeidel
bool constraintsAreVerified = true;

std::copy_n(force, dimension, std::begin(problem->m_lam));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@
******************************************************************************/
#pragma once

#include <sofa/component/constraint/lagrangian/solver/ProjectedGaussSeidelConstraintSolver.h>
#include <sofa/component/constraint/lagrangian/solver/BlockGaussSeidelConstraintSolver.h>
#include <sofa/core/behavior/ConstraintResolution.h>

namespace sofa::component::constraint::lagrangian::solver
{
class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API NNCGConstraintSolver : public ProjectedGaussSeidelConstraintSolver
class SOFA_COMPONENT_CONSTRAINT_LAGRANGIAN_SOLVER_API NNCGConstraintSolver : public BlockGaussSeidelConstraintSolver
{
public:
SOFA_CLASS(NNCGConstraintSolver, ProjectedGaussSeidelConstraintSolver);
SOFA_CLASS(NNCGConstraintSolver, BlockGaussSeidelConstraintSolver);

virtual void doSolve(GenericConstraintProblem * problem , SReal timeout = 0.0) override;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace sofa::component::constraint::lagrangian::solver
{

extern void registerNNCGConstraintSolver(sofa::core::ObjectFactory* factory);
extern void registerProjectedGaussSeidelConstraintSolver(sofa::core::ObjectFactory* factory);
extern void registerBlockGaussSeidelConstraintSolver(sofa::core::ObjectFactory* factory);
extern void registerUnbuiltGaussSeidelConstraintSolver(sofa::core::ObjectFactory* factory);
extern void registerLCPConstraintSolver(sofa::core::ObjectFactory* factory);
extern void registerImprovedJacobiConstraintSolver(sofa::core::ObjectFactory* factory);
Expand Down Expand Up @@ -57,7 +57,7 @@ const char* getModuleVersion()
void registerObjects(sofa::core::ObjectFactory* factory)
{
registerNNCGConstraintSolver(factory);
registerProjectedGaussSeidelConstraintSolver(factory);
registerBlockGaussSeidelConstraintSolver(factory);
registerUnbuiltGaussSeidelConstraintSolver(factory);
registerLCPConstraintSolver(factory);
registerImprovedJacobiConstraintSolver(factory);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class BaseTetrahedronFEMForceField_test : public sofa::testing::BaseTest
Sofa.Component.Constraint.Projective
});

simpleapi::createObject(m_root, "ProjectedGaussSeidelConstraintSolver", { {"tolerance", "1e-3"}, {"maxIt", "1000"} });
simpleapi::createObject(m_root, "BlockGaussSeidelConstraintSolver", { {"tolerance", "1e-3"}, {"maxIt", "1000"} });

simpleapi::createObject(m_root, "RegularGridTopology", { {"name", "grid"},
{"n", sofa::simpleapi::str(nbrGrid)}, {"min", "0 0 20"}, {"max", "10 40 30"} });
Expand Down
2 changes: 1 addition & 1 deletion Sofa/framework/Helper/src/sofa/helper/ComponentChange.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,7 @@ std::map<std::string, ComponentChange, std::less<> > uncreatableComponents = {

{ "GenericConstraintSolver",
ComponentChange().withCustomMessage("GenericConstraintSolver has been replaced since v25.12 by a set of new components, whose names relate to the method used:\n"
" - ProjectedGaussSeidelConstraintSolver (if you were using this component without setting 'resolutionMethod' or by setting it to 'ProjectedGaussSeidel')\n"
" - BlockGaussSeidelConstraintSolver (if you were using this component without setting 'resolutionMethod' or by setting it to 'BlockGaussSeidel')\n"
" - UnbuiltGaussSeidelConstraintSolver (if you were using this component while setting 'resolutionMethod=\"UnbuiltGaussSeidel\"')\n"
" - NNCGConstraintSolver (if you were using this component while setting 'resolutionMethod=\"NonsmoothNonlinearConjugateGradient\"')\n"
" --> For NNCGConstraintSolver, data 'newtonIterations' has been replaced by 'maxIterations'"
Expand Down
2 changes: 1 addition & 1 deletion Sofa/framework/Helper/src/sofa/helper/SelectableItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ struct DeprecatedItem
*
* Example:
* MAKE_SELECTABLE_ITEMS(ResolutionMethod,
* sofa::helper::Item{"ProjectedGaussSeidel", "Projected Gauss-Seidel"},
* sofa::helper::Item{"BlockGaussSeidel", "Block Gauss-Seidel"},
* sofa::helper::Item{"UnbuiltGaussSeidel", "Gauss-Seidel no matrix assembly"},
* sofa::helper::Item{"NonsmoothNonlinearConjugateGradient", "Non-smooth non-linear conjugate gradient"}
* );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace

/** Test the UncoupledConstraintCorrection class
*/
struct ProjectedGaussSeidelConstraintSolver_test : BaseSimulationTest
struct BlockGaussSeidelConstraintSolver_test : BaseSimulationTest
{
void SetUp() override
{
Expand All @@ -49,7 +49,7 @@ struct ProjectedGaussSeidelConstraintSolver_test : BaseSimulationTest
" <RequiredPlugin name='Sofa.Component.Collision.Detection.Intersection'/>"
" <RequiredPlugin name='Sofa.Component.Collision.Response.Contact'/>"
" <FreeMotionAnimationLoop />\n"
" <ProjectedGaussSeidelConstraintSolver name='solver' constraintForces='-1 -1 -1' computeConstraintForces='True' maxIt='1000' tolerance='0.001' />\n"
" <BlockGaussSeidelConstraintSolver name='solver' constraintForces='-1 -1 -1' computeConstraintForces='True' maxIt='1000' tolerance='0.001' />\n"
" <Node name='collision'>\n"
" <MechanicalObject />\n"
" <UncoupledConstraintCorrection useOdeSolverIntegrationFactors='0' />\n"
Expand All @@ -66,7 +66,7 @@ struct ProjectedGaussSeidelConstraintSolver_test : BaseSimulationTest
};

/// run the tests
TEST_F(ProjectedGaussSeidelConstraintSolver_test, checkConstraintForce)
TEST_F(BlockGaussSeidelConstraintSolver_test, checkConstraintForce)
{
EXPECT_MSG_NOEMIT(Error);
enableConstraintForce();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def addHeader(rootNode):

rootNode.addObject('DefaultVisualManagerLoop')
rootNode.addObject('FreeMotionAnimationLoop')
rootNode.addObject('ProjectedGaussSeidelConstraintSolver', maxIterations=50, tolerance=1e-5, printLog=False)
rootNode.addObject('BlockGaussSeidelConstraintSolver', maxIterations=50, tolerance=1e-5, printLog=False)
rootNode.addObject('BackgroundSetting', color=[1., 1., 1., 1.])
rootNode.findData('dt').value=0.01
rootNode.gravity = [0,-9810,0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<VisualStyle displayFlags="hideVisual showCollisionModels" />

<ProjectedGaussSeidelConstraintSolver tolerance="1e-6" printLog="0" maxIterations="200"/>
<BlockGaussSeidelConstraintSolver tolerance="1e-6" printLog="0" maxIterations="200"/>
<FreeMotionAnimationLoop/>

<CollisionPipeline depth="6" verbose="0" draw="0"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<RequiredPlugin pluginName="Sensable" />

<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver />
<BlockGaussSeidelConstraintSolver />

<CollisionPipeline depth="8" />
<BruteForceBroadPhase/>
Expand Down
2 changes: 1 addition & 1 deletion applications/plugins/SofaHAPI/examples/SofaHAPI1.scn
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<RequiredPlugin pluginName="SofaHAPI" />

<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver />
<BlockGaussSeidelConstraintSolver />

<CollisionPipeline depth="8" />
<BruteForceBroadPhase/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<VisualStyle displayFlags="hideVisualModels showBehaviorModels showMappings showForceFields" />
<FreeMotionAnimationLoop solveVelocityConstraintFirst="true" />
<ProjectedGaussSeidelConstraintSolver tolerance="1e-9" maxIterations="1000"/>
<BlockGaussSeidelConstraintSolver tolerance="1e-9" maxIterations="1000"/>
<ComplianceMatrixExporter exportEveryNumberOfSteps="1" filename="compliance" printLog="true" format="csv" precision="12"/>

<StringMeshCreator name="loader" resolution="20" scale3d="1 1 1" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<VisualStyle displayFlags="hideVisualModels showBehaviorModels showMappings showForceFields" />
<FreeMotionAnimationLoop solveVelocityConstraintFirst="true" />
<ProjectedGaussSeidelConstraintSolver tolerance="1e-9" maxIterations="1000"/>
<BlockGaussSeidelConstraintSolver tolerance="1e-9" maxIterations="1000"/>
<ComplianceMatrixImage/>

<StringMeshCreator name="loader" resolution="20" scale3d="1 1 1" />
Expand Down
2 changes: 1 addition & 1 deletion applications/plugins/Xitact/examples/xitactTest.scn
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<RequiredPlugin name="SofaOpenglVisual"/>
<VisualStyle displayFlags="showVisualModels hideBehaviorModels showCollisionModels hideMappings hideForceFields" />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver/>
<BlockGaussSeidelConstraintSolver/>
<CollisionPipeline depth="6" verbose="0" draw="0"/>
<BruteForceBroadPhase/>
<BVHNarrowPhase/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ void SceneCheckCollisionResponse::doCheckOn(Node* node)

sofa::core::behavior::ConstraintSolver* constraintSolver;
root->get(constraintSolver, sofa::core::objectmodel::BaseContext::SearchRoot);
if (!constraintSolver || ( constraintSolver && ( constraintSolver->getClassName() != "ProjectedGaussSeidelConstraintSolver" )) )
if (!constraintSolver || ( constraintSolver && ( constraintSolver->getClassName() != "BlockGaussSeidelConstraintSolver" )) )
{
m_message <<"A ProjectedGaussSeidelConstraintSolver must be in the scene to solve StickContactConstraint" << msgendl;
m_message <<"A BlockGaussSeidelConstraintSolver must be in the scene to solve StickContactConstraint" << msgendl;
}
}
/// If FrictionContactConstraint is chosen, make sure the scene includes a FreeMotionAnimationLoop
Expand Down
2 changes: 1 addition & 1 deletion examples/Benchmark/Performance/TorusFall.scn
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<VisualStyle displayFlags="showVisual showCollisionModels hideBehaviorModels showForceFields hideInteractionForceFields hideWireframe" />

<FreeMotionAnimationLoop name="animationLoop" solveVelocityConstraintFirst="true" parallelCollisionDetectionAndFreeMotion="true" parallelODESolving="true"/>
<ProjectedGaussSeidelConstraintSolver name="constraintSolver" maxIterations="100" tolerance="1.0e-9" multithreading="true"/>
<BlockGaussSeidelConstraintSolver name="constraintSolver" maxIterations="100" tolerance="1.0e-9" multithreading="true"/>
<CollisionPipeline name="Pipeline" />
<BruteForceBroadPhase name="BroadPhase" />
<BVHNarrowPhase name="NarrowPhase" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

<VisualStyle displayFlags="showBehaviorModels showVisual" />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver maxIterations="1000" tolerance="0.001"/>
<BlockGaussSeidelConstraintSolver maxIterations="1000" tolerance="0.001"/>
<CollisionPipeline depth="6" verbose="0" draw="0" />
<BruteForceBroadPhase/>
<BVHNarrowPhase/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<VisualStyle displayFlags="showForceFields" />
<DefaultVisualManagerLoop />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver tolerance="0.001" maxIterations="1000"/>
<BlockGaussSeidelConstraintSolver tolerance="0.001" maxIterations="1000"/>
<CollisionPipeline depth="6" verbose="0" draw="0" />
<BruteForceBroadPhase/>
<BVHNarrowPhase/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

<VisualStyle displayFlags="showBehaviorModels showForceFields" />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver tolerance="0.001" maxIterations="1000"/>
<BlockGaussSeidelConstraintSolver tolerance="0.001" maxIterations="1000"/>
<Node name="Beam1">
<EulerImplicitSolver name="odesolver" printLog="false" rayleighStiffness="0.1" rayleighMass="0.1" />
<BTDLinearSolver printLog="false" verbose="false" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@


<FreeMotionAnimationLoop computeBoundingBox="0"/>
<ProjectedGaussSeidelConstraintSolver maxIterations="1000" tolerance="1e-3"/>
<BlockGaussSeidelConstraintSolver maxIterations="1000" tolerance="1e-3"/>

<VisualStyle displayFlags="showBehaviorModels showVisual showForceFields" />
<CollisionPipeline name="CollisionLoop" verbose="0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<VisualStyle displayFlags="showForceFields" />
<DefaultVisualManagerLoop />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="0.0"/>
<BlockGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="0.0"/>


<Node name="TargetCube0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<VisualStyle displayFlags="showForceFields" />
<DefaultVisualManagerLoop />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="0.0"/>
<BlockGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="0.0"/>


<Node name="TargetCube00">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<VisualStyle displayFlags="showForceFields showWireFrame showBehavior" />
<DefaultVisualManagerLoop />
<FreeMotionAnimationLoop />
<ProjectedGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="1e-3" useSVDForRegularization="true"/>
<BlockGaussSeidelConstraintSolver tolerance="0.0001" maxIterations="1000" regularizationTerm="1e-3" useSVDForRegularization="true"/>


<Node name="TargetCubeExtrimities">
Expand Down
Loading
Loading