Program listing for file numerics/src/FrictionContact/rolling_fc_Solvers.h

Program listing for file numerics/src/FrictionContact/rolling_fc_Solvers.h#

  1#ifndef ROLLINGFRICTIONCONTACT3DSOLVERS_H
  2#define ROLLINGFRICTIONCONTACT3DSOLVERS_H
  3
  4
  5
  6#include "Friction_cst.h"
  7#include "RollingFrictionContactProblem.h"
  8#include "SolverOptions.h"
  9#include "rolling_fc3d_local_problem_tools.h"
 10#include "rolling_fc3d_projection.h"
 11
 12
 13typedef int (*RollingSolverPtr)(RollingFrictionContactProblem *, double *,
 14                                SolverOptions *);
 15
 16
 17typedef void (*RollingUpdatePtr)(int, RollingFrictionContactProblem *,
 18                                 RollingFrictionContactProblem *, double *,
 19                                 SolverOptions *);
 20
 21
 22typedef void (*RollingPostSolverPtr)(int, double *);
 23
 24
 25typedef void (*RollingComputeErrorPtr)(RollingFrictionContactProblem *,
 26                                       double *, double *, double,
 27                                       SolverOptions *, double, double *);
 28
 29
 30typedef void (*RollingFreeSolverPtr)(void);
 31
 32
 33typedef void (*RollingFreeSolverNSGSPtr)(RollingFrictionContactProblem *,
 34                                         RollingFrictionContactProblem *,
 35                                         SolverOptions *);
 36
 37
 38typedef void (*internalRollingSolverPtr)(RollingFrictionContactProblem *,
 39                                         double *, double *, int *,
 40                                         SolverOptions *);
 41
 42#if defined(__cplusplus) && !defined(BUILD_AS_CPP)
 43extern "C" {
 44#endif
 45
 46
 47
 48void rolling_fc3d_nsgs(RollingFrictionContactProblem *problem, double *reaction,
 49                       double *velocity, int *info, SolverOptions *options);
 50
 51void rolling_fc3d_nsgs_initialize_local_solver(
 52    RollingSolverPtr *solve, RollingUpdatePtr *update,
 53    RollingFreeSolverNSGSPtr *freeSolver, RollingComputeErrorPtr *computeError,
 54    RollingFrictionContactProblem *problem,
 55    RollingFrictionContactProblem *localproblem, SolverOptions *options);
 56
 57
 58
 59int rolling_fc3d_checkTrivialCase(RollingFrictionContactProblem *problem,
 60                                  double *velocity, double *reaction,
 61                                  SolverOptions *options);
 62
 63void rolling_fc3d_set_internalsolver_tolerance(
 64    RollingFrictionContactProblem *problem, SolverOptions *options,
 65    SolverOptions *internalsolver_options, double error);
 66
 67
 68void rfc3d_nsgs_set_default(SolverOptions *options);
 69void rfc3d_poc_withLocalIteration_set_default(SolverOptions *options);
 70void rfc3d_poc_set_default(SolverOptions *options);
 71
 72
 73void rolling_fc3d_admm(RollingFrictionContactProblem *problem, double *reaction,
 74                       double *velocity, int *info, SolverOptions *options);
 75
 76void rolling_fc3d_admm_init(RollingFrictionContactProblem *problem,
 77                            SolverOptions *options);
 78void rolling_fc3d_admm_free(RollingFrictionContactProblem *problem,
 79                            SolverOptions *options);
 80void rolling_fc3d_admm_set_default(SolverOptions *options);
 81
 82
 83void rolling_fc2d_nsgs(RollingFrictionContactProblem *problem, double *reaction,
 84                       double *velocity, int *info, SolverOptions *options);
 85
 86void rolling_fc2d_nsgs_initialize_local_solver(
 87    RollingSolverPtr *solve, RollingUpdatePtr *update,
 88    RollingFreeSolverNSGSPtr *freeSolver, RollingComputeErrorPtr *computeError,
 89    RollingFrictionContactProblem *problem,
 90    RollingFrictionContactProblem *localproblem, SolverOptions *options);
 91
 92
 93
 94int rolling_fc2d_checkTrivialCase(RollingFrictionContactProblem *problem,
 95                                  double *velocity, double *reaction,
 96                                  SolverOptions *options);
 97
 98void rolling_fc2d_set_internalsolver_tolerance(
 99    RollingFrictionContactProblem *problem, SolverOptions *options,
100    SolverOptions *internalsolver_options, double error);
101
102
103void rfc2d_nsgs_set_default(SolverOptions *options);
104void rfc2d_poc_withLocalIteration_set_default(SolverOptions *options);
105void rfc2d_poc_set_default(SolverOptions *options);
106
107
108
109#if defined(__cplusplus) && !defined(BUILD_AS_CPP)
110}
111#endif
112
113#endif