Rolling friction-contact problems#
Problem statement#
…
Implementation in numerics#
Structure to define the problem: RollingFrictionContactProblem
.
Solvers list : FRICTION_SOLVER
(id contains ROLLING_FRICTION_3D)
The generic drivers for friction-contact problems are:
Error strategy#
To set internal solver tolerance (when it makes sense!) use rolling_fc3d_set_internalsolver_tolerance()
.
Check details in Error strategy
Rolling-Friction 3D available solvers#
NSGS (SICONOS_ROLLING_FRICTION_3D_NSGS
)#
Non-Smooth Gauss Seidel solver.
Driver: rolling_fc3d_nsgs()
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000 : Maximum iteration number
iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION] : error computation method,
SICONOS_FRICTION_3D_NSGS_ERROR_EVALUATION_FULL : Full error computation with velocity computation
SICONOS_FRICTION_3D_NSGS_ERROR_EVALUATION_LIGHT_WITH_FULL_FINAL (DEFAULT): Light error computation with incremental values on reaction verification of absolute error at the end
SICONOS_FRICTION_3D_NSGS_ERROR_EVALUATION_LIGHT : only light error computation (velocity not computed)
SICONOS_FRICTION_3D_NSGS_ERROR_EVALUATION_ADAPTIVE : we adapt the frequency of the full erro evaluation.
iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION_FREQUENCY] = 0, error computation frequency
iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] = SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_GIVEN_VALUE
iparam[SICONOS_FRICTION_3D_NSGS_SHUFFLE] : shuffle the contact indices in the loop
SICONOS_FRICTION_3D_NSGS_SHUFFLE_FALSE : no shuffle
SICONOS_FRICTION_3D_NSGS_SHUFFLE_TRUE : shuffle only at the beginning
SICONOS_FRICTION_3D_NSGS_SHUFFLE_TRUE_EACH_LOOP : shuffle in each iteration
iparam[SICONOS_FRICTION_3D_NSGS_SHUFFLE_SEED] = 0 : seed for the random generator in shuffling contacts
iparam[SICONOS_FRICTION_3D_NSGS_FILTER_LOCAL_SOLUTION] : filter local solution if the local error is greater than 1.0
SICONOS_FRICTION_3D_NSGS_FILTER_LOCAL_SOLUTION_FALSE (default) the filter is not applied
SICONOS_FRICTION_3D_NSGS_FILTER_LOCAL_SOLUTION_TRUE the filter is applied
iparam[SICONOS_FRICTION_3D_NSGS_RELAXATION] : method uses overrelaxation
SICONOS_FRICTION_3D_NSGS_RELAXATION_FALSE (default) relaxation is not used,
SICONOS_FRICTION_3D_NSGS_RELAXATION_TRUE relaxation is used with parameter dparam[8],
dparam[SICONOS_DPARAM_TOL] = 1e-4, user tolerance on the loop
dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] = 10.0
dparam[SICONOS_FRICTION_3D_NSGS_RELAXATION_VALUE] the relaxation parameter omega
Default internal solver : SICONOS_ROLLING_FRICTION_3D_ONECONTACT_ProjectionOnConeWithLocalIteration
.
Projection on cone (SICONOS_ROLLING_FRICTION_3D_ONECONTACT_ProjectionOnCone
, …)#
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000
iparam[SICONOS_FRICTION_3D_CURRENT_CONTACT_NUMBER]
iparam[SICONOS_FRICTION_3D_NSGS_LOCALSOLVER_IPARAM_USE_TRIVIAL_SOLUTION]
SICONOS_FRICTION_3D_NSGS_LOCALSOLVER_USE_TRIVIAL_SOLUTION_TRUE (default for ProjectionOnConeWithLocalIteration)
SICONOS_FRICTION_3D_NSGS_LOCALSOLVER_USE_TRIVIAL_SOLUTION_FALSE (default for ProjectionOnCone)
dparam[SICONOS_DPARAM_TOL] =1e-12
out :
iparam[SICONOS_FRICTION_NUMBER_OF_CONTACTS] : number of contacts