MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_hypoelastic.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
2!>
3!! @file
4!! @brief Contains module m_hypoelastic
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
14
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
18
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32! New line at end of file is required for FYPP
33# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59! New line at end of file is required for FYPP
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
61
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138! New line at end of file is required for FYPP
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165! New line at end of file is required for FYPP
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
167
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
169
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
171
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
173
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
175
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
177
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223! New line at end of file is required for FYPP
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
225
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
227
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
229
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
231
232# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
233
234# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
235
236# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237
238# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241
242# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243
244# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249
250# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255
256# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261
262# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266! New line at end of file is required for FYPP
267# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
268
269# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
270
271! Caution:
272! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
273! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
274! For an example see misc/nvidia_uvm/bind.sh.
275# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
276
277# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
278
279# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
280
281# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
282
283# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
284
285# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286
287# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288
289# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290! New line at end of file is required for FYPP
291# 6 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp" 2
292
293!> @brief Computes hypoelastic stress-rate source terms and damage-state evolution
295
296 use m_derived_types !< definitions of the derived types
297 use m_global_parameters !< definitions of the global parameters
299 use m_helper
300
301 implicit none
302
303 private; public :: s_initialize_hypoelastic_module, &
307
308 real(wp), allocatable, dimension(:) :: gs_hypo
309
310# 23 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
311#if defined(MFC_OpenACC)
312# 23 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
313!$acc declare create(Gs_hypo)
314# 23 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
315#elif defined(MFC_OpenMP)
316# 23 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
317!$omp declare target (Gs_hypo)
318# 23 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
319#endif
320
321 real(wp), allocatable, dimension(:, :, :) :: du_dx_hypo, du_dy_hypo, du_dz_hypo
322 real(wp), allocatable, dimension(:, :, :) :: dv_dx_hypo, dv_dy_hypo, dv_dz_hypo
323 real(wp), allocatable, dimension(:, :, :) :: dw_dx_hypo, dw_dy_hypo, dw_dz_hypo
324
325# 28 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
326#if defined(MFC_OpenACC)
327# 28 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
328!$acc declare create(du_dx_hypo, du_dy_hypo, du_dz_hypo, dv_dx_hypo, dv_dy_hypo, dv_dz_hypo, dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
329# 28 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
330#elif defined(MFC_OpenMP)
331# 28 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
332!$omp declare target (du_dx_hypo, du_dy_hypo, du_dz_hypo, dv_dx_hypo, dv_dy_hypo, dv_dz_hypo, dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
333# 28 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
334#endif
335
336 real(wp), allocatable, dimension(:, :, :) :: rho_k_field, g_k_field
337
338# 31 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
339#if defined(MFC_OpenACC)
340# 31 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
341!$acc declare create(rho_K_field, G_K_field)
342# 31 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
343#elif defined(MFC_OpenMP)
344# 31 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
345!$omp declare target (rho_K_field, G_K_field)
346# 31 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
347#endif
348
349 real(wp), allocatable, dimension(:, :) :: fd_coeff_x_hypo
350 real(wp), allocatable, dimension(:, :) :: fd_coeff_y_hypo
351 real(wp), allocatable, dimension(:, :) :: fd_coeff_z_hypo
352
353# 36 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
354#if defined(MFC_OpenACC)
355# 36 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
356!$acc declare create(fd_coeff_x_hypo, fd_coeff_y_hypo, fd_coeff_z_hypo)
357# 36 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
358#elif defined(MFC_OpenMP)
359# 36 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
360!$omp declare target (fd_coeff_x_hypo, fd_coeff_y_hypo, fd_coeff_z_hypo)
361# 36 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
362#endif
363
364contains
365
366 !> @brief Allocates arrays and computes finite-difference coefficients for the hypoelastic stress model.
368
369 integer :: i
370
371#ifdef MFC_DEBUG
372# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
373 block
374# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
375 use iso_fortran_env, only: output_unit
376# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
377
378# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
379 print *, 'm_hypoelastic.fpp:45: ', '@:ALLOCATE(Gs_hypo(1:num_fluids))'
380# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
381
382# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
383 call flush (output_unit)
384# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
385 end block
386# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
387#endif
388# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
389 allocate (gs_hypo(1:num_fluids))
390# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
391
392# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
393
394# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
395#if defined(MFC_OpenACC)
396# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
397!$acc enter data create(Gs_hypo)
398# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
399#elif defined(MFC_OpenMP)
400# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
401!$omp target enter data map(always,alloc:Gs_hypo)
402# 45 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
403#endif
404#ifdef MFC_DEBUG
405# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
406 block
407# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
408 use iso_fortran_env, only: output_unit
409# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
410
411# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
412 print *, 'm_hypoelastic.fpp:46: ', '@:ALLOCATE(rho_K_field(0:m,0:n,0:p), G_K_field(0:m,0:n,0:p))'
413# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
414
415# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
416 call flush (output_unit)
417# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
418 end block
419# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
420#endif
421# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
422 allocate (rho_k_field(0:m,0:n,0:p), g_k_field(0:m,0:n,0:p))
423# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
424
425# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
426
427# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
428
429# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
430#if defined(MFC_OpenACC)
431# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
432!$acc enter data create(rho_K_field, G_K_field)
433# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
434#elif defined(MFC_OpenMP)
435# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
436!$omp target enter data map(always,alloc:rho_K_field, G_K_field)
437# 46 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
438#endif
439#ifdef MFC_DEBUG
440# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
441 block
442# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
443 use iso_fortran_env, only: output_unit
444# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
445
446# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
447 print *, 'm_hypoelastic.fpp:47: ', '@:ALLOCATE(du_dx_hypo(0:m,0:n,0:p))'
448# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
449
450# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
451 call flush (output_unit)
452# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
453 end block
454# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
455#endif
456# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
457 allocate (du_dx_hypo(0:m,0:n,0:p))
458# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
459
460# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
461
462# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
463#if defined(MFC_OpenACC)
464# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
465!$acc enter data create(du_dx_hypo)
466# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
467#elif defined(MFC_OpenMP)
468# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
469!$omp target enter data map(always,alloc:du_dx_hypo)
470# 47 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
471#endif
472 if (n > 0) then
473#ifdef MFC_DEBUG
474# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
475 block
476# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
477 use iso_fortran_env, only: output_unit
478# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
479
480# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
481 print *, 'm_hypoelastic.fpp:49: ', '@:ALLOCATE(du_dy_hypo(0:m,0:n,0:p), dv_dx_hypo(0:m,0:n,0:p), dv_dy_hypo(0:m,0:n,0:p))'
482# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
483
484# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
485 call flush (output_unit)
486# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
487 end block
488# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
489#endif
490# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
491 allocate (du_dy_hypo(0:m,0:n,0:p), dv_dx_hypo(0:m,0:n,0:p), dv_dy_hypo(0:m,0:n,0:p))
492# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
493
494# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
495
496# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
497
498# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
499
500# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
501#if defined(MFC_OpenACC)
502# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
503!$acc enter data create(du_dy_hypo, dv_dx_hypo, dv_dy_hypo)
504# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
505#elif defined(MFC_OpenMP)
506# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
507!$omp target enter data map(always,alloc:du_dy_hypo, dv_dx_hypo, dv_dy_hypo)
508# 49 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
509#endif
510 if (p > 0) then
511#ifdef MFC_DEBUG
512# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
513 block
514# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
515 use iso_fortran_env, only: output_unit
516# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
517
518# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
519 print *, 'm_hypoelastic.fpp:51: ', '@:ALLOCATE(du_dz_hypo(0:m,0:n,0:p), dv_dz_hypo(0:m,0:n,0:p))'
520# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
521
522# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
523 call flush (output_unit)
524# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
525 end block
526# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
527#endif
528# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
529 allocate (du_dz_hypo(0:m,0:n,0:p), dv_dz_hypo(0:m,0:n,0:p))
530# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
531
532# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
533
534# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
535
536# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
537#if defined(MFC_OpenACC)
538# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
539!$acc enter data create(du_dz_hypo, dv_dz_hypo)
540# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
541#elif defined(MFC_OpenMP)
542# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
543!$omp target enter data map(always,alloc:du_dz_hypo, dv_dz_hypo)
544# 51 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
545#endif
546#ifdef MFC_DEBUG
547# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
548 block
549# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
550 use iso_fortran_env, only: output_unit
551# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
552
553# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
554 print *, 'm_hypoelastic.fpp:52: ', '@:ALLOCATE(dw_dx_hypo(0:m,0:n,0:p), dw_dy_hypo(0:m,0:n,0:p), dw_dz_hypo(0:m,0:n,0:p))'
555# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
556
557# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
558 call flush (output_unit)
559# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
560 end block
561# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
562#endif
563# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
564 allocate (dw_dx_hypo(0:m,0:n,0:p), dw_dy_hypo(0:m,0:n,0:p), dw_dz_hypo(0:m,0:n,0:p))
565# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
566
567# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
568
569# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
570
571# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
572
573# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
574#if defined(MFC_OpenACC)
575# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
576!$acc enter data create(dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
577# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
578#elif defined(MFC_OpenMP)
579# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
580!$omp target enter data map(always,alloc:dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
581# 52 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
582#endif
583 end if
584 end if
585
586 do i = 1, num_fluids
587 gs_hypo(i) = fluid_pp(i)%G
588 end do
589
590# 59 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
591#if defined(MFC_OpenACC)
592# 59 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
593!$acc update device(Gs_hypo)
594# 59 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
595#elif defined(MFC_OpenMP)
596# 59 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
597!$omp target update to(Gs_hypo)
598# 59 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
599#endif
600
601#ifdef MFC_DEBUG
602# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
603 block
604# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
605 use iso_fortran_env, only: output_unit
606# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
607
608# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
609 print *, 'm_hypoelastic.fpp:61: ', '@:ALLOCATE(fd_coeff_x_hypo(-fd_number:fd_number, 0:m))'
610# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
611
612# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
613 call flush (output_unit)
614# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
615 end block
616# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
617#endif
618# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
619 allocate (fd_coeff_x_hypo(-fd_number:fd_number, 0:m))
620# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
621
622# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
623
624# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
625#if defined(MFC_OpenACC)
626# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
627!$acc enter data create(fd_coeff_x_hypo)
628# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
629#elif defined(MFC_OpenMP)
630# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
631!$omp target enter data map(always,alloc:fd_coeff_x_hypo)
632# 61 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
633#endif
634 if (n > 0) then
635#ifdef MFC_DEBUG
636# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
637 block
638# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
639 use iso_fortran_env, only: output_unit
640# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
641
642# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
643 print *, 'm_hypoelastic.fpp:63: ', '@:ALLOCATE(fd_coeff_y_hypo(-fd_number:fd_number, 0:n))'
644# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
645
646# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
647 call flush (output_unit)
648# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
649 end block
650# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
651#endif
652# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
653 allocate (fd_coeff_y_hypo(-fd_number:fd_number, 0:n))
654# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
655
656# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
657
658# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
659#if defined(MFC_OpenACC)
660# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
661!$acc enter data create(fd_coeff_y_hypo)
662# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
663#elif defined(MFC_OpenMP)
664# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
665!$omp target enter data map(always,alloc:fd_coeff_y_hypo)
666# 63 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
667#endif
668 end if
669 if (p > 0) then
670#ifdef MFC_DEBUG
671# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
672 block
673# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
674 use iso_fortran_env, only: output_unit
675# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
676
677# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
678 print *, 'm_hypoelastic.fpp:66: ', '@:ALLOCATE(fd_coeff_z_hypo(-fd_number:fd_number, 0:p))'
679# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
680
681# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
682 call flush (output_unit)
683# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
684 end block
685# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
686#endif
687# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
688 allocate (fd_coeff_z_hypo(-fd_number:fd_number, 0:p))
689# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
690
691# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
692
693# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
694#if defined(MFC_OpenACC)
695# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
696!$acc enter data create(fd_coeff_z_hypo)
697# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
698#elif defined(MFC_OpenMP)
699# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
700!$omp target enter data map(always,alloc:fd_coeff_z_hypo)
701# 66 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
702#endif
703 end if
704
705 ! Computing centered finite difference coefficients
706 call s_compute_finite_difference_coefficients(m, x_cc, fd_coeff_x_hypo, buff_size, &
707 fd_number, fd_order)
708
709# 72 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
710#if defined(MFC_OpenACC)
711# 72 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
712!$acc update device(fd_coeff_x_hypo)
713# 72 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
714#elif defined(MFC_OpenMP)
715# 72 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
716!$omp target update to(fd_coeff_x_hypo)
717# 72 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
718#endif
719 if (n > 0) then
720 call s_compute_finite_difference_coefficients(n, y_cc, fd_coeff_y_hypo, buff_size, &
721 fd_number, fd_order)
722
723# 76 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
724#if defined(MFC_OpenACC)
725# 76 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
726!$acc update device(fd_coeff_y_hypo)
727# 76 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
728#elif defined(MFC_OpenMP)
729# 76 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
730!$omp target update to(fd_coeff_y_hypo)
731# 76 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
732#endif
733 end if
734 if (p > 0) then
735 call s_compute_finite_difference_coefficients(p, z_cc, fd_coeff_z_hypo, buff_size, &
736 fd_number, fd_order)
737
738# 81 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
739#if defined(MFC_OpenACC)
740# 81 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
741!$acc update device(fd_coeff_z_hypo)
742# 81 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
743#elif defined(MFC_OpenMP)
744# 81 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
745!$omp target update to(fd_coeff_z_hypo)
746# 81 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
747#endif
748 end if
749
751
752 !> The purpose of this procedure is to compute the source terms
753 !! that are needed for the elastic stress equations
754 !! @param idir Dimension splitting index
755 !! @param q_prim_vf Primitive variables
756 !! @param rhs_vf rhs variables
757 subroutine s_compute_hypoelastic_rhs(idir, q_prim_vf, rhs_vf)
758
759 integer, intent(in) :: idir
760 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
761 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
762
763 real(wp) :: rho_k, g_k
764
765 integer :: i, k, l, q, r !< Loop variables
766 integer :: ndirs !< Number of coordinate directions
767
768 ndirs = 1; if (n > 0) ndirs = 2; if (p > 0) ndirs = 3
769
770 if (idir == 1) then
771 ! calculate velocity gradients + rho_K and G_K
772 ! TODO: re-organize these loops one by one for GPU efficiency if possible?
773
774
775# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
776
777# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
778#if defined(MFC_OpenACC)
779# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
780!$acc parallel loop collapse(3) gang vector default(present)
781# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
782#elif defined(MFC_OpenMP)
783# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
784
785# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
786
787# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
788
789# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
790!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
791# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
792#endif
793# 108 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
794
795 do q = 0, p
796 do l = 0, n
797 do k = 0, m
798 du_dx_hypo(k, l, q) = 0._wp
799 end do
800 end do
801 end do
802
803# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
804
805# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
806#if defined(MFC_OpenACC)
807# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
808!$acc end parallel loop
809# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
810#elif defined(MFC_OpenMP)
811# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
812
813# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
814
815# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
816!$omp end target teams loop
817# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
818#endif
819# 116 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
820
821
822
823# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
824
825# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
826#if defined(MFC_OpenACC)
827# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
828!$acc parallel loop collapse(3) gang vector default(present)
829# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
830#elif defined(MFC_OpenMP)
831# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
832
833# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
834
835# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
836
837# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
838!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
839# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
840#endif
841# 118 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
842
843 do q = 0, p
844 do l = 0, n
845 do k = 0, m
846
847# 122 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
848#if defined(MFC_OpenACC)
849# 122 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
850!$acc loop seq
851# 122 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
852#elif defined(MFC_OpenMP)
853# 122 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
854
855# 122 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
856#endif
857 do r = -fd_number, fd_number
858 du_dx_hypo(k, l, q) = du_dx_hypo(k, l, q) &
859 + q_prim_vf(momxb)%sf(k + r, l, q)*fd_coeff_x_hypo(r, k)
860 end do
861
862 end do
863 end do
864 end do
865
866# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
867
868# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
869#if defined(MFC_OpenACC)
870# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
871!$acc end parallel loop
872# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
873#elif defined(MFC_OpenMP)
874# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
875
876# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
877
878# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
879!$omp end target teams loop
880# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
881#endif
882# 131 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
883
884
885 if (ndirs > 1) then
886
887# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
888
889# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
890#if defined(MFC_OpenACC)
891# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
892!$acc parallel loop collapse(3) gang vector default(present)
893# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
894#elif defined(MFC_OpenMP)
895# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
896
897# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
898
899# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
900
901# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
902!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
903# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
904#endif
905# 134 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
906
907 do q = 0, p
908 do l = 0, n
909 do k = 0, m
910 du_dy_hypo(k, l, q) = 0._wp; dv_dx_hypo(k, l, q) = 0._wp; dv_dy_hypo(k, l, q) = 0._wp
911 end do
912 end do
913 end do
914
915# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
916
917# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
918#if defined(MFC_OpenACC)
919# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
920!$acc end parallel loop
921# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
922#elif defined(MFC_OpenMP)
923# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
924
925# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
926
927# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
928!$omp end target teams loop
929# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
930#endif
931# 142 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
932
933
934
935# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
936
937# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
938#if defined(MFC_OpenACC)
939# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
940!$acc parallel loop collapse(3) gang vector default(present)
941# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
942#elif defined(MFC_OpenMP)
943# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
944
945# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
946
947# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
948
949# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
950!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
951# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
952#endif
953# 144 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
954
955 do q = 0, p
956 do l = 0, n
957 do k = 0, m
958
959# 148 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
960#if defined(MFC_OpenACC)
961# 148 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
962!$acc loop seq
963# 148 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
964#elif defined(MFC_OpenMP)
965# 148 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
966
967# 148 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
968#endif
969 do r = -fd_number, fd_number
970 du_dy_hypo(k, l, q) = du_dy_hypo(k, l, q) &
971 + q_prim_vf(momxb)%sf(k, l + r, q)*fd_coeff_y_hypo(r, l)
972 dv_dx_hypo(k, l, q) = dv_dx_hypo(k, l, q) &
973 + q_prim_vf(momxb + 1)%sf(k + r, l, q)*fd_coeff_x_hypo(r, k)
974 dv_dy_hypo(k, l, q) = dv_dy_hypo(k, l, q) &
975 + q_prim_vf(momxb + 1)%sf(k, l + r, q)*fd_coeff_y_hypo(r, l)
976 end do
977 end do
978 end do
979 end do
980
981# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
982
983# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
984#if defined(MFC_OpenACC)
985# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
986!$acc end parallel loop
987# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
988#elif defined(MFC_OpenMP)
989# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
990
991# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
992
993# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
994!$omp end target teams loop
995# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
996#endif
997# 160 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
998
999
1000 ! 3D
1001 if (ndirs == 3) then
1002
1003
1004# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1005
1006# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1007#if defined(MFC_OpenACC)
1008# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1009!$acc parallel loop collapse(3) gang vector default(present)
1010# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1011#elif defined(MFC_OpenMP)
1012# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1013
1014# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1015
1016# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1017
1018# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1019!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1020# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1021#endif
1022# 165 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1023
1024 do q = 0, p
1025 do l = 0, n
1026 do k = 0, m
1027 du_dz_hypo(k, l, q) = 0._wp; dv_dz_hypo(k, l, q) = 0._wp; dw_dx_hypo(k, l, q) = 0._wp;
1028 dw_dy_hypo(k, l, q) = 0._wp; dw_dz_hypo(k, l, q) = 0._wp;
1029 end do
1030 end do
1031 end do
1032
1033# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1034
1035# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1036#if defined(MFC_OpenACC)
1037# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1038!$acc end parallel loop
1039# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1040#elif defined(MFC_OpenMP)
1041# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1042
1043# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1044
1045# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1046!$omp end target teams loop
1047# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1048#endif
1049# 174 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1050
1051
1052
1053# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1054
1055# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1056#if defined(MFC_OpenACC)
1057# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1058!$acc parallel loop collapse(3) gang vector default(present)
1059# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1060#elif defined(MFC_OpenMP)
1061# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1062
1063# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1064
1065# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1066
1067# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1068!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1069# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1070#endif
1071# 176 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1072
1073 do q = 0, p
1074 do l = 0, n
1075 do k = 0, m
1076
1077# 180 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1078#if defined(MFC_OpenACC)
1079# 180 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1080!$acc loop seq
1081# 180 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1082#elif defined(MFC_OpenMP)
1083# 180 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1084
1085# 180 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1086#endif
1087 do r = -fd_number, fd_number
1088 du_dz_hypo(k, l, q) = du_dz_hypo(k, l, q) &
1089 + q_prim_vf(momxb)%sf(k, l, q + r)*fd_coeff_z_hypo(r, q)
1090 dv_dz_hypo(k, l, q) = dv_dz_hypo(k, l, q) &
1091 + q_prim_vf(momxb + 1)%sf(k, l, q + r)*fd_coeff_z_hypo(r, q)
1092 dw_dx_hypo(k, l, q) = dw_dx_hypo(k, l, q) &
1093 + q_prim_vf(momxe)%sf(k + r, l, q)*fd_coeff_x_hypo(r, k)
1094 dw_dy_hypo(k, l, q) = dw_dy_hypo(k, l, q) &
1095 + q_prim_vf(momxe)%sf(k, l + r, q)*fd_coeff_y_hypo(r, l)
1096 dw_dz_hypo(k, l, q) = dw_dz_hypo(k, l, q) &
1097 + q_prim_vf(momxe)%sf(k, l, q + r)*fd_coeff_z_hypo(r, q)
1098 end do
1099 end do
1100 end do
1101 end do
1102
1103# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1104
1105# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1106#if defined(MFC_OpenACC)
1107# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1108!$acc end parallel loop
1109# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1110#elif defined(MFC_OpenMP)
1111# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1112
1113# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1114
1115# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1116!$omp end target teams loop
1117# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1118#endif
1119# 196 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1120
1121 end if
1122 end if
1123
1124
1125# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1126
1127# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1128#if defined(MFC_OpenACC)
1129# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1130!$acc parallel loop collapse(3) gang vector default(present) private(rho_K, G_K)
1131# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1132#elif defined(MFC_OpenMP)
1133# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1134
1135# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1136
1137# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1138
1139# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1140!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(rho_K, G_K)
1141# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1142#endif
1143# 200 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1144
1145 do q = 0, p
1146 do l = 0, n
1147 do k = 0, m
1148 rho_k = 0._wp; g_k = 0._wp
1149 do i = 1, num_fluids
1150 rho_k = rho_k + q_prim_vf(i)%sf(k, l, q) !alpha_rho_K(1)
1151 g_k = g_k + q_prim_vf(advxb - 1 + i)%sf(k, l, q)*gs_hypo(i) !alpha_K(1) * Gs_hypo(1)
1152 end do
1153
1154 if (cont_damage) g_k = g_k*max((1._wp - q_prim_vf(damage_idx)%sf(k, l, q)), 0._wp)
1155
1156 rho_k_field(k, l, q) = rho_k
1157 g_k_field(k, l, q) = g_k
1158
1159 !TODO: take this out if not needed
1160 if (g_k < verysmall) then
1161 g_k_field(k, l, q) = 0
1162 end if
1163 end do
1164 end do
1165 end do
1166
1167# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1168
1169# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1170#if defined(MFC_OpenACC)
1171# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1172!$acc end parallel loop
1173# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1174#elif defined(MFC_OpenMP)
1175# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1176
1177# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1178
1179# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1180!$omp end target teams loop
1181# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1182#endif
1183# 222 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1184
1185
1186 ! apply rhs source term to elastic stress equation
1187
1188# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1189
1190# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1191#if defined(MFC_OpenACC)
1192# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1193!$acc parallel loop collapse(3) gang vector default(present)
1194# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1195#elif defined(MFC_OpenMP)
1196# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1197
1198# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1199
1200# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1201
1202# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1203!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1204# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1205#endif
1206# 225 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1207
1208 do q = 0, p
1209 do l = 0, n
1210 do k = 0, m
1211 rhs_vf(strxb)%sf(k, l, q) = &
1212 rhs_vf(strxb)%sf(k, l, q) + rho_k_field(k, l, q)* &
1213 ((4._wp*g_k_field(k, l, q)/3._wp) + &
1214 q_prim_vf(strxb)%sf(k, l, q))* &
1215 du_dx_hypo(k, l, q)
1216 end do
1217 end do
1218 end do
1219
1220# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1221
1222# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1223#if defined(MFC_OpenACC)
1224# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1225!$acc end parallel loop
1226# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1227#elif defined(MFC_OpenMP)
1228# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1229
1230# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1231
1232# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1233!$omp end target teams loop
1234# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1235#endif
1236# 237 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1237
1238
1239 elseif (idir == 2) then
1240
1241# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1242
1243# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1244#if defined(MFC_OpenACC)
1245# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1246!$acc parallel loop collapse(3) gang vector default(present)
1247# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1248#elif defined(MFC_OpenMP)
1249# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1250
1251# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1252
1253# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1254
1255# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1256!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1257# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1258#endif
1259# 240 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1260
1261 do q = 0, p
1262 do l = 0, n
1263 do k = 0, m
1264 rhs_vf(strxb)%sf(k, l, q) = rhs_vf(strxb)%sf(k, l, q) + rho_k_field(k, l, q)* &
1265 (q_prim_vf(strxb + 1)%sf(k, l, q)*du_dy_hypo(k, l, q) + &
1266 q_prim_vf(strxb + 1)%sf(k, l, q)*du_dy_hypo(k, l, q) - &
1267 q_prim_vf(strxb)%sf(k, l, q)*dv_dy_hypo(k, l, q) - &
1268 2._wp*g_k_field(k, l, q)*(1._wp/3._wp)*dv_dy_hypo(k, l, q))
1269
1270 rhs_vf(strxb + 1)%sf(k, l, q) = rhs_vf(strxb + 1)%sf(k, l, q) + rho_k_field(k, l, q)* &
1271 (q_prim_vf(strxb + 1)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1272 q_prim_vf(strxb)%sf(k, l, q)*dv_dx_hypo(k, l, q) - &
1273 q_prim_vf(strxb + 1)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1274 q_prim_vf(strxb + 2)%sf(k, l, q)*du_dy_hypo(k, l, q) + &
1275 q_prim_vf(strxb + 1)%sf(k, l, q)*dv_dy_hypo(k, l, q) - &
1276 q_prim_vf(strxb + 1)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1277 2._wp*g_k_field(k, l, q)*(1._wp/2._wp)*(du_dy_hypo(k, l, q) + &
1278 dv_dx_hypo(k, l, q)))
1279
1280 rhs_vf(strxb + 2)%sf(k, l, q) = rhs_vf(strxb + 2)%sf(k, l, q) + rho_k_field(k, l, q)* &
1281 (q_prim_vf(strxb + 1)%sf(k, l, q)*dv_dx_hypo(k, l, q) + &
1282 q_prim_vf(strxb + 1)%sf(k, l, q)*dv_dx_hypo(k, l, q) - &
1283 q_prim_vf(strxb + 2)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1284 q_prim_vf(strxb + 2)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1285 q_prim_vf(strxb + 2)%sf(k, l, q)*dv_dy_hypo(k, l, q) - &
1286 q_prim_vf(strxb + 2)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1287 2._wp*g_k_field(k, l, q)*(dv_dy_hypo(k, l, q) - (1._wp/3._wp)* &
1288 (du_dx_hypo(k, l, q) + &
1289 dv_dy_hypo(k, l, q))))
1290 end do
1291 end do
1292 end do
1293
1294# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1295
1296# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1297#if defined(MFC_OpenACC)
1298# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1299!$acc end parallel loop
1300# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1301#elif defined(MFC_OpenMP)
1302# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1303
1304# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1305
1306# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1307!$omp end target teams loop
1308# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1309#endif
1310# 273 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1311
1312
1313 elseif (idir == 3) then
1314
1315# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1316
1317# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1318#if defined(MFC_OpenACC)
1319# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1320!$acc parallel loop collapse(3) gang vector default(present)
1321# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1322#elif defined(MFC_OpenMP)
1323# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1324
1325# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1326
1327# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1328
1329# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1330!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1331# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1332#endif
1333# 276 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1334
1335 do q = 0, p
1336 do l = 0, n
1337 do k = 0, m
1338 rhs_vf(strxb)%sf(k, l, q) = rhs_vf(strxb)%sf(k, l, q) + rho_k_field(k, l, q)* &
1339 (q_prim_vf(strxb + 3)%sf(k, l, q)*du_dz_hypo(k, l, q) + &
1340 q_prim_vf(strxb + 3)%sf(k, l, q)*du_dz_hypo(k, l, q) - &
1341 q_prim_vf(strxb)%sf(k, l, q)*dw_dz_hypo(k, l, q) - &
1342 2._wp*g_k_field(k, l, q)*(1._wp/3._wp)*dw_dz_hypo(k, l, q))
1343
1344 rhs_vf(strxb + 1)%sf(k, l, q) = rhs_vf(strxb + 1)%sf(k, l, q) + rho_k_field(k, l, q)* &
1345 (q_prim_vf(strxb + 4)%sf(k, l, q)*du_dz_hypo(k, l, q) + &
1346 q_prim_vf(strxb + 3)%sf(k, l, q)*dv_dz_hypo(k, l, q) - &
1347 q_prim_vf(strxb + 1)%sf(k, l, q)*dw_dz_hypo(k, l, q))
1348
1349 rhs_vf(strxb + 2)%sf(k, l, q) = rhs_vf(strxb + 2)%sf(k, l, q) + rho_k_field(k, l, q)* &
1350 (q_prim_vf(strxb + 4)%sf(k, l, q)*dv_dz_hypo(k, l, q) + &
1351 q_prim_vf(strxb + 4)%sf(k, l, q)*dv_dz_hypo(k, l, q) - &
1352 q_prim_vf(strxb + 2)%sf(k, l, q)*dw_dz_hypo(k, l, q) - &
1353 2._wp*g_k_field(k, l, q)*(1._wp/3._wp)*dw_dz_hypo(k, l, q))
1354
1355 rhs_vf(strxb + 3)%sf(k, l, q) = rhs_vf(strxb + 3)%sf(k, l, q) + rho_k_field(k, l, q)* &
1356 (q_prim_vf(strxb + 3)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1357 q_prim_vf(strxb)%sf(k, l, q)*dw_dx_hypo(k, l, q) - &
1358 q_prim_vf(strxb + 3)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1359 q_prim_vf(strxb + 4)%sf(k, l, q)*du_dy_hypo(k, l, q) + &
1360 q_prim_vf(strxb + 1)%sf(k, l, q)*dw_dy_hypo(k, l, q) - &
1361 q_prim_vf(strxb + 3)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1362 q_prim_vf(strxb + 5)%sf(k, l, q)*du_dz_hypo(k, l, q) + &
1363 q_prim_vf(strxb + 3)%sf(k, l, q)*dw_dz_hypo(k, l, q) - &
1364 q_prim_vf(strxb + 3)%sf(k, l, q)*dw_dz_hypo(k, l, q) + &
1365 2._wp*g_k_field(k, l, q)*(1._wp/2._wp)*(du_dz_hypo(k, l, q) + &
1366 dw_dx_hypo(k, l, q)))
1367
1368 rhs_vf(strxb + 4)%sf(k, l, q) = rhs_vf(strxb + 4)%sf(k, l, q) + rho_k_field(k, l, q)* &
1369 (q_prim_vf(strxb + 3)%sf(k, l, q)*dv_dx_hypo(k, l, q) + &
1370 q_prim_vf(strxb + 1)%sf(k, l, q)*dw_dx_hypo(k, l, q) - &
1371 q_prim_vf(strxb + 4)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1372 q_prim_vf(strxb + 4)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1373 q_prim_vf(strxb + 2)%sf(k, l, q)*dw_dy_hypo(k, l, q) - &
1374 q_prim_vf(strxb + 4)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1375 q_prim_vf(strxb + 5)%sf(k, l, q)*dv_dz_hypo(k, l, q) + &
1376 q_prim_vf(strxb + 4)%sf(k, l, q)*dw_dz_hypo(k, l, q) - &
1377 q_prim_vf(strxb + 4)%sf(k, l, q)*dw_dz_hypo(k, l, q) + &
1378 2._wp*g_k_field(k, l, q)*(1._wp/2._wp)*(dv_dz_hypo(k, l, q) + &
1379 dw_dy_hypo(k, l, q)))
1380
1381 rhs_vf(strxe)%sf(k, l, q) = rhs_vf(strxe)%sf(k, l, q) + rho_k_field(k, l, q)* &
1382 (q_prim_vf(strxe - 2)%sf(k, l, q)*dw_dx_hypo(k, l, q) + &
1383 q_prim_vf(strxe - 2)%sf(k, l, q)*dw_dx_hypo(k, l, q) - &
1384 q_prim_vf(strxe)%sf(k, l, q)*du_dx_hypo(k, l, q) + &
1385 q_prim_vf(strxe - 1)%sf(k, l, q)*dw_dy_hypo(k, l, q) + &
1386 q_prim_vf(strxe - 1)%sf(k, l, q)*dw_dy_hypo(k, l, q) - &
1387 q_prim_vf(strxe)%sf(k, l, q)*dv_dy_hypo(k, l, q) + &
1388 q_prim_vf(strxe)%sf(k, l, q)*dw_dz_hypo(k, l, q) + &
1389 q_prim_vf(strxe)%sf(k, l, q)*dw_dz_hypo(k, l, q) - &
1390 q_prim_vf(strxe)%sf(k, l, q)*dw_dz_hypo(k, l, q) + &
1391 2._wp*g_k_field(k, l, q)*(dw_dz_hypo(k, l, q) - (1._wp/3._wp)* &
1392 (du_dx_hypo(k, l, q) + &
1393 dv_dy_hypo(k, l, q) + &
1394 dw_dz_hypo(k, l, q))))
1395 end do
1396 end do
1397 end do
1398
1399# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1400
1401# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1402#if defined(MFC_OpenACC)
1403# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1404!$acc end parallel loop
1405# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1406#elif defined(MFC_OpenMP)
1407# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1408
1409# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1410
1411# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1412!$omp end target teams loop
1413# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1414#endif
1415# 340 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1416
1417 end if
1418
1419 if (cyl_coord .and. idir == 2) then
1420
1421
1422# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1423
1424# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1425#if defined(MFC_OpenACC)
1426# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1427!$acc parallel loop collapse(3) gang vector default(present)
1428# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1429#elif defined(MFC_OpenMP)
1430# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1431
1432# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1433
1434# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1435
1436# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1437!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1438# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1439#endif
1440# 345 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1441
1442 do q = 0, p
1443 do l = 0, n
1444 do k = 0, m
1445 ! S_xx -= rho * v/r * (tau_xx + 2/3*G)
1446 rhs_vf(strxb)%sf(k, l, q) = rhs_vf(strxb)%sf(k, l, q) - &
1447 rho_k_field(k, l, q)*q_prim_vf(momxb + 1)%sf(k, l, q)/y_cc(l)* &
1448 (q_prim_vf(strxb)%sf(k, l, q) + (2._wp/3._wp)*g_k_field(k, l, q)) ! tau_xx + 2/3*G
1449
1450 ! S_xr -= rho * v/r * tau_xr
1451 rhs_vf(strxb + 1)%sf(k, l, q) = rhs_vf(strxb + 1)%sf(k, l, q) - &
1452 rho_k_field(k, l, q)*q_prim_vf(momxb + 1)%sf(k, l, q)/y_cc(l)* &
1453 q_prim_vf(strxb + 1)%sf(k, l, q) ! tau_xx
1454
1455 ! S_rr -= rho * v/r * (tau_rr + 2/3*G)
1456 rhs_vf(strxb + 2)%sf(k, l, q) = rhs_vf(strxb + 2)%sf(k, l, q) - &
1457 rho_k_field(k, l, q)*q_prim_vf(momxb + 1)%sf(k, l, q)/y_cc(l)* &
1458 (q_prim_vf(strxb + 2)%sf(k, l, q) + (2._wp/3._wp)*g_k_field(k, l, q)) ! tau_rr + 2/3*G
1459
1460 ! S_thetatheta += rho * ( -(tau_thetatheta + 2/3*G)*(du/dx + dv/dr + v/r) + 2*(tau_thetatheta + G)*v/r )
1461 rhs_vf(strxb + 3)%sf(k, l, q) = rhs_vf(strxb + 3)%sf(k, l, q) + &
1462 rho_k_field(k, l, q)*( &
1463 -(q_prim_vf(strxb + 3)%sf(k, l, q) + (2._wp/3._wp)*g_k_field(k, l, q))* &
1464 (du_dx_hypo(k, l, q) + dv_dy_hypo(k, l, q) + q_prim_vf(momxb + 1)%sf(k, l, q)/y_cc(l)) &
1465 + 2._wp*(q_prim_vf(strxb + 3)%sf(k, l, q) + g_k_field(k, l, q))*q_prim_vf(momxb + 1)%sf(k, l, q)/y_cc(l))
1466 end do
1467 end do
1468 end do
1469
1470# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1471
1472# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1473#if defined(MFC_OpenACC)
1474# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1475!$acc end parallel loop
1476# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1477#elif defined(MFC_OpenMP)
1478# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1479
1480# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1481
1482# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1483!$omp end target teams loop
1484# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1485#endif
1486# 373 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1487
1488
1489 end if
1490
1491 end subroutine s_compute_hypoelastic_rhs
1492
1493 !> @brief Deallocates arrays used by the hypoelastic stress module.
1495
1496#ifdef MFC_DEBUG
1497# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1498 block
1499# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1500 use iso_fortran_env, only: output_unit
1501# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1502
1503# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1504 print *, 'm_hypoelastic.fpp:382: ', '@:DEALLOCATE(Gs_hypo)'
1505# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1506
1507# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1508 call flush (output_unit)
1509# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1510 end block
1511# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1512#endif
1513# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1514
1515# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1516#if defined(MFC_OpenACC)
1517# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1518!$acc exit data delete(Gs_hypo)
1519# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1520#elif defined(MFC_OpenMP)
1521# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1522!$omp target exit data map(release:Gs_hypo)
1523# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1524#endif
1525# 382 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1526 deallocate (gs_hypo)
1527#ifdef MFC_DEBUG
1528# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1529 block
1530# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1531 use iso_fortran_env, only: output_unit
1532# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1533
1534# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1535 print *, 'm_hypoelastic.fpp:383: ', '@:DEALLOCATE(rho_K_field, G_K_field)'
1536# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1537
1538# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1539 call flush (output_unit)
1540# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1541 end block
1542# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1543#endif
1544# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1545
1546# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1547#if defined(MFC_OpenACC)
1548# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1549!$acc exit data delete(rho_K_field, G_K_field)
1550# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1551#elif defined(MFC_OpenMP)
1552# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1553!$omp target exit data map(release:rho_K_field, G_K_field)
1554# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1555#endif
1556# 383 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1557 deallocate (rho_k_field, g_k_field)
1558#ifdef MFC_DEBUG
1559# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1560 block
1561# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1562 use iso_fortran_env, only: output_unit
1563# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1564
1565# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1566 print *, 'm_hypoelastic.fpp:384: ', '@:DEALLOCATE(du_dx_hypo)'
1567# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1568
1569# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1570 call flush (output_unit)
1571# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1572 end block
1573# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1574#endif
1575# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1576
1577# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1578#if defined(MFC_OpenACC)
1579# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1580!$acc exit data delete(du_dx_hypo)
1581# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1582#elif defined(MFC_OpenMP)
1583# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1584!$omp target exit data map(release:du_dx_hypo)
1585# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1586#endif
1587# 384 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1588 deallocate (du_dx_hypo)
1589#ifdef MFC_DEBUG
1590# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1591 block
1592# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1593 use iso_fortran_env, only: output_unit
1594# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1595
1596# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1597 print *, 'm_hypoelastic.fpp:385: ', '@:DEALLOCATE(fd_coeff_x_hypo)'
1598# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1599
1600# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1601 call flush (output_unit)
1602# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1603 end block
1604# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1605#endif
1606# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1607
1608# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1609#if defined(MFC_OpenACC)
1610# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1611!$acc exit data delete(fd_coeff_x_hypo)
1612# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1613#elif defined(MFC_OpenMP)
1614# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1615!$omp target exit data map(release:fd_coeff_x_hypo)
1616# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1617#endif
1618# 385 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1619 deallocate (fd_coeff_x_hypo)
1620 if (n > 0) then
1621#ifdef MFC_DEBUG
1622# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1623 block
1624# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1625 use iso_fortran_env, only: output_unit
1626# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1627
1628# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1629 print *, 'm_hypoelastic.fpp:387: ', '@:DEALLOCATE(du_dy_hypo, dv_dx_hypo, dv_dy_hypo)'
1630# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1631
1632# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1633 call flush (output_unit)
1634# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1635 end block
1636# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1637#endif
1638# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1639
1640# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1641#if defined(MFC_OpenACC)
1642# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1643!$acc exit data delete(du_dy_hypo, dv_dx_hypo, dv_dy_hypo)
1644# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1645#elif defined(MFC_OpenMP)
1646# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1647!$omp target exit data map(release:du_dy_hypo, dv_dx_hypo, dv_dy_hypo)
1648# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1649#endif
1650# 387 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1651 deallocate (du_dy_hypo, dv_dx_hypo, dv_dy_hypo)
1652#ifdef MFC_DEBUG
1653# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1654 block
1655# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1656 use iso_fortran_env, only: output_unit
1657# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1658
1659# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1660 print *, 'm_hypoelastic.fpp:388: ', '@:DEALLOCATE(fd_coeff_y_hypo)'
1661# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1662
1663# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1664 call flush (output_unit)
1665# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1666 end block
1667# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1668#endif
1669# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1670
1671# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1672#if defined(MFC_OpenACC)
1673# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1674!$acc exit data delete(fd_coeff_y_hypo)
1675# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1676#elif defined(MFC_OpenMP)
1677# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1678!$omp target exit data map(release:fd_coeff_y_hypo)
1679# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1680#endif
1681# 388 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1682 deallocate (fd_coeff_y_hypo)
1683 if (p > 0) then
1684#ifdef MFC_DEBUG
1685# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1686 block
1687# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1688 use iso_fortran_env, only: output_unit
1689# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1690
1691# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1692 print *, 'm_hypoelastic.fpp:390: ', '@:DEALLOCATE(du_dz_hypo, dv_dz_hypo, dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)'
1693# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1694
1695# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1696 call flush (output_unit)
1697# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1698 end block
1699# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1700#endif
1701# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1702
1703# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1704#if defined(MFC_OpenACC)
1705# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1706!$acc exit data delete(du_dz_hypo, dv_dz_hypo, dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
1707# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1708#elif defined(MFC_OpenMP)
1709# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1710!$omp target exit data map(release:du_dz_hypo, dv_dz_hypo, dw_dx_hypo, dw_dy_hypo, dw_dz_hypo)
1711# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1712#endif
1713# 390 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1715#ifdef MFC_DEBUG
1716# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1717 block
1718# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1719 use iso_fortran_env, only: output_unit
1720# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1721
1722# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1723 print *, 'm_hypoelastic.fpp:391: ', '@:DEALLOCATE(fd_coeff_z_hypo)'
1724# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1725
1726# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1727 call flush (output_unit)
1728# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1729 end block
1730# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1731#endif
1732# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1733
1734# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1735#if defined(MFC_OpenACC)
1736# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1737!$acc exit data delete(fd_coeff_z_hypo)
1738# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1739#elif defined(MFC_OpenMP)
1740# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1741!$omp target exit data map(release:fd_coeff_z_hypo)
1742# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1743#endif
1744# 391 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1745 deallocate (fd_coeff_z_hypo)
1746 end if
1747 end if
1748
1749 end subroutine s_finalize_hypoelastic_module
1750
1751 !> @brief Computes the continuum damage source term from the principal stress state.
1752 subroutine s_compute_damage_state(q_cons_vf, rhs_vf)
1753
1754 type(scalar_field), dimension(sys_size), intent(in) :: q_cons_vf
1755 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1756
1757 real(wp) :: tau_p ! principal stress
1758 real(wp) :: tau_xx, tau_xy, tau_yy, tau_zz, tau_yz, tau_xz
1759 real(wp) :: i1, i2, i3, argument, phi, sqrt_term_1, sqrt_term_2, temp
1760 integer :: q, l, k
1761
1762 if (n == 0) then
1763 l = 0; q = 0
1764
1765# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1766
1767# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1768#if defined(MFC_OpenACC)
1769# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1770!$acc parallel loop gang vector default(present)
1771# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1772#elif defined(MFC_OpenMP)
1773# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1774
1775# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1776
1777# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1778
1779# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1780!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1781# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1782#endif
1783# 410 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1784
1785 do k = 0, m
1786 rhs_vf(damage_idx)%sf(k, l, q) = (alpha_bar*max(abs(real(q_cons_vf(stress_idx%beg)%sf(k, l, q), kind=wp)) - tau_star, 0._wp))**cont_damage_s
1787 end do
1788
1789# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1790
1791# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1792#if defined(MFC_OpenACC)
1793# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1794!$acc end parallel loop
1795# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1796#elif defined(MFC_OpenMP)
1797# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1798
1799# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1800
1801# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1802!$omp end target teams loop
1803# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1804#endif
1805# 414 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1806
1807 elseif (p == 0) then
1808 q = 0
1809
1810# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1811
1812# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1813#if defined(MFC_OpenACC)
1814# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1815!$acc parallel loop collapse(2) gang vector default(present) private(tau_p)
1816# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1817#elif defined(MFC_OpenMP)
1818# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1819
1820# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1821
1822# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1823
1824# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1825!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(tau_p)
1826# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1827#endif
1828# 417 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1829
1830 do l = 0, n
1831 do k = 0, m
1832 ! Maximum principal stress
1833 tau_p = 0.5_wp*(q_cons_vf(stress_idx%beg)%sf(k, l, q) + &
1834 q_cons_vf(stress_idx%beg + 2)%sf(k, l, q)) + &
1835 sqrt((q_cons_vf(stress_idx%beg)%sf(k, l, q) - &
1836 q_cons_vf(stress_idx%beg + 2)%sf(k, l, q))**2.0_wp + &
1837 4._wp*q_cons_vf(stress_idx%beg + 1)%sf(k, l, q)**2.0_wp)/2._wp
1838
1839 rhs_vf(damage_idx)%sf(k, l, q) = (alpha_bar*max(tau_p - tau_star, 0._wp))**cont_damage_s
1840 end do
1841 end do
1842
1843# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1844
1845# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1846#if defined(MFC_OpenACC)
1847# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1848!$acc end parallel loop
1849# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1850#elif defined(MFC_OpenMP)
1851# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1852
1853# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1854
1855# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1856!$omp end target teams loop
1857# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1858#endif
1859# 430 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1860
1861 else
1862
1863# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1864
1865# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1866#if defined(MFC_OpenACC)
1867# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1868!$acc parallel loop collapse(3) gang vector default(present) private(tau_xx, tau_xy, tau_yy, tau_xz, tau_yz, tau_zz, I1, I2, I3, temp, sqrt_term_1, sqrt_term_2, argument, phi, tau_p)
1869# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1870#elif defined(MFC_OpenMP)
1871# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1872
1873# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1874
1875# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1876
1877# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1878!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(tau_xx, tau_xy, tau_yy, tau_xz, tau_yz, tau_zz, I1, I2, I3, temp, sqrt_term_1, sqrt_term_2, argument, phi, tau_p)
1879# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1880#endif
1881# 432 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1882
1883 do q = 0, p
1884 do l = 0, n
1885 do k = 0, m
1886 tau_xx = q_cons_vf(stress_idx%beg)%sf(k, l, q)
1887 tau_xy = q_cons_vf(stress_idx%beg + 1)%sf(k, l, q)
1888 tau_yy = q_cons_vf(stress_idx%beg + 2)%sf(k, l, q)
1889 tau_xz = q_cons_vf(stress_idx%beg + 3)%sf(k, l, q)
1890 tau_yz = q_cons_vf(stress_idx%beg + 4)%sf(k, l, q)
1891 tau_zz = q_cons_vf(stress_idx%beg + 5)%sf(k, l, q)
1892
1893 ! Invariants of the stress tensor
1894 i1 = tau_xx + tau_yy + tau_zz
1895 i2 = tau_xx*tau_yy + tau_xx*tau_zz + tau_yy*tau_zz - &
1896 (tau_xy**2.0_wp + tau_xz**2.0_wp + tau_yz**2.0_wp)
1897 i3 = tau_xx*tau_yy*tau_zz + 2.0_wp*tau_xy*tau_xz*tau_yz - &
1898 tau_xx*tau_yz**2.0_wp - tau_yy*tau_xz**2.0_wp - tau_zz*tau_xy**2.0_wp
1899
1900 ! Maximum principal stress
1901 temp = i1**2.0_wp - 3.0_wp*i2
1902 sqrt_term_1 = sqrt(max(temp, 0.0_wp))
1903 if (sqrt_term_1 > verysmall) then ! Avoid 0/0
1904 argument = (2.0_wp*i1*i1*i1 - 9.0_wp*i1*i2 + 27.0_wp*i3)/ &
1905 (2.0_wp*sqrt_term_1*sqrt_term_1*sqrt_term_1)
1906 if (argument > 1.0_wp) argument = 1.0_wp
1907 if (argument < -1.0_wp) argument = -1.0_wp
1908 phi = acos(argument)
1909 sqrt_term_2 = sqrt(max(i1**2.0_wp - 3.0_wp*i2, 0.0_wp))
1910 tau_p = i1/3.0_wp + 2.0_wp/sqrt(3.0_wp)*sqrt_term_2*cos(phi/3.0_wp)
1911 else
1912 tau_p = i1/3.0_wp
1913 end if
1914
1915 rhs_vf(damage_idx)%sf(k, l, q) = (alpha_bar*max(tau_p - tau_star, 0._wp))**cont_damage_s
1916 end do
1917 end do
1918 end do
1919
1920# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1921
1922# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1923#if defined(MFC_OpenACC)
1924# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1925!$acc end parallel loop
1926# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1927#elif defined(MFC_OpenMP)
1928# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1929
1930# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1931
1932# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1933!$omp end target teams loop
1934# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1935#endif
1936# 469 "/home/runner/work/MFC/MFC/src/simulation/m_hypoelastic.fpp"
1937
1938 end if
1939
1940 end subroutine s_compute_damage_state
1941
1942end module m_hypoelastic
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
integer, intent(in) k
integer, intent(in) l
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Finite difference operators for computing divergence of velocity fields.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer num_fluids
number of fluids in the simulation
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Computes hypoelastic stress-rate source terms and damage-state evolution.
real(wp), dimension(:, :), allocatable fd_coeff_y_hypo
real(wp), dimension(:, :, :), allocatable rho_k_field
real(wp), dimension(:), allocatable gs_hypo
real(wp), dimension(:, :, :), allocatable dw_dy_hypo
real(wp), dimension(:, :, :), allocatable du_dx_hypo
subroutine, public s_compute_hypoelastic_rhs(idir, q_prim_vf, rhs_vf)
The purpose of this procedure is to compute the source terms that are needed for the elastic stress e...
real(wp), dimension(:, :), allocatable fd_coeff_z_hypo
real(wp), dimension(:, :, :), allocatable dw_dx_hypo
real(wp), dimension(:, :, :), allocatable dv_dz_hypo
real(wp), dimension(:, :, :), allocatable dv_dy_hypo
real(wp), dimension(:, :), allocatable fd_coeff_x_hypo
subroutine, public s_compute_damage_state(q_cons_vf, rhs_vf)
Computes the continuum damage source term from the principal stress state.
real(wp), dimension(:, :, :), allocatable dw_dz_hypo
real(wp), dimension(:, :, :), allocatable du_dy_hypo
real(wp), dimension(:, :, :), allocatable g_k_field
real(wp), dimension(:, :, :), allocatable dv_dx_hypo
impure subroutine, public s_initialize_hypoelastic_module
Allocates arrays and computes finite-difference coefficients for the hypoelastic stress model.
real(wp), dimension(:, :, :), allocatable du_dz_hypo
impure subroutine, public s_finalize_hypoelastic_module()
Deallocates arrays used by the hypoelastic stress module.