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

Go to the source code of this file

Subroutines for the resolution of contact problems with friction (2-dimensional case).

Functions

void fc2d_cpg(FrictionContactProblem *problem, double *reaction, double *velocity, int *info, SolverOptions *options)

cpg (conjugated projected gradient) solver for global contact problems with friction (2D)

Parameters
• [in] problem: the friction-contact problem

• [out] reaction: vector

• [out] velocity: vector

• [inout] info: termination value

• [inout] options: structure for options

void fc2d_enum(FrictionContactProblem *problem, double *reaction, double *velocity, int *info, SolverOptions *options)

fc2d_enum solver for frictionContact2D problems.

Parameters
• [in] problem: structure that represents the fc2d (M, q…)

• [inout] reaction: a n-vector of doubles which contains the initial solution and returns the solution of the problem.

• [inout] velocity: a n-vector of doubles which returns the solution of the problem.

• options:

• [out] info: an integer which returns the termination value: 0 = convergence, 1 = no convergence, 2 = Null diagonal term

void fc2d_lexicolemke(FrictionContactProblem *problem, double *reaction, double *velocity, int *info, SolverOptions *options)

fc2d_lexicolemke is a Lemke solver for frictionContact2D problems.

Parameters
• [in] problem: structure that represents the fc2d (M, q…)

• [inout] reaction: a n-vector of doubles which contains the initial solution and returns the solution of the problem.

• [inout] velocity: a n-vector of doubles which returns the solution of the problem.

• options:

• [out] info: an integer which returns the termination value: 0 = convergence, 1 = no convergence, 2 = Null diagonal term

void fc2d_nsgs(FrictionContactProblem *problem, double *reaction, double *velocity, int *info, SolverOptions *options)

Non Linear Gauss Seidel solver for global contact problem with friction in 2D case.

Parameters
• [in] problem: the friction-contact problem

• [out] reaction: vector

• [out] velocity: vector

• [inout] info: termination value

• [inout] options: structure

void fc2d_nsgs_set_default(SolverOptions *options)
void fc2d_projc(double xi[], int *n, int statusi[], double p[], double fric[], double *reaction, int *status)

fc2d_projc is a specific projection operator related to CPG (conjugated projected gradient) algorithm for global contact problem with friction.

Parameters
• [in] xi: the intermediate iterate which goes to be projected (projc1).

• [in] n: the dimension of the system.

• [in] statusi: a vector which contains the initial status.

• [in] p: a vector which contains the components of the descent direction.

• [in] fric: a vector which contains the friction coefficient.

• [out] reaction: the corrected iterate.

• [out] status: the new status.

void fc2d_projf(int etat[], int *n, double y[], double fric[], double projf1[])

fc2d_projf is a specific projection operator related to CPG (conjugated projected gradient) algorithm for global contact problem with friction.

Parameters
• [in] etat: parameter which represents the status vector.

• [in] n: parameter which represents the dimension of the system.

• [in] y: parameter which contains the components of the residue or descent direction vector.

• [in] fric: parameter which contains the friction coefficient.

• [out] projf1: parameter which contains the projected residue or descent direction.

void fc2d_sparse_nsgs(FrictionContactProblem *problem, double *z, double *w, int *info, SolverOptions *options)
int fc2d_tolcp(FrictionContactProblem *problem, LinearComplementarityProblem *lcp_problem)

This function transform a FrictionContactProblem (2D) into a LinearComplementarityProblem.

Parameters
• [in] problem: A pointer to a FrictionContactProblem to transform

• [out] lcp_problem: A pointer to a LinearComplementarity_problem resulting from the reformulation