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