Friction-contact problems (2D or 3D)

Problem statement:

Given

  • a symmetric positive semi definite matrix \({M} \in {{\mathrm{I\!R}}}^{n \times n}\)
  • a vector :math:` {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

The problem is stored and given to the solver in Siconos/Numerics thanks to a C structure FrictionContactProblem .

Available solvers for Friction Contact 3D:

see Friction_cst.h for solver ids. Use the generic function fc3d_driver() to call one the the specific solvers listed below:

  • fc3d_nsgs() : non-smooth Gauss-Seidel solver. SolverId : SICONOS_FRICTION_3D_NSGS =500,
  • fc3d_nsgs_velocity() : non-smooth Gauss-Seidel solver based on velocity updates SolverId : SICONOS_FRICTION_3D_NSGSV =501,
  • fc3d_proximal() : Proximal point solver for friction-contact 3D problem SolverId : SICONOS_FRICTION_3D_PROX =502,
  • fc3d_TrescaFixedPoint() : Fixed point solver for friction-contact 3D problem based on the Tresca problem with fixed friction threshold SolverId : SICONOS_FRICTION_3D_TFP =503,
  • fc3d_globalAlartCurnier() : Global Alart Curnier solver SolverId : SICONOS_FRICTION_3D_NSN_AC =504,
  • fc3d_DeSaxceFixedPoint() : Fixed Point solver for friction-contact 3D problem based on the De Saxce Formulation SolverId : SICONOS_FRICTION_3D_DSFP=505,
  • fc3d_ExtraGradient() : Extra Gradient solver for friction-contact 3D problem based on the De Saxce Formulation SolverId : SICONOS_FRICTION_3D_EG=506,
  • fc3d_HyperplaneProjection() : Hyperplane Projection solver for friction-contact 3D problem based on the De Saxce Formulation SolverId : SICONOS_FRICTION_3D_HP=507,

(see the functions/solvers list in fc3d_Solvers.h )

Required and optional parameters:

fc3d problems needs some specific parameters, given to the fc3d_driver() function thanks to a SolverOptions structure.

Available solvers for Friction Contact 2D:

  • fc2d_nsgs() , Non Linear Gauss Seidel solver. SolverId SICONOS_FRICTION_2D_NSGS =400,
  • fc2d_cpg() , conjugate projected gradient SolverId SICONOS_FRICTION_2D_CPG =401,
  • fc2d_pgs(), projected Gauss Seidel solver. SolverId SICONOS_FRICTION_2D_PGS =402,
  • fc2d_latin() , latin solver. SolverId SICONOS_FRICTION_2D_LATIN =403,
  • fc2d_lexicolemke() , lemke solver. SolverId SICONOS_FRICTION_2D_LMEKE =404,