File numerics/src/FrictionContact/rolling_fc3d_projection.h

Go to the source code of this file

Typedef and functions declarations related to projection solver for 3 dimension frictional contact problems.

Each solver must have 4 functions in its interface:

  • initialize: link global static variables to the considered problem (M,q,…)

  • update: link/fill the local variables corresponding to sub-blocks of the full problem, for a specific contact

  • solve: solve the local problem

  • free We consider a “global” (ie for several contacts) problem, used to initialize the static global variables. Then a “local” (ie for one contact => size = 3) problem is built (update function) and solved (solve function).

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


void rolling_fc3d_projection_free(RollingFrictionContactProblem *problem, RollingFrictionContactProblem *localproblem, SolverOptions *localsolver_options)
void rolling_fc3d_projection_initialize(RollingFrictionContactProblem *problem, RollingFrictionContactProblem *localproblem)
void rolling_fc3d_projection_update(int number, RollingFrictionContactProblem *problem, RollingFrictionContactProblem *localproblem, double *reaction, SolverOptions *options)

Update friction-contact 3D projection solver: formalize local problem for one contact.

  • number: (position in global matrix) of the considered contact

  • problem: : the global problem to solve

  • localproblem: : the local problem to initialize

  • reaction: (only the block corresponding to the current contact will be modified, the rest is used to formalize the local problem)

  • options:

int rolling_fc3d_projectionOnCone_setDefaultSolverOptions(SolverOptions *options)
int rolling_fc3d_projectionOnCone_solve(RollingFrictionContactProblem *localproblem, double *reaction, SolverOptions *options)
void rolling_fc3d_projectionOnConeWithLocalIteration_free(RollingFrictionContactProblem *problem, RollingFrictionContactProblem *localproblem, SolverOptions *localsolver_options)
void rolling_fc3d_projectionOnConeWithLocalIteration_initialize(RollingFrictionContactProblem *problem, RollingFrictionContactProblem *localproblem, SolverOptions *localsolver_options)
int rolling_fc3d_projectionOnConeWithLocalIteration_setDefaultSolverOptions(SolverOptions *options)
int rolling_fc3d_projectionOnConeWithLocalIteration_solve(RollingFrictionContactProblem *localproblem, double *reaction, SolverOptions *options)

solve friction-contact 3D problem with projection on the Cone with local iteration up to convergence of the local problem


0 if successfull

  • localproblem: : the local problem to initialize

  • reaction:

  • options: