File numerics/src/FrictionContact/fc3d_nonsmooth_Newton_natural_map.h

Go to the source code of this file

Typedef and functions declarations related to natural map formulation for 3 dimension frictional contact problems in Local Coordinates.

Subroutines used when the friction-contact 3D problem is written using natural map


where M is an n by n matrix, q an n-dimensional vector, reaction an n-dimensional vector and velocity an n-dimensional vector.

We consider a “global” (ie for several contacts) problem, used to initialize the static global variables.


typedef void (*NaturalMapFun3x3Ptr)(double *reaction, double *velocity, double mu, double *rho, double *F, double *A, double *B)

The natural map function signature for a 3x3 block.


void fc3d_NaturalMapFunction(unsigned int problemSize, NaturalMapFun3x3Ptr computeACFun3x3, double *reaction3D, double *velocity3D, double *mu, double *rho3D, double *output_blocklist3, double *output_blocklist3x3_1, double *output_blocklist3x3_2)

The natural map function for several contacts.

On each contact, the specified natural map function in iparam[9] is called.

  • problemSize: the number of contacts.
  • computeACFun3x3: the block 3x3 natural map function.
  • reaction3D: the reactions at each contact (size: 3 x problemSize)
  • velocity3D: the velocities at each contact (size: 3 x problemSize)
  • mu: the mu parameter (size : problemSize)
  • rho3D: the rho parameters (size : 3 x problemSize)
  • output_blocklist3: the computed natural map function (size : 3 x problemSize)
  • output_blocklist3x3_1: the computed A part of gradient (size : 9 x problemSize)
  • output_blocklist3x3_2: the computed B param of gradient (size : 9 x problemSize)

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

Nonsmooth Newton solver based on the NaturalMap function for the local (reduced) frictional contact problem in the dense form.

  • problem: the problem to solve in dense or sparse block form
  • reaction: solution and initial guess for reaction
  • velocity: solution and initial guess for velocity
  • info: returned info
  • options: the solver options

int fc3d_nonsmooth_Newton_NaturalMap_compute_error(FrictionContactProblem *problem, double *z, double *w, double tolerance, SolverOptions *options, double *error)
int fc3d_nonsmooth_Newton_NaturalMap_setDefaultSolverOptions(SolverOptions *options)