File numerics/src/FrictionContact/fc3d_onecontact_nonsmooth_Newton_solvers.h#

Go to the source code of this file

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

Each solver must have 4 functions in its interface:

  • initialize: link local static variables to the global ones (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

Typedefs

typedef void (*computeNonsmoothFunction)(double*, double*, double, double*, double*, double*, double*)#

Functions

void fc3d_onecontact_nonsmooth_Newton_solvers_initialize(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *options)#

initialize friction-contact 3D Newton solver

Parameters:
  • problem – to solve

  • localproblem – to solve

  • options – of the solver

int fc3d_onecontact_nonsmooth_Newton_solvers_solve(FrictionContactProblem *localproblem, double*, SolverOptions *options)#

solve friction-contact 3D problem with Newton

Parameters:
  • localproblem – to solve

  • options – of the solver

Returns:

0 iff successful.

void fc3d_onecontact_nonsmooth_Newton_solvers_free(FrictionContactProblem *problem, FrictionContactProblem *localproblem, SolverOptions *localsolver_options)#

free memory for friction contact 3D Newton solver

Parameters:
  • problem – the global problem to solve

  • localproblem – for freeing matrix0

  • localsolver_options – options of the solver

void fc3d_onecontact_nonsmooth_Newton_solvers_computeError(int dimension, double *velocity, double *reaction, double *output_error)#

compute error for friction-contact 3D problem with Newton

Parameters:
  • dimension – of the global problem

  • velocity[inout] vector

  • reaction – global reaction vector

  • output_error

void fc3d_onecontact_nonsmooth_Newton_AC_update(int number, FrictionContactProblem *problem, FrictionContactProblem *localproblem, double *reaction, SolverOptions *options)#

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

the rest is used to formalize the local problem)

Parameters:
  • problem – the global problem to solve

  • localproblem – the local problem to solve

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

  • reaction – global reaction (only the block corresponding to the current contact will be modified

  • options – of the solver

int fc3d_onecontact_nonsmooth_Newton_solvers_solve_direct(FrictionContactProblem *localproblem, double *R, SolverOptions *options)#
int fc3d_onecontact_nonsmooth_Newton_solvers_solve_damped(FrictionContactProblem *localproblem, double *R, SolverOptions *options)#
int fc3d_onecontact_nonsmooth_Newton_solvers_solve_hybrid(FrictionContactProblem *localproblem, double *local_reaction, SolverOptions *options)#