# File numerics/src/FrictionContact/fc3d_nonsmooth_Newton_AlartCurnier.h¶

Go to the source code of this file

Typedef and functions declarations related to Alart-Curnier formulation for 3 dimension frictional contact problems in Local Coordinates.

Subroutines used when the friction-contact 3D problem is written using Alart-Curnier formulation:

$\begin{split}\begin{equation*} F(reaction)= \begin{pmatrix} velocity - M.reaction - q \\ 1/rn*[velocity_N - (velocity_N - rn*reaction_N)^+] 1/rt*[velocity_T - proj(velocity_T - rt*reaction_T)] \end{pmatrix} \end{equation*}\end{split}$

where M is an n by n matrix, q an n-dimensional vector, reaction an n-dimensional vector and velocity an n-dimensional vector.

We consider a “global” (ie for several contacts) problem, used to initialize the static global variables.

Two different storages are available for M: dense and sparse block.

Typedefs

typedef void (*AlartCurnierFun3x3Ptr)(double *reaction, double *velocity, double mu, double *rho, double *F, double *A, double *B)

The Alart & Curnier function signature for a 3x3 block.

Functions

void nonsmoothEqnAlartCurnierFun(void *arg, unsigned int problemSize, double *reaction, double *velocity, double *mu, double *rho, double *result, double *A, double *B)
void fc3d_nonsmooth_Newton_AlartCurnier(FrictionContactProblem *problem, double *reaction, double *velocity, int *info, SolverOptions *options)

Nonsmooth Newton solver based on the Alart&#8212;Curnier function for the local (reduced) frictional contact problem in the dense form.

Parameters
• problem – the problem to solve in dense form

• reaction – solution and initial guess for reaction

• velocity – solution and initial guess for velocity

• info – returned info

• options – the solver options

void fc3d_AlartCurnierFunction(unsigned int problemSize, AlartCurnierFun3x3Ptr computeACFun3x3, double *reaction3D, double *velocity3D, double *mu, double *rho3D, double *output_blocklist3, double *output_blocklist3x3_1, double *output_blocklist3x3_2)

The Alart & Curnier function for several contacts.

Parameters
• problemSize – the number of contacts.

• computeACFun3x3 – the block 3x3 Alart & Curnier function.

• reaction3D – the reactions at each contact (size: 3 x problemSize)

• velocity3D – the velocities at each contact (size: 3 x problemSize)

• mu – the mu parameter (size : problemSize)

• rho3D – the rho parameters (size : 3 x problemSize)

• output_blocklist3 – the computed Alart & Curnier function (size : 3 x problemSize)

• output_blocklist3x3_1 – the computed A part of gradient (size : 9 x problemSize)

• output_blocklist3x3_2 – the computed B part of gradient (size : 9 x problemSize)

struct AlartCurnierParams

Public Members

AlartCurnierFun3x3Ptr computeACFun3x3