File numerics/src/FrictionContact/fc3d_2NCP_Glocker.h#
Go to the source code of this file
interface to functions used to write the Friction-Contact 3D problem as a NCP, using Glocker formulation.
The idea is to write the Friction Contact problem as a NCP: The input problem looks like:
and is formulate as: Find \(reaction_G \in \mathcal{R}^5\) such that: \( 0 \le F_G(reaction_G) \perp reaction_G \ge 0 \\ \) with \( F_G(reaction_G) = M_G.reaction_G + g(reaction_G) + q_G \) index \( G \) stands for “Glocker” in all related operators.
The relations between $_G$ operators and input Friction-Contact problem, plus all other details, are given in: Acary, V. and B. Brogliato (2008). Numerical Methods for Nonsmooth Dynamical Systems: Applications in Mechanics and Electronics. Vol. 35 of LNACM. Springer Verlag. Chapter 13, part 4.3 p 420.
Functions
-
void NCPGlocker_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem)#
Initialize some parameters required for the formulation as the size of the problem (number of contacts X 3), n the the global matrix M the the global vector q the global vector mu of the friction coefficients (size = n/3)
- Parameters:
problem – the global problem
localproblem – the local problem
-
void NCPGlocker_update(int, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *pos, SolverOptions *options)#
Pick the required sub-blocks in q, M …
according to the considered contact and write the operators required for the Glocker formulation
- Parameters:
problem – the global problem
localproblem – the local problem
pos – the number of the considered contact (its position in global M)
options –
-
void NCPGlocker_post(int contactnumber, double *reaction)#
Retrieve global reaction values after solving, from computed “reactionGlocker”.
- Parameters:
contactnumber – the number of the considered contact
reaction – [inout] he global reaction (in-out parameter)
-
void computeFGlocker(double **FOut, int up2Date)#
To compute F.
- Parameters:
FOut – [inout] the resulting FOut (warning: must be null on input)
up2Date – boolean variable to avoid recomputation of some parameters: true if F or jacobianF has been computed and if the considered local problem has not changed, else false.
-
void computeJacobianFGlocker(double **jacobianFOut, int up2Date)#
To compute jacobianF.
- Parameters:
jacobianFOut – [inout] the resulting (warning: must be null on input)
up2Date – Boolean variable to avoid recomputation of some parameters: true if F or jacobianF has been computed and if the considered local problem has not changed, else false.
-
double Compute_NCP_error1(int contact, double error)#
compute NCP error for Fischer-Burmeister formulation
- Parameters:
contact –
error –
- Returns:
error ?
-
double Compute_NCP_error2(int contact, double error)#
compute NCP error for Fischer-Burmeister formulation
- Parameters:
contact –
error –
- Returns:
error ?
-
void compute_Z_GlockerFixedP(int contact, double *reactionstep)#
compute Fixed Point Solution for the NCP formulation
- Parameters:
contact –
reactionstep –
-
void NCPGlocker_free(void)#
free memory for friction contact to NCP-Glocker