File numerics/src/FrictionContact/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.
Functions
-
void fc3d_projection_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem)¶
Initialize friction-contact 3D projection.
- Parameters
problem – : the global problem to solve
localproblem – : the local problem to initialize
-
void fc3d_projection_initialize_with_regularization(FrictionContactProblem *problem, FrictionContactProblem *localproblem)¶
Initialize friction-contact 3D projection with regularization.
- Parameters
problem – : the global problem to solve
localproblem – : the local problem to initialize
-
void fc3d_projection_update(int number, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
Update friction-contact 3D projection solver: formalize local problem for one contact.
- Parameters
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 –
-
void fc3d_projection_update_with_regularization(int number, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
Update friction-contact 3D projection solver: formalize local problem for one contact.
- Parameters
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 fc3d_projectionWithDiagonalization_solve(FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
solve friction-contact 3D problem with projection assuming that M is diagonal
- Parameters
localproblem – : the local problem to initialize
reaction –
options –
- Returns
0 if successfull
-
void fc3d_projectionWithDiagonalization_update(int number, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
Update friction-contact 3D projection solver: formalize local problem for one contact.
- Parameters
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 fc3d_projectionOnCone_solve(FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
solve friction-contact 3D problem with projection on the Cone
- Parameters
localproblem – : the local problem to initialize
reaction –
options –
- Returns
0 if successfull
-
void fc3d_projectionOnCylinder_update(int number, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
Update friction-contact 3D projection solver: formalize local problem for one contact.
- Parameters
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 fc3d_projectionOnConeWithLocalIteration_solve(FrictionContactProblem *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
- Parameters
localproblem – : the local problem to initialize
reaction –
options –
- Returns
0 if successfull
-
void fc3d_projectionOnConeWithLocalIteration_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
-
void fc3d_projectionOnConeWithLocalIteration_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
-
int fc3d_projectionOnCone_velocity_solve(FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
solve friction-contact 3D problem with projection on the Cone
- Parameters
localproblem – : the local problem to initialize
reaction –
options –
- Returns
0 if successfull
-
int fc3d_projectionOnCylinder_solve(FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
solve friction-contact 3D problem with projection on the (Tresca Cylinder)
- Parameters
options –
- Returns
0 if successfull
-
void fc3d_projectionOnCylinder_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *options)¶
-
void fc3d_projectionOnCylinder_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
-
int fc3d_projectionOnCylinderWithLocalIteration_solve(FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)¶
solve friction-contact 3D problem with projection on the (Tresca Cylinder)
- Parameters
localproblem – : the local problem to initialize
reaction –
options –
- Returns
0 if successfull
-
void fc3d_projectionOnCylinderWithLocalIteration_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *options, SolverOptions *localsolver_options)¶
-
void fc3d_projectionOnCylinderWithLocalIteration_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
-
void fc3d_projection_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
free memory for friction contact 3D projection solver
- Parameters
problem – : the problem to free
localproblem – : the problem to free
localsolver_options –
-
void fc3d_projection_with_regularization_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)¶
free memory for friction contact 3D projection solver
- Parameters
problem – : the problem to free
localproblem – : the problem to free
localsolver_options –