# Friction-contact problems (2 or 3D)#

## Problem statement#

Given

• a symmetric positive semi definite matrix $${M} \in {{\mathrm{I\!R}}}^{n \times n}$$

• a vector $${q} \in {{\mathrm{I\!R}}}^n$$

• a vector of coefficients of friction $$\mu \in{{\mathrm{I\!R}}}^{n_c}$$

the (reduced or dual) frictional contact problem is to find two vectors $$u\in{{\mathrm{I\!R}}}^n$$ , the relative local velocity and $$r\in {{\mathrm{I\!R}}}^n$$ , the contact forces denoted by $$\mathrm{FC}(M,q,\mu)$$ such that

$\begin{split}\begin{eqnarray*} \begin{cases} u = M r + q \\ \hat u = u +\left[ \left[\begin{array}{c} \mu^\alpha \|u^\alpha_{T}\|\\ 0 \\ 0 \end{array}\right]^T, \alpha = 1 \ldots n_c \right]^T \\ \ \ C^\star_{\mu} \ni {\hat u} \perp r \in C_{\mu} \end{cases} \end{eqnarray*}\end{split}$

where the Coulomb friction cone is defined by $$C_{\mu} = \prod\limits_{\alpha=1\ldots n_c} C^{\alpha}_{\mu^\alpha}$$

with $$C^{\alpha}_{\mu^\alpha} =\{ r^\alpha, \|r_{t}\| \leq \mu_{\alpha} |r^\alpha_{n}|\}$$ , and the set $$C^{\alpha,\star}_{\mu^\alpha}$$ its dual.

The modified local velocity $$\widehat u  is not considered as an unknown since it can be obtained uniquely from the local velocity :math:u$$ . Coulomb’s friction law with Signorini’s condition for the unilateral contact written in terms of second order complementarity condition

$\begin{eqnarray} C^\star_{\mu} \ni {\hat u} \perp r \in C_{\mu} \end{eqnarray}$

can be interpreted in a more usual form

$\begin{split}\begin{eqnarray} \begin{cases} 0 \leq u_{N} \perp r_N \geq 0 \quad\quad\text{ Signorini condition}\\ u_T = 0 \Rightarrow \|r_T\| \leq \mu |r_n| \quad\quad\text{ Sticking mode} \\ u_T \neq 0 \Rightarrow r_T = - \mu |r_n| \frac{u_T }{\|u_T\|} \quad\quad\text{ Sliding mode} \end{cases} \end{eqnarray}\end{split}$

This problem models any instance of discretized frictional contact problem obtained from

• the time-discretization of dynamics contact problems with event-capturing of event-tracking schemes,

• the time-discretization of quasi-static contact problems,

• the modeling of static contact problems. In this last case, $$u$$ plays the role of the relative displacement at contact

## Implementation in numerics#

Structure to define the problem: FrictionContactProblem.

Solvers list FRICTION_SOLVER

The generic drivers for friction-contact problems are:

For details regarding global formulation and rolling-friction problems, see Global-Friction-contact problems (2D or 3D) or Rolling friction-contact problems.

## Error strategy#

To set internal solver tolerance (when it makes sense!) use one of the following functions :

The computation of the tolerance depends on the value of iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY].

It can be:

internal solver tolerance = error/dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO]

internal solver tolerance = error/dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] * number of contacts

• SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_GIVEN_VALUE

internal solver tolerance = value provided during initialisation of the local solver.

Warning : iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] and dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] must be set properly for all solvers that are using Xfc3d_set_internal_tolerance function.

## Friction 2D available solvers#

### Nonsmooth Gauss-Seidel (SICONOS_FRICTION_2D_NSGS)#

direct solver for LCP based on pivoting method principle for degenerate problem: the choice of pivot variable is performed via lexicographic ordering.

Driver: fc2d_nsgs()

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000

• iparam[SICONOS_IPARAM_NSGS_SHUFFLE] = 0

• iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION] = SICONOS_FRICTION_3D_NSGS_ERROR_EVALUATION_LIGHT_WITH_FULL_FINAL;

• dparam[SICONOS_DPARAM_TOL] = 1e-4

### Conjugated projected gradient (SICONOS_FRICTION_2D_CPG)#

Driver: fc2d_cpg()

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000

• dparam[SICONOS_DPARAM_TOL] = 1e-4

### Lemke solver (SICONOS_FRICTION_2D_LEMKE)#

Convert friction problem into a LCP and solve it using Lemke solver.

Driver: fc2d_lemke()

Parameters: same as SICONOS_LCP_LEMKE, see LCP available solvers.

### Enumerative solver (SICONOS_FRICTION_2D_ENUM)#

Convert friction problem into a LCP and solve it using enumerative solver.

Driver: fc2d_enum()

Parameters: same as SICONOS_LCP_ENUM, see LCP available solvers.

## Friction 3D available solvers#

### Nonsmooth Gauss-Seidel (SICONOS_FRICTION_3D_NSGS)#

Driver: 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

out

• iparam[SICONOS_IPARAM_ITER_DONE] = iter number of performed iterations

• dparam[SICONOS_DPARAM_RESIDU] reached error

Default internal solver : SICONOS_FRICTION_3D_ONECONTACT_NSN_GP_HYBRID.

### Nonsmooth Gauss-Seidel, velocity version (SICONOS_FRICTION_3D_NSGSV)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000 : Maximum iteration number

• dparam[SICONOS_DPARAM_TOL] = 1e-4, user tolerance on the loop

out

• iparam[7] as number of performed iterations

dparam[SICONOS_DPARAM_RESIDU(1)] reached error

Default internal solver : SICONOS_FRICTION_3D_ONECONTACT_NSN.

### Proximal point solver (SICONOS_FRICTION_3D_PROX)#

Driver: fc3d_proximal()

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000 : Maximum iteration number

• iparam[SICONOS_FRICTION_3D_PROXIMAL_IPARAM_STRATEGY]

• SICONOS_FRICTION_3D_PROXIMAL_REGULARIZATION)

• SICONOS_FRICTION_3D_PROXIMAL_PROX (default)

• iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] = SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_GIVEN_VALUE

• dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] = 10.0

• dparam[SICONOS_DPARAM_TOL] = 1e-4, user tolerance on the loop

• dparam[SICONOS_FRICTION_3D_PROXIMAL_DPARAM_ALPHA] = 1e4

• dparam[SICONOS_FRICTION_3D_PROXIMAL_DPARAM_SIGMA] = 5.

• dparam[SICONOS_FRICTION_3D_PROXIMAL_DPARAM_NU] = 1.

out

iparam[SICONOS_FRICTION_3D_PROXIMAL_IPARAM_CUMULATIVE_ITER_DONE]

Default internal solver : SICONOS_FRICTION_3D_NSN_AC.

### Fixed-point (Tresca) (SICONOS_FRICTION_3D_TFP)#

Fixed point solver for friction-contact 3D problem based on the Tresca

problem with fixed friction threshold

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000

• dparam[SICONOS_DPARAM_TOL] = 1e-14

• dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] =10.0;

Default internal solver : SICONOS_FRICTION_3D_NSGS with SICONOS_FRICTION_3D_ONECONTACT_ProjectionOnCylinderWithLocalIteration as internal solver.

### Nonsmooth Newton/ Alart-Curnier (SICONOS_FRICTION_3D_NSN_AC)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 200;

• iparam[SICONOS_FRICTION_3D_NSN_FORMULATION]

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_GENERATED, (default)

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_GENERATED

• SICONOS_FRICTION_3D_NSN_FORMULATION_NULL

• iparam[SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY]

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_NO (default)

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_PLI_NSN_LOOP : Loop PLI-NSN strategy

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_NSN_AND_PLI_NSN_LOOP : NSN and after Loop PLI-NSN strategy for the hybrid solver

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_VI_EG_NSN : VI_EG preconditionning to NSN

• iparam[3] = 100000; /* nzmax*/

• iparam[5] = 1;

• iparam[SICONOS_FRICTION_3D_NSN_RHO_STRATEGY]

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_CONSTANT : uses constant value (dparam[SICONOS_FRICTION_3D_NSN_RHO]) for rho

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPECTRAL_NORM

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPLIT_SPECTRAL_NORM_COND

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPLIT_SPECTRAL_NORM

• iparam[SICONOS_FRICTION_3D_NSN_MPI_COM] = -1, mpi com fortran

• iparam[SICONOS_FRICTION_3D_NSN_LINEAR_SOLVER] Linear solver used at each Newton iteration * SICONOS_FRICTION_3D_NSN_USE_CSLUSOL * SICONOS_FRICTION_3D_NSN_USE_MUMPS

• iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION_FREQUENCY] = 1; (must be > 0 !)

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH]

• SICONOS_FRICTION_3D_NSN_LINESEARCH_GOLDSTEINPRICE (default)

• SICONOS_FRICTION_3D_NSN_LINESEARCH_ARMIJO

• SICONOS_FRICTION_3D_NSN_LINESEARCH_NO

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH_MAX_ITER] = 100 maximum number of iterations allowed for the line search.

• dparam[SICONOS_DPARAM_TOL] = 1e-3

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1

### Nonsmooth Newton/ Alart-Curnier (test) (SICONOS_FRICTION_3D_NSN_AC_TEST)#

• iparam[SICONOS_FRICTION_3D_NSN_FORMULATION]

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_STD (default)

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_GENERATED,

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_GENERATED

• SICONOS_FRICTION_3D_NSN_FORMULATION_NULL

• iparam[SICONOS_IPARAM_LSA_SEARCH_CRITERION] = SICONOS_LSA_GOLDSTEIN;

• iparam[SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY]

• optionsiparam[SICONOS_IPARAM_MAX_ITER] = 1000;

• optionsdparam[SICONOS_DPARAM_TOL] = 1e-10;

• iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS] = 0;

• iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS_M] = 0;

• dparam[SICONOS_DPARAM_LSA_ALPHA_MIN] = 1e-16;

• dparam[SICONOS_IPARAM_STOPPING_CRITERION] = SICONOS_STOPPING_CRITERION_RESIDU;

### Fixed-Point (De Saxce formulation) (SICONOS_FRICTION_3D_DSFP)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 20000;

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1.;

### Fixed-Point projection (VI reformulation) (SICONOS_FRICTION_3D_VI_FPP)#

Parameters: same as SICONOS_VI_FPP, see VI Available solvers.

### Fixed-Point projection on cylinder (VI reformulation) (SICONOS_FRICTION_3D_VI_FPP_Cylinder)#

Parameters: same as SICONOS_VI_FPP, see VI Available solvers.

### Extra Gradient (VI reformulation) (SICONOS_FRICTION_3D_VI_EG)#

Parameters: same as SICONOS_VI_EG, see VI Available solvers.

### Hyperplane Projection (SICONOS_FRICTION_3D_HP)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 20000;

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH_MAX_ITER] = 50.;

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_PROXIMAL_DPARAM_SIGMA] = 0.99

### Fixed-Point projection (SICONOS_FRICTION_3D_FPP)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 20000;

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1.;

### Extra Gradient (SICONOS_FRICTION_3D_EG)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 20000;

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = -1.;

### Nonsmooth Newton (Fischer-Burmeister formulation) (SICONOS_FRICTION_3D_NSN_FB)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 200;

• iparam[SICONOS_FRICTION_3D_NSN_FORMULATION]

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_STD (default)

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_GENERATED,

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_GENERATED

• SICONOS_FRICTION_3D_NSN_FORMULATION_NULL

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH]

• SICONOS_FRICTION_3D_NSN_LINESEARCH_GOLDSTEINPRICE (default)

• SICONOS_FRICTION_3D_NSN_LINESEARCH_ARMIJO

• SICONOS_FRICTION_3D_NSN_LINESEARCH_NO

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH_MAX_ITER] = 100;

• iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION_FREQUENCY] = 1; (must be > 0 !)

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1.;

### PATH (via GAMS) + AVI reformulation (SICONOS_FRICTION_3D_GAMS_PATH)#

solver using PATH (via GAMS) for friction-contact 3D problem based on an AVI reformulation

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 10000;

• dparam[SICONOS_DPARAM_TOL] = 1e-9;

out

• dparam[TOTAL_TIME_USED]

• iparam[TOTAL_ITER]

• iparam[LAST_MODEL_STATUS]

• iparam[LAST_SOLVE_STATUS]

### PATHVI (via GAMS) + AVI reformulation SICONOS_FRICTION_3D_GAMS_PATHVI)#

solver using PATHVI (via GAMS) for friction-contact 3D problem based on an AVI reformulation

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 10000;

• dparam[SICONOS_DPARAM_TOL] = 1e-9;

out

• dparam[TOTAL_TIME_USED]

• iparam[TOTAL_ITER]

• iparam[LAST_MODEL_STATUS]

• iparam[LAST_SOLVE_STATUS]

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000;

• iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] = SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_GIVEN_VALUE

• dparam[SICONOS_DPARAM_TOL] = 1e-4;

• dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] = 10.0

Internal solver: SICONOS_SOCLCP_NSGS, see SOCLCP available solvers.

### Nonsmooth Gauss-Seidel (SICONOS_FRICTION_3D_SOCLCP)#

Driver: fc3d_SOCLCP()

Parameters: same as SICONOS_SOCLCP_NSGS, see : ref:soclcp_solvers.

### PATH (via GAMS) + LCP reformulation (SICONOS_FRICTION_3D_GAMS_LCP_PATH)#

solver using PATH (via GAMS) for friction-contact 3D problem based on an LCP reformulation

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 10000;

• dparam[SICONOS_DPARAM_TOL] = 1e-9;

### PATHVI (via GAMS) + LCP reformulation SICONOS_FRICTION_3D_GAMS_LCP_PATHVI)#

solver using PATHVI (via GAMS) for friction-contact 3D problem based on an LCP reformulation

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 10000;

• dparam[SICONOS_DPARAM_TOL] = 1e-9;

### Nonsmooth Newton, Natural Map (SICONOS_FRICTION_3D_NSN_NM)#

Nonsmooth Newton solver based on the Natural–Map function for the local (reduced) frictional contact problem in the dense form.

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 200;

• iparam[SICONOS_FRICTION_3D_NSN_FORMULATION]

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_STD (default)

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_GENERATED,

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_GENERATED

• SICONOS_FRICTION_3D_NSN_FORMULATION_NULL

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH]

• SICONOS_FRICTION_3D_NSN_LINESEARCH_GOLDSTEINPRICE (default)

• SICONOS_FRICTION_3D_NSN_LINESEARCH_ARMIJO

• SICONOS_FRICTION_3D_NSN_LINESEARCH_NO

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH_MAX_ITER] = 100;

• iparam[SICONOS_FRICTION_3D_IPARAM_ERROR_EVALUATION_FREQUENCY] = 1;

• dparam[SICONOS_DPARAM_TOL] = 1e-3;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1.;

### Fixed point, Panagiotopoulos (SICONOS_FRICTION_3D_PFP)#

Fixed point solver for friction-contact 3D problem based on the Panagiotopoulos method based on an alternative technique between the normal problem and the tangential one.

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 200;

• dparam[SICONOS_DPARAM_TOL] = 1e-4;

• dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO] =10.0;

Two internal solvers: SICONOS_LCP_PGS and SICONOS_CONVEXQP_VI_FPP.

### ADMM (SICONOS_FRICTION_3D_ADMM)#

Driver: fc3d_admm()

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 20000;

• iparam[SICONOS_FRICTION_3D_IPARAM_RESCALING]

• SICONOS_FRICTION_3D_RESCALING_NO (default)

• SICONOS_FRICTION_3D_RESCALING_SCALAR,

• SICONOS_FRICTION_3D_RESCALING_BALANCING_M,

• SICONOS_FRICTION_3D_RESCALING_BALANCING_MH

• dparam[SICONOS_DPARAM_TOL] = 1e-6;

### Newton(SICONOS_FRICTION_3D_ONECONTACT_NSN, …)#

which switches to one of the local drivers below:

Projection on cone solvers#

Solver id

Driver

SICONOS_FRICTION_3D_ONECONTACT_NSN

fc3d_onecontact_nonsmooth_Newton_solvers_solve_direc()

SICONOS_FRICTION_3D_ONECONTACT_NSN_GP

fc3d_onecontact_nonsmooth_Newton_solvers_solve_dampe()

SICONOS_FRICTION_3D_ONECONTACT_NSN_GP_HYBRID

fc3d_onecontact_nonsmooth_Newton_solvers_solve_hybrid()

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 10

• iparam[SICONOS_FRICTION_3D_CURRENT_CONTACT_NUMBER]

• iparam[SICONOS_FRICTION_3D_NSN_FORMULATION]

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_STD (default)

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_STD

• SICONOS_FRICTION_3D_NSN_FORMULATION_ALARTCURNIER_GENERATED,

• SICONOS_FRICTION_3D_NSN_FORMULATION_JEANMOREAU_GENERATED

• SICONOS_FRICTION_3D_NSN_FORMULATION_NULL

• iparam[SICONOS_FRICTION_3D_NSN_RHO_STRATEGY]

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_CONSTANT : uses constant value (dparam[SICONOS_FRICTION_3D_NSN_RHO]) for rho

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPECTRAL_NORM

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPLIT_SPECTRAL_NORM_COND (default for NSN)

• SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_SPLIT_SPECTRAL_NORM (default for NSN_GP and NSN_GP_HYBRID)

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH]

• SICONOS_FRICTION_3D_NSN_LINESEARCH_GOLDSTEINPRICE (default for NSN_GP and NSN_GP_HYBRID)

• SICONOS_FRICTION_3D_NSN_LINESEARCH_ARMIJO

• SICONOS_FRICTION_3D_NSN_LINESEARCH_NO (default for NSN)

• iparam[SICONOS_FRICTION_3D_NSN_LINESEARCH_MAX_ITER] = 10;

• iparam[SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY]

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_NO

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_PLI_NSN_LOOP (default for NSN)

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_NSN_AND_PLI_NSN_LOOP (default for NSN_GP and NSP_GP_HYBRID)

• SICONOS_FRICTION_3D_NSN_HYBRID_STRATEGY_VI_EG_NSN

• iparam[SICONOS_FRICTION_3D_NSN_HYBRID_MAX_LOOP] = 1;

• iparam[SICONOS_FRICTION_3D_NSN_HYBRID_MAX_ITER] = 10 (for NSN), 100 (for NSN_GP and NSN_GP_HYBRID);

• dparam[SICONOS_DPARAM_TOL] =1e-14;

• dparam[SICONOS_FRICTION_3D_NSN_RHO] =1.0;

### Projection on cone or cylinder (SICONOS_FRICTION_3D_ONECONTACT_ProjectionOnCone, …)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000

• iparam[SICONOS_FRICTION_3D_CURRENT_CONTACT_NUMBER]

• dparam[SICONOS_DPARAM_TOL] =1e-14

• dparam[SICONOS_FRICTION_3D_NSN_RHO] = 1., used only in the ‘with regularization’ case

### NCP Fixed Point solver (SICONOS_FRICTION_3D_NCPGlockerFBFixedPoint, …)#

Parameters:

• iparam[SICONOS_IPARAM_MAX_ITER] = 1000

• dparam[SICONOS_DPARAM_TOL] =1e-12

### Quartic (SICONOS_FRICTION_3D_ONECONTACT_QUARTIC, …)#

Parameters:

• dparam[SICONOS_DPARAM_TOL] =1e-12

### As Convex QP (SICONOS_FRICTION_3D_CONVEXQP_CYLINDER)#

Reformulate the problem as a convex QP and solve using SICONOS_CONVEXQP_PG.

Parameters: same as SICONOS_CONVEXQP_PG, see :ref:convex_qp_solvers`.