Contents
Friction-contact problems (2 or 3D)
-
Nonsmooth Gauss-Seidel, velocity version (
SICONOS_FRICTION_3D_NSGSV
)Nonsmooth Newton/ Alart-Curnier (
SICONOS_FRICTION_3D_NSN_AC
)Nonsmooth Newton/ Alart-Curnier (test) (
SICONOS_FRICTION_3D_NSN_AC_TEST
)Fixed-Point (De Saxce formulation) (
SICONOS_FRICTION_3D_DSFP
)Fixed-Point projection (VI reformulation) (
SICONOS_FRICTION_3D_VI_FPP
)Fixed-Point projection on cylinder (VI reformulation) (
SICONOS_FRICTION_3D_VI_FPP_Cylinder
)Extra Gradient (VI reformulation) (
SICONOS_FRICTION_3D_VI_EG
)Nonsmooth Newton (Fischer-Burmeister formulation) (
SICONOS_FRICTION_3D_NSN_FB
)PATH (via GAMS) + AVI reformulation (
SICONOS_FRICTION_3D_GAMS_PATH
)PATHVI (via GAMS) + AVI reformulation
SICONOS_FRICTION_3D_GAMS_PATHVI
)PATH (via GAMS) + LCP reformulation (
SICONOS_FRICTION_3D_GAMS_LCP_PATH
)PATHVI (via GAMS) + LCP reformulation
SICONOS_FRICTION_3D_GAMS_LCP_PATHVI
)Projection on cone or cylinder (
SICONOS_FRICTION_3D_ONECONTACT_ProjectionOnCone
, …)NCP Fixed Point solver (
SICONOS_FRICTION_3D_NCPGlockerFBFixedPoint
, …)
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
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 \) . Coulomb’s friction law with Signorini’s condition for the unilateral contact written in terms of second order complementarity condition
can be interpreted in a more usual form
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:
fc2d_driver()
(id contains FRICTION_2D)fc3d_driver()
(id contains FRICTION_3D)gfc3d_driver()
(id contains GLOBAL_FRICTION)rolling_fc3d_driver()
(id contains ROLLING_FRICTION_3D)
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 :
fc3d_set_internalsolver_tolerance()
, gfc3d_set_internalsolver_tolerance()
, rolling_fc3d_set_internalsolver_tolerance()
The computation of the tolerance depends on the value of iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY].
It can be:
SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_ADAPTIVE
internal solver tolerance = error/dparam[SICONOS_FRICTION_3D_DPARAM_INTERNAL_ERROR_RATIO]
SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_ADAPTIVE_N_CONTACT
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
)¶
Driver: fc3d_nsgs_velocity()
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
Driver: fc3d_TrescaFixedPoint()
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000
iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] = SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_ADAPTIVE;
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
)¶
Driver: fc3d_nonsmooth_Newton_AlartCurnier()
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
SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_ADAPTIVE
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
)¶
Driver: fc3d_nonsmooth_Newton_AlartCurnier2()
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
)¶
Driver: fc3d_DeSaxceFixedPoint()
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
)¶
Driver: fc3d_VI_FixedPointProjection()
Parameters: same as SICONOS_VI_FPP
, see VI Available solvers.
Fixed-Point projection on cylinder (VI reformulation) (SICONOS_FRICTION_3D_VI_FPP_Cylinder
)¶
Driver: fc3d_VI_FixedPointProjection_Cylinder()
Parameters: same as SICONOS_VI_FPP
, see VI Available solvers.
Extra Gradient (VI reformulation) (SICONOS_FRICTION_3D_VI_EG
)¶
Driver: fc3d_VI_ExtraGradient()
Parameters: same as SICONOS_VI_EG
, see VI Available solvers.
Hyperplane Projection (SICONOS_FRICTION_3D_HP
)¶
Driver: fc3d_HyperplaneProjection()
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
)¶
Driver: fc3d_fixedPointProjection()
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
)¶
Driver: fc3d_ExtraGradient()
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
)¶
Driver: fc3d_nonsmooth_Newton_FischerBurmeister()
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
Driver: fc3d_AVI_gams_path()
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
Driver: fc3d_AVI_gams_pathvi()
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]
ACLM Fixed-Point (
SICONOS_FRICTION_3D_ACLMFP
)
Driver: fc3d_ACLMFixedPoint()
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
Driver: fc3d_lcp_gams_path()
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
Driver: fc3d_lcp_gams_pathvi()
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.
Driver: fc3d_nonsmooth_Newton_NaturalMap()
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.
Driver: fc3d_Panagiotopoulos_FixedPoint()
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 200;
iparam[SICONOS_FRICTION_3D_IPARAM_INTERNAL_ERROR_STRATEGY] = SICONOS_FRICTION_3D_INTERNAL_ERROR_STRATEGY_ADAPTIVE;
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
)¶
Solver based on ADMM method.
Driver: fc3d_admm()
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 20000;
iparam[SICONOS_FRICTION_3D_ADMM_IPARAM_SYMMETRY]
SICONOS_FRICTION_3D_ADMM_FORCED_SYMMETRY (default)
SICONOS_FRICTION_3D_ADMM_FORCED_ASYMMETRY
SICONOS_FRICTION_3D_ADMM_CHECK_SYMMETRY
iparam[SICONOS_FRICTION_3D_ADMM_IPARAM_ACCELERATION]
SICONOS_FRICTION_3D_ADMM_ACCELERATION
SICONOS_FRICTION_3D_ADMM_ACCELERATION_AND_RESTART (default)
SICONOS_FRICTION_3D_ADMM_NO_ACCELERATION
iparam[SICONOS_FRICTION_3D_ADMM_IPARAM_SPARSE_STORAGE]
SICONOS_FRICTION_3D_ADMM_FORCED_SPARSE_STORAGE
SICONOS_FRICTION_3D_ADMM_KEEP_STORAGE (default)
dparam[SICONOS_FRICTION_3D_ADMM_INITIAL_RHO] =
SICONOS_FRICTION_3D_ADMM_INITIAL_RHO_GIVEN (default)
SICONOS_FRICTION_3D_ADMM_INITIAL_RHO_NORM_INF
SICONOS_FRICTION_3D_ADMM_INITIAL_RHO_EIGENVALUES
iparam[SICONOS_FRICTION_3D_ADMM_IPARAM_RHO_STRATEGY]
SICONOS_FRICTION_3D_ADMM_RHO_STRATEGY_RESIDUAL_BALANCING
SICONOS_FRICTION_3D_ADMM_RHO_STRATEGY_SCALED_RESIDUAL_BALANCING
SICONOS_FRICTION_3D_ADMM_RHO_STRATEGY_CONSTANT (default)
iparam[SICONOS_FRICTION_3D_ADMM_IPARAM_GET_PROBLEM_INFO]
SICONOS_FRICTION_3D_ADMM_GET_PROBLEM_INFO_NO (default)
SICONOS_FRICTION_3D_ADMM_GET_PROBLEM_INFO_YES
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;
dparam[SICONOS_FRICTION_3D_ADMM_RHO] = 1.
dparam[SICONOS_FRICTION_3D_ADMM_RESTART_ETA] = 0.999;
dparam[SICONOS_FRICTION_3D_ADMM_BALANCING_RESIDUAL_TAU] = 2.
dparam[SICONOS_FRICTION_3D_ADMM_BALANCING_RESIDUAL_PHI] = 2.;
“One contact” solvers¶
Newton(SICONOS_FRICTION_3D_ONECONTACT_NSN
, …)¶
Driver: fc3d_onecontact_nonsmooth_Newton_solvers_solve()
which switches to one of the local drivers below:
Solver id |
Driver |
---|---|
|
|
|
|
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)
SICONOS_FRICTION_3D_NSN_FORMULATION_RHO_STRATEGY_ADAPTIVE
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
, …)¶
Solver id |
Driver |
---|---|
|
|
|
|
|
|
|
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
, …)¶
Solver id |
Driver |
Update |
---|---|---|
Parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000
dparam[SICONOS_DPARAM_TOL] =1e-12
Quartic (SICONOS_FRICTION_3D_ONECONTACT_QUARTIC
, …)¶
ids : SICONOS_FRICTION_3D_ONECONTACT_QUARTIC
, SICONOS_FRICTION_3D_ONECONTACT_QUARTIC_NU
Driver: fc3d_unitary_enumerative()
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
.
Driver: fc3d_ConvexQP_ProjectedGradient_Cylinder()
Parameters: same as SICONOS_CONVEXQP_PG, see :ref:`convex_qp_solvers
.