## 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.