Program listing for file numerics/src/FrictionContact/rolling_fc_Solvers.h#
Return to documentation for this file
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