chrono::solver_settings Class Reference

## Description

Chrono::Parallel solver_settings.

This structure contains all settings associated with the parallel solver.

#include <ChSettings.h>

## Public Attributes

SolverType solver_type
The solver type variable defines name of the solver that will be used to solve the NSC problem.

SolverMode solver_mode
There are three possible solver modes NORMAL will only solve for the normal and bilateral constraints. More...

SolverMode local_solver_mode
This should not be set by the user, depending on how the iterations are set The variable is used to specify what type of solve is currently being done. More...

real alpha
This parameter is a constant used when solving a problem with compliance.

real contact_recovery_speed
The contact recovery speed parameter controls how "hard" a contact is enforced when two objects are penetrating. More...

real bilateral_clamp_speed
This parameter is the same as the one for contacts, it controls how fast two objects will move in order to resolve constraint drift. More...

bool clamp_bilaterals
It is possible to disable clamping for bilaterals entirely. More...

bool update_rhs
Experimental options that probably don't work for all solvers.

bool compute_N

bool test_objective

bool use_full_inertia_tensor

bool cache_step_length

bool precondition

bool use_power_iteration

int max_power_iteration

real power_iter_tolerance

ChSystemSMC::ContactForceModel contact_force_model
Contact force model for SMC.

Contact force model for SMC.

ChSystemSMC::TangentialDisplacementModel tangential_displ_mode
Tangential contact displacement history. More...

bool use_material_properties
Flag specifying how the stiffness and damping coefficients in the SMC contact force models are calculated. More...

real characteristic_vel
Characteristic velocity (Hooke contact force model).

real min_slip_vel
Threshold tangential velocity.

uint max_iteration
Along with setting the solver mode, the total number of iterations for each type of constraints can be performed. More...

uint max_iteration_normal
If the normal iterations are set, iterations are performed for just the normal part of the constraints. More...

uint max_iteration_sliding
Similarly sliding iterations are only performed on the sliding constraints. More...

uint max_iteration_spinning
Similarly spinning iterations are only performed on the spinning constraints Bilaterals are still solved. More...

uint max_iteration_bilateral

uint max_iteration_fem

real tolerance
This variable is the tolerance for the solver in terms of speeds.

real tol_speed

real tolerance_objective
This variable defines the tolerance if the solver is using the objective. More...

int skip_residual
Compute residual every x iterations.

## Member Data Documentation

 real chrono::solver_settings::bilateral_clamp_speed

This parameter is the same as the one for contacts, it controls how fast two objects will move in order to resolve constraint drift.

 bool chrono::solver_settings::clamp_bilaterals

It is possible to disable clamping for bilaterals entirely.

When set to true bilateral_clamp_speed is ignored.

 real chrono::solver_settings::contact_recovery_speed

The contact recovery speed parameter controls how "hard" a contact is enforced when two objects are penetrating.

The larger the value is the faster the two objects will separate.

 SolverMode chrono::solver_settings::local_solver_mode

This should not be set by the user, depending on how the iterations are set The variable is used to specify what type of solve is currently being done.

 uint chrono::solver_settings::max_iteration

Along with setting the solver mode, the total number of iterations for each type of constraints can be performed.

 uint chrono::solver_settings::max_iteration_normal

If the normal iterations are set, iterations are performed for just the normal part of the constraints.

This will essentially precondition the solver and stiffen the contacts, making objects penetrate less. For visual accuracy this is really useful in my opinion. Bilaterals are still solved.

 uint chrono::solver_settings::max_iteration_sliding

Similarly sliding iterations are only performed on the sliding constraints.

Bilaterals are still solved.

 uint chrono::solver_settings::max_iteration_spinning

Similarly spinning iterations are only performed on the spinning constraints Bilaterals are still solved.

 SolverMode chrono::solver_settings::solver_mode

There are three possible solver modes NORMAL will only solve for the normal and bilateral constraints.

SLIDING will only solve for the normal, sliding and bilateral constraints. SPINNING will solve for all of the constraints. The purpose of this settings is to allow the user to completely ignore different types of friction. In chrono parallel all constraints support friction and sliding friction so this is how you can improve performance when you know that you don't need spinning/rolling friction or want to solve a problem frictionless.

 ChSystemSMC::TangentialDisplacementModel chrono::solver_settings::tangential_displ_mode

Tangential contact displacement history.

None indicates no tangential stiffness, OneStep indicates estimating tangential displacement using only current velocity, MultiStep uses full contact history over multiple steps.

 real chrono::solver_settings::tolerance_objective

This variable defines the tolerance if the solver is using the objective.

termination condition

 bool chrono::solver_settings::use_material_properties

Flag specifying how the stiffness and damping coefficients in the SMC contact force models are calculated.

If true, these coefficients are derived from physical material properties. Otherwise, the user specifies the coefficients directly.