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.
 
ChSystemSMC::AdhesionForceModel adhesion_force_model
 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.