forked from goma/goma
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmm_shell_bc.h
172 lines (149 loc) · 10.5 KB
/
mm_shell_bc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/************************************************************************ *
* Goma - Multiphysics finite element software *
* Sandia National Laboratories *
* *
* Copyright (c) 2022 Goma Developers, National Technology & Engineering *
* Solutions of Sandia, LLC (NTESS) *
* *
* Under the terms of Contract DE-NA0003525, the U.S. Government retains *
* certain rights in this software. *
* *
* This software is distributed under the GNU General Public License. *
* See LICENSE file. *
\************************************************************************/
#ifndef GOMA_MM_SHELL_BC_H
#define GOMA_MM_SHELL_BC_H
#include "el_elm.h"
#include "exo_struct.h"
#include "mm_eh.h"
#include "mm_fill_ls.h"
#include "rf_fem_const.h"
#ifdef EXTERN
#undef EXTERN
#endif
#ifdef GOMA_MM_SHELL_BC_C
#define EXTERN /* do nothing */
#endif
#ifndef GOMA_MM_SHELL_BC_C
#define EXTERN extern
#endif
EXTERN void shell_n_dot_flow_bc_confined(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double flowrate, /* imposed flow rate */
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void lub_static_pressure(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double P_atm, /* imposed atmospheric pressure */
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void lub_press_hydro(double *func,
double d_func[MAX_VARIABLE_TYPES + MAX_CONC],
const double delta_p_x, /* Pressure variation in x direction */
const double delta_p_y, /* Pressure variation in y direction */
const double delta_p_z, /* Pressure variation in z direction */
const double p_0); /* Pressure datum */
EXTERN void shell_n_dot_flow_bc_film(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double flowrate, /* imposed flow rate */
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_n_dot_gradp_bc(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_n_dot_gradh_bc(double[DIM], /* func */
double[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE], /* d_func */
const double);
EXTERN void shell_n_dot_pflux_bc(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double flux, /* imposed particles flux */
const double time, /* current time */
const double dt); /* current time step size */
EXTERN void shell_n_dot_gas_velo_bc_tfmp(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double flux, /* imposed particles flux */
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_lubrication_outflow(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void apply_sdet(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void apply_sh_weak(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
double xi[DIM], /* Local stu coords */
const Exo_DB *exo, /* ExodusII database struct pointer */
const double dy_ds); /* applied dy_ds at boundary */
EXTERN void shell_n_dot_liq_velo_bc_tfmp(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double flux, /* imposed particles flux */
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_num_diff_bc_tfmp(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_tfmp_avg_plate_velo_liq(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void shell_tfmp_n_dot_grad_s(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double dt, /* current time step size */
double xi[DIM], /* Local stu coords */
const Exo_DB *exo); /* ExodusII database struct pointer */
EXTERN void apply_shell_traction_bc(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const int BC_name, /* BC name identifier */
const double tx, /* traction in x-direction */
const double ty, /* traction in y-direction */
const double tz); /* traction in z-direction */
EXTERN void
match_lubrication_film_pressure(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const int eb_mat_lubp, /* element block for lubp equation */
const int eb_mat_filmp); /* element block for filmp equation */
EXTERN void put_lub_flux_in_film /* mm_shell_bc.c */
(int, /* id - local element node number for the
* current node whose residual contribution
* is being sought */
int, /* I - Global node number */
int, /* ielem_dim - physical dimension of element,
* ie., 1, 2, 3 */
double[], /* resid_vector - Residual vector NO DUH! */
int, /* i_mat_lubp */
int, /* i_mat_filmp */
int[]); /* local_node_list_fs - MDE list to keep track
* of nodes at which liquid contributions have
* been transfered to solid (fluid-solid
* boundaries) */
EXTERN void shell_tfmp_avg_plate_velo_gas(double func[DIM],
double d_func[DIM][MAX_VARIABLE_TYPES + MAX_CONC][MDE],
const double time, /* current time */
const double delta_t, /* current time step size */
double xi[DIM], /* Local stu coordinates */
const Exo_DB *exo);
#endif