MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_cbc.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2!>
3!! @file
4!! @brief Contains module m_cbc
5
6!> @brief Characteristic boundary conditions (CBCs) for slip walls, non-reflecting subsonic inflow/outflow, and supersonic
7!! boundaries
8# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
9! This file exists so that Fypp can be run without generating case.fpp files for
10! each target. This is useful when generating documentation, for example. This
11! should also let MFC be built with CMake directly, without invoking mfc.sh.
12
13! For pre-process.
14# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15
16! For moving immersed boundaries in simulation
17# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
18# 8 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp" 2
19# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
21# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
22# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27
28# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51! New line at end of file is required for FYPP
52# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
53# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
54# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
55# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70
71# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72
73# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74
75# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76
77# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78
79# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80
81# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82
83# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84! New line at end of file is required for FYPP
85# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
86
87# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155
156# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157
158# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159
160# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161
162# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163! New line at end of file is required for FYPP
164# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
165# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
166# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
167# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176
177# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180
181# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182
183# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184
185# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186
187# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188
189# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190
191# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192
193# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194
195# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
196! New line at end of file is required for FYPP
197# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
198
199# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252
253# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254! New line at end of file is required for FYPP
255# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
256
257! GPU parallel region (scalar reductions, maxval/minval)
258# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260! GPU parallel loop over threads (most common GPU macro)
261# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263! Required closing for GPU_PARALLEL_LOOP
264# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265
266! Mark routine for device compilation
267# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269! Declare device-resident data
270# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271
272! Inner loop within a GPU parallel region
273# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275! Scoped GPU data region
276# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277
278! Host code with device pointers (for MPI with GPU buffers)
279# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280
281! Allocate device memory (unscoped)
282# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283
284! Free device memory
285# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286
287! Atomic operation on device
288# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289
290! End atomic capture block
291# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292
293! Copy data between host and device
294# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295
296! Synchronization barrier
297# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298
299! Import GPU library module (openacc or omp_lib)
300# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301
302! Emit code only for AMD compiler
303# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304
305! Emit code for non-Cray compilers
306# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
307
308! Emit code only for Cray compiler
309# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
310
311! Emit code for non-NVIDIA compilers
312# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313
314# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316! New line at end of file is required for FYPP
317# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
318
319# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
322! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
323! example see misc/nvidia_uvm/bind.sh.
324# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
325
326! Allocate and create GPU device memory
327# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329! Free GPU device memory and deallocate
330# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
331
332! Cray-specific GPU pointer setup for vector fields
333# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
334
335! Cray-specific GPU pointer setup for scalar fields
336# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
337
338! Cray-specific GPU pointer setup for acoustic source spatials
339# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340
341# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342
343# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
344! New line at end of file is required for FYPP
345# 9 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp" 2
346
347module m_cbc
348
352 use m_compute_cbc
355 use m_thermochem, only: get_mixture_energy_mass, get_mixture_specific_heat_cv_mass, get_mixture_specific_heat_cp_mass, &
356 & gas_constant, get_mixture_molecular_weight, get_species_enthalpies_rt, molecular_weights, get_species_specific_heats_r, &
357 & get_mole_fractions
358
359 implicit none
360
362
363 ! The cell-average primitive variables. They are obtained by reshaping (RS) q_prim_vf in the coordinate direction normal to the
364 ! domain boundary along which the CBC is applied.
365
366 real(wp), allocatable, dimension(:,:,:,:) :: q_prim_rsx_vf
367 real(wp), allocatable, dimension(:,:,:,:) :: q_prim_rsy_vf
368 real(wp), allocatable, dimension(:,:,:,:) :: q_prim_rsz_vf
369
370# 32 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
371#if defined(MFC_OpenACC)
372# 32 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
373!$acc declare create(q_prim_rsx_vf, q_prim_rsy_vf, q_prim_rsz_vf)
374# 32 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
375#elif defined(MFC_OpenMP)
376# 32 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
377!$omp declare target (q_prim_rsx_vf, q_prim_rsy_vf, q_prim_rsz_vf)
378# 32 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
379#endif
380
381 ! Cell-average fluxes (src - source). These are directly determined from the cell-average primitive variables, q_prims_rs_vf,
382 ! and not a Riemann solver.
383
384 real(wp), allocatable, dimension(:,:,:,:) :: f_rsx_vf, f_src_rsx_vf
385 real(wp), allocatable, dimension(:,:,:,:) :: f_rsy_vf, f_src_rsy_vf
386 real(wp), allocatable, dimension(:,:,:,:) :: f_rsz_vf, f_src_rsz_vf
387
388# 40 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
389#if defined(MFC_OpenACC)
390# 40 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
391!$acc declare create(F_rsx_vf, F_src_rsx_vf, F_rsy_vf, F_src_rsy_vf, F_rsz_vf, F_src_rsz_vf)
392# 40 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
393#elif defined(MFC_OpenMP)
394# 40 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
395!$omp declare target (F_rsx_vf, F_src_rsx_vf, F_rsy_vf, F_src_rsy_vf, F_rsz_vf, F_src_rsz_vf)
396# 40 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
397#endif
398
399 ! There is a CCE bug that is causing some subset of these variables to interfere with variables of the same name in
400 ! m_riemann_solvers.fpp, and giving this versions unique "_l" names works around the bug. Other private module allocatable
401 ! arrays in `acc declare create` clauses don't have this problem, so we still need to isolate this bug.
402
403 real(wp), allocatable, dimension(:,:,:,:) :: flux_rsx_vf_l, flux_src_rsx_vf_l
404 real(wp), allocatable, dimension(:,:,:,:) :: flux_rsy_vf_l, flux_src_rsy_vf_l
405 real(wp), allocatable, dimension(:,:,:,:) :: flux_rsz_vf_l, flux_src_rsz_vf_l
406
407# 49 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
408#if defined(MFC_OpenACC)
409# 49 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
410!$acc declare create(flux_rsx_vf_l, flux_src_rsx_vf_l, flux_rsy_vf_l, flux_src_rsy_vf_l, flux_rsz_vf_l, flux_src_rsz_vf_l)
411# 49 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
412#elif defined(MFC_OpenMP)
413# 49 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
414!$omp declare target (flux_rsx_vf_l, flux_src_rsx_vf_l, flux_rsy_vf_l, flux_src_rsy_vf_l, flux_rsz_vf_l, flux_src_rsz_vf_l)
415# 49 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
416#endif
417
418 real(wp), allocatable, dimension(:) :: ds !< Cell-width distribution in the s-direction
419 ! CBC Coefficients
420
421 real(wp), allocatable, dimension(:,:) :: fd_coef_x !< Finite diff. coefficients x-dir
422 real(wp), allocatable, dimension(:,:) :: fd_coef_y !< Finite diff. coefficients y-dir
423 real(wp), allocatable, dimension(:,:) :: fd_coef_z !< Finite diff. coefficients, z-direction
424 ! Bug with NVHPC when using nullified pointers in a declare create real(wp), pointer, dimension(:, :) :: fd_coef => null()
425
426 real(wp), allocatable, dimension(:,:,:) :: pi_coef_x !< Polynomial interpolant coefficients in x-dir
427 real(wp), allocatable, dimension(:,:,:) :: pi_coef_y !< Polynomial interpolant coefficients in y-dir
428 real(wp), allocatable, dimension(:,:,:) :: pi_coef_z !< Polynomial interpolant coefficients in z-dir
429
430# 62 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
431#if defined(MFC_OpenACC)
432# 62 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
433!$acc declare create(ds, fd_coef_x, fd_coef_y, fd_coef_z, pi_coef_x, pi_coef_y, pi_coef_z)
434# 62 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
435#elif defined(MFC_OpenMP)
436# 62 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
437!$omp declare target (ds, fd_coef_x, fd_coef_y, fd_coef_z, pi_coef_x, pi_coef_y, pi_coef_z)
438# 62 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
439#endif
440
441 ! The first dimension of the array identifies the polynomial, the second dimension identifies the position of its coefficients
442 ! and the last dimension denotes the location of the CBC.
443
444 type(int_bounds_info) :: is1, is2, is3 !< Indical bounds in the s1-, s2- and s3-directions
445
446# 68 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
447#if defined(MFC_OpenACC)
448# 68 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
449!$acc declare create(is1, is2, is3)
450# 68 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
451#elif defined(MFC_OpenMP)
452# 68 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
453!$omp declare target (is1, is2, is3)
454# 68 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
455#endif
456
457 integer :: dj
458 integer :: cbc_dir, cbc_loc
459 integer :: flux_cbc_index
460
461# 73 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
462#if defined(MFC_OpenACC)
463# 73 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
464!$acc declare create(dj)
465# 73 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
466#elif defined(MFC_OpenMP)
467# 73 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
468!$omp declare target (dj)
469# 73 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
470#endif
471
472# 74 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
473#if defined(MFC_OpenACC)
474# 74 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
475!$acc declare create(cbc_dir, cbc_loc, flux_cbc_index)
476# 74 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
477#elif defined(MFC_OpenMP)
478# 74 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
479!$omp declare target (cbc_dir, cbc_loc, flux_cbc_index)
480# 74 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
481#endif
482
483 ! GRCBC inputs for subsonic inflow and outflow conditions consisting of inflow velocities, pressure, density and void fraction
484 ! as well as outflow velocities and pressure
485
486 real(wp), allocatable, dimension(:) :: pres_in, pres_out, del_in, del_out
487 real(wp), allocatable, dimension(:,:) :: vel_in, vel_out
488 real(wp), allocatable, dimension(:,:) :: alpha_rho_in, alpha_in
489
490# 82 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
491#if defined(MFC_OpenACC)
492# 82 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
493!$acc declare create(pres_in, pres_out, Del_in, Del_out)
494# 82 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
495#elif defined(MFC_OpenMP)
496# 82 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
497!$omp declare target (pres_in, pres_out, Del_in, Del_out)
498# 82 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
499#endif
500
501# 83 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
502#if defined(MFC_OpenACC)
503# 83 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
504!$acc declare create(vel_in, vel_out)
505# 83 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
506#elif defined(MFC_OpenMP)
507# 83 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
508!$omp declare target (vel_in, vel_out)
509# 83 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
510#endif
511
512# 84 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
513#if defined(MFC_OpenACC)
514# 84 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
515!$acc declare create(alpha_rho_in, alpha_in)
516# 84 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
517#elif defined(MFC_OpenMP)
518# 84 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
519!$omp declare target (alpha_rho_in, alpha_in)
520# 84 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
521#endif
522
523contains
524
525 !> Initialize the CBC module
526 impure subroutine s_initialize_cbc_module
527
528 integer :: i
529 logical :: is_cbc
530 type(int_bounds_info) :: idx1, idx2
531
532 if (chemistry) then
533 flux_cbc_index = sys_size
534 else
535 flux_cbc_index = eqn_idx%adv%end
536 end if
537
538# 100 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
539#if defined(MFC_OpenACC)
540# 100 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
541!$acc update device(flux_cbc_index)
542# 100 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
543#elif defined(MFC_OpenMP)
544# 100 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
545!$omp target update to(flux_cbc_index)
546# 100 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
547#endif
548
549 call s_any_cbc_boundaries(is_cbc)
550
551 if (is_cbc .eqv. .false.) return
552
553 if (n == 0) then
554 is2%beg = 0
555 else
556 is2%beg = -buff_size
557 end if
558
559 is2%end = n - is2%beg
560
561 if (p == 0) then
562 is3%beg = 0
563 else
564 is3%beg = -buff_size
565 end if
566 is3%end = p - is3%beg
567
568#ifdef MFC_DEBUG
569# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
570 block
571# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
572 use iso_fortran_env, only: output_unit
573# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
574
575# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
576 print *, 'm_cbc.fpp:121: ', '@:ALLOCATE(q_prim_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))'
577# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
578
579# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
580 call flush (output_unit)
581# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
582 end block
583# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
584#endif
585# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
586 allocate (q_prim_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))
587# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
588
589# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
590
591# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
592#if defined(MFC_OpenACC)
593# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
594!$acc enter data create(q_prim_rsx_vf)
595# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
596#elif defined(MFC_OpenMP)
597# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
598!$omp target enter data map(always,alloc:q_prim_rsx_vf)
599# 121 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
600#endif
601
602 if (weno_order > 1 .or. muscl_order > 1) then
603#ifdef MFC_DEBUG
604# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
605 block
606# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
607 use iso_fortran_env, only: output_unit
608# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
609
610# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
611 print *, 'm_cbc.fpp:124: ', '@:ALLOCATE(F_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
612# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
613
614# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
615 call flush (output_unit)
616# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
617 end block
618# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
619#endif
620# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
621 allocate (f_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
622# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
623
624# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
625
626# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
627#if defined(MFC_OpenACC)
628# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
629!$acc enter data create(F_rsx_vf)
630# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
631#elif defined(MFC_OpenMP)
632# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
633!$omp target enter data map(always,alloc:F_rsx_vf)
634# 124 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
635#endif
636
637#ifdef MFC_DEBUG
638# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
639 block
640# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
641 use iso_fortran_env, only: output_unit
642# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
643
644# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
645 print *, 'm_cbc.fpp:126: ', '@:ALLOCATE(F_src_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
646# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
647
648# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
649 call flush (output_unit)
650# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
651 end block
652# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
653#endif
654# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
655 allocate (f_src_rsx_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
656# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
657
658# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
659
660# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
661#if defined(MFC_OpenACC)
662# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
663!$acc enter data create(F_src_rsx_vf)
664# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
665#elif defined(MFC_OpenMP)
666# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
667!$omp target enter data map(always,alloc:F_src_rsx_vf)
668# 126 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
669#endif
670 end if
671
672#ifdef MFC_DEBUG
673# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
674 block
675# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
676 use iso_fortran_env, only: output_unit
677# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
678
679# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
680 print *, 'm_cbc.fpp:129: ', '@:ALLOCATE(flux_rsx_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
681# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
682
683# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
684 call flush (output_unit)
685# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
686 end block
687# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
688#endif
689# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
690 allocate (flux_rsx_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
691# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
692
693# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
694
695# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
696#if defined(MFC_OpenACC)
697# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
698!$acc enter data create(flux_rsx_vf_l)
699# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
700#elif defined(MFC_OpenMP)
701# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
702!$omp target enter data map(always,alloc:flux_rsx_vf_l)
703# 129 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
704#endif
705
706#ifdef MFC_DEBUG
707# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
708 block
709# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
710 use iso_fortran_env, only: output_unit
711# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
712
713# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
714 print *, 'm_cbc.fpp:131: ', '@:ALLOCATE(flux_src_rsx_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
715# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
716
717# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
718 call flush (output_unit)
719# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
720 end block
721# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
722#endif
723# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
724 allocate (flux_src_rsx_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
725# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
726
727# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
728
729# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
730#if defined(MFC_OpenACC)
731# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
732!$acc enter data create(flux_src_rsx_vf_l)
733# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
734#elif defined(MFC_OpenMP)
735# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
736!$omp target enter data map(always,alloc:flux_src_rsx_vf_l)
737# 131 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
738#endif
739
740 if (n > 0) then
741 if (m == 0) then
742 is2%beg = 0
743 else
744 is2%beg = -buff_size
745 end if
746
747 is2%end = m - is2%beg
748
749 if (p == 0) then
750 is3%beg = 0
751 else
752 is3%beg = -buff_size
753 end if
754 is3%end = p - is3%beg
755
756#ifdef MFC_DEBUG
757# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
758 block
759# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
760 use iso_fortran_env, only: output_unit
761# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
762
763# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
764 print *, 'm_cbc.fpp:149: ', '@:ALLOCATE(q_prim_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))'
765# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
766
767# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
768 call flush (output_unit)
769# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
770 end block
771# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
772#endif
773# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
774 allocate (q_prim_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))
775# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
776
777# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
778
779# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
780#if defined(MFC_OpenACC)
781# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
782!$acc enter data create(q_prim_rsy_vf)
783# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
784#elif defined(MFC_OpenMP)
785# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
786!$omp target enter data map(always,alloc:q_prim_rsy_vf)
787# 149 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
788#endif
789
790 if (weno_order > 1 .or. muscl_order > 1) then
791#ifdef MFC_DEBUG
792# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
793 block
794# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
795 use iso_fortran_env, only: output_unit
796# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
797
798# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
799 print *, 'm_cbc.fpp:152: ', '@:ALLOCATE(F_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
800# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
801
802# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
803 call flush (output_unit)
804# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
805 end block
806# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
807#endif
808# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
809 allocate (f_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
810# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
811
812# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
813
814# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
815#if defined(MFC_OpenACC)
816# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
817!$acc enter data create(F_rsy_vf)
818# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
819#elif defined(MFC_OpenMP)
820# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
821!$omp target enter data map(always,alloc:F_rsy_vf)
822# 152 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
823#endif
824
825#ifdef MFC_DEBUG
826# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
827 block
828# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
829 use iso_fortran_env, only: output_unit
830# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
831
832# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
833 print *, 'm_cbc.fpp:154: ', '@:ALLOCATE(F_src_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
834# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
835
836# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
837 call flush (output_unit)
838# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
839 end block
840# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
841#endif
842# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
843 allocate (f_src_rsy_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
844# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
845
846# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
847
848# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
849#if defined(MFC_OpenACC)
850# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
851!$acc enter data create(F_src_rsy_vf)
852# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
853#elif defined(MFC_OpenMP)
854# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
855!$omp target enter data map(always,alloc:F_src_rsy_vf)
856# 154 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
857#endif
858 end if
859
860#ifdef MFC_DEBUG
861# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
862 block
863# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
864 use iso_fortran_env, only: output_unit
865# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
866
867# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
868 print *, 'm_cbc.fpp:157: ', '@:ALLOCATE(flux_rsy_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
869# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
870
871# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
872 call flush (output_unit)
873# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
874 end block
875# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
876#endif
877# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
878 allocate (flux_rsy_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
879# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
880
881# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
882
883# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
884#if defined(MFC_OpenACC)
885# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
886!$acc enter data create(flux_rsy_vf_l)
887# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
888#elif defined(MFC_OpenMP)
889# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
890!$omp target enter data map(always,alloc:flux_rsy_vf_l)
891# 157 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
892#endif
893
894#ifdef MFC_DEBUG
895# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
896 block
897# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
898 use iso_fortran_env, only: output_unit
899# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
900
901# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
902 print *, 'm_cbc.fpp:159: ', '@:ALLOCATE(flux_src_rsy_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
903# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
904
905# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
906 call flush (output_unit)
907# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
908 end block
909# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
910#endif
911# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
912 allocate (flux_src_rsy_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
913# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
914
915# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
916
917# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
918#if defined(MFC_OpenACC)
919# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
920!$acc enter data create(flux_src_rsy_vf_l)
921# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
922#elif defined(MFC_OpenMP)
923# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
924!$omp target enter data map(always,alloc:flux_src_rsy_vf_l)
925# 159 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
926#endif
927 end if
928
929 if (p > 0) then
930 if (n == 0) then
931 is2%beg = 0
932 else
933 is2%beg = -buff_size
934 end if
935
936 is2%end = n - is2%beg
937
938 if (m == 0) then
939 is3%beg = 0
940 else
941 is3%beg = -buff_size
942 end if
943 is3%end = m - is3%beg
944
945#ifdef MFC_DEBUG
946# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
947 block
948# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
949 use iso_fortran_env, only: output_unit
950# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
951
952# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
953 print *, 'm_cbc.fpp:178: ', '@:ALLOCATE(q_prim_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))'
954# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
955
956# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
957 call flush (output_unit)
958# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
959 end block
960# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
961#endif
962# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
963 allocate (q_prim_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:sys_size))
964# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
965
966# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
967
968# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
969#if defined(MFC_OpenACC)
970# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
971!$acc enter data create(q_prim_rsz_vf)
972# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
973#elif defined(MFC_OpenMP)
974# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
975!$omp target enter data map(always,alloc:q_prim_rsz_vf)
976# 178 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
977#endif
978
979 if (weno_order > 1 .or. muscl_order > 1) then
980#ifdef MFC_DEBUG
981# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
982 block
983# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
984 use iso_fortran_env, only: output_unit
985# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
986
987# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
988 print *, 'm_cbc.fpp:181: ', '@:ALLOCATE(F_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
989# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
990
991# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
992 call flush (output_unit)
993# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
994 end block
995# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
996#endif
997# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
998 allocate (f_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
999# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1000
1001# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1002
1003# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1004#if defined(MFC_OpenACC)
1005# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1006!$acc enter data create(F_rsz_vf)
1007# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1008#elif defined(MFC_OpenMP)
1009# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1010!$omp target enter data map(always,alloc:F_rsz_vf)
1011# 181 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1012#endif
1013
1014#ifdef MFC_DEBUG
1015# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1016 block
1017# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1018 use iso_fortran_env, only: output_unit
1019# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1020
1021# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1022 print *, 'm_cbc.fpp:183: ', '@:ALLOCATE(F_src_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
1023# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1024
1025# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1026 call flush (output_unit)
1027# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1028 end block
1029# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1030#endif
1031# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1032 allocate (f_src_rsz_vf(0:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
1033# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1034
1035# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1036
1037# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1038#if defined(MFC_OpenACC)
1039# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1040!$acc enter data create(F_src_rsz_vf)
1041# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1042#elif defined(MFC_OpenMP)
1043# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1044!$omp target enter data map(always,alloc:F_src_rsz_vf)
1045# 183 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1046#endif
1047 end if
1048
1049#ifdef MFC_DEBUG
1050# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1051 block
1052# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1053 use iso_fortran_env, only: output_unit
1054# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1055
1056# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1057 print *, 'm_cbc.fpp:186: ', '@:ALLOCATE(flux_rsz_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))'
1058# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1059
1060# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1061 call flush (output_unit)
1062# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1063 end block
1064# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1065#endif
1066# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1067 allocate (flux_rsz_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, 1:flux_cbc_index))
1068# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1069
1070# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1071
1072# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1073#if defined(MFC_OpenACC)
1074# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1075!$acc enter data create(flux_rsz_vf_l)
1076# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1077#elif defined(MFC_OpenMP)
1078# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1079!$omp target enter data map(always,alloc:flux_rsz_vf_l)
1080# 186 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1081#endif
1082
1083#ifdef MFC_DEBUG
1084# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1085 block
1086# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1087 use iso_fortran_env, only: output_unit
1088# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1089
1090# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1091 print *, 'm_cbc.fpp:188: ', '@:ALLOCATE(flux_src_rsz_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))'
1092# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1093
1094# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1095 call flush (output_unit)
1096# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1097 end block
1098# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1099#endif
1100# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1101 allocate (flux_src_rsz_vf_l(-1:buff_size, is2%beg:is2%end, is3%beg:is3%end, eqn_idx%adv%beg:eqn_idx%adv%end))
1102# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1103
1104# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1105
1106# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1107#if defined(MFC_OpenACC)
1108# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1109!$acc enter data create(flux_src_rsz_vf_l)
1110# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1111#elif defined(MFC_OpenMP)
1112# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1113!$omp target enter data map(always,alloc:flux_src_rsz_vf_l)
1114# 188 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1115#endif
1116 end if
1117
1118 ! Allocating the cell-width distribution in the s-direction
1119#ifdef MFC_DEBUG
1120# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1121 block
1122# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1123 use iso_fortran_env, only: output_unit
1124# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1125
1126# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1127 print *, 'm_cbc.fpp:192: ', '@:ALLOCATE(ds(0:buff_size))'
1128# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1129
1130# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1131 call flush (output_unit)
1132# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1133 end block
1134# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1135#endif
1136# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1137 allocate (ds(0:buff_size))
1138# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1139
1140# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1141
1142# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1143#if defined(MFC_OpenACC)
1144# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1145!$acc enter data create(ds)
1146# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1147#elif defined(MFC_OpenMP)
1148# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1149!$omp target enter data map(always,alloc:ds)
1150# 192 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1151#endif
1152
1153 if (recon_type == recon_type_weno) then
1154 idx1%beg = 0
1155 idx1%end = weno_polyn - 1
1156 idx2%beg = 0
1157 idx2%end = weno_order - 3
1158 else if (recon_type == recon_type_muscl) then
1159 idx1%beg = 0
1160 idx1%end = muscl_polyn
1161 idx2%beg = 0
1162 idx2%end = muscl_order - 1
1163 end if
1164 ! Allocating/Computing CBC Coefficients in x-direction
1165 if (all((/bc_x%beg, bc_x%end/) <= -5) .and. all((/bc_x%beg, bc_x%end/) >= -13)) then
1166#ifdef MFC_DEBUG
1167# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1168 block
1169# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1170 use iso_fortran_env, only: output_unit
1171# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1172
1173# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1174 print *, 'm_cbc.fpp:207: ', '@:ALLOCATE(fd_coef_x(0:buff_size, -1:1))'
1175# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1176
1177# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1178 call flush (output_unit)
1179# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1180 end block
1181# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1182#endif
1183# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1184 allocate (fd_coef_x(0:buff_size, -1:1))
1185# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1186
1187# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1188
1189# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1190#if defined(MFC_OpenACC)
1191# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1192!$acc enter data create(fd_coef_x)
1193# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1194#elif defined(MFC_OpenMP)
1195# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1196!$omp target enter data map(always,alloc:fd_coef_x)
1197# 207 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1198#endif
1199
1200 if (weno_order > 1 .or. muscl_order > 1) then
1201#ifdef MFC_DEBUG
1202# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1203 block
1204# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1205 use iso_fortran_env, only: output_unit
1206# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1207
1208# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1209 print *, 'm_cbc.fpp:210: ', '@:ALLOCATE(pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))'
1210# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1211
1212# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1213 call flush (output_unit)
1214# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1215 end block
1216# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1217#endif
1218# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1219 allocate (pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))
1220# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1221
1222# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1223
1224# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1225#if defined(MFC_OpenACC)
1226# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1227!$acc enter data create(pi_coef_x)
1228# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1229#elif defined(MFC_OpenMP)
1230# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1231!$omp target enter data map(always,alloc:pi_coef_x)
1232# 210 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1233#endif
1234 end if
1235
1236 call s_compute_cbc_coefficients(1, -1)
1238 else if (bc_x%beg <= -5 .and. bc_x%beg >= -13) then
1239#ifdef MFC_DEBUG
1240# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1241 block
1242# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1243 use iso_fortran_env, only: output_unit
1244# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1245
1246# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1247 print *, 'm_cbc.fpp:216: ', '@:ALLOCATE(fd_coef_x(0:buff_size, -1:-1))'
1248# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1249
1250# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1251 call flush (output_unit)
1252# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1253 end block
1254# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1255#endif
1256# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1257 allocate (fd_coef_x(0:buff_size, -1:-1))
1258# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1259
1260# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1261
1262# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1263#if defined(MFC_OpenACC)
1264# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1265!$acc enter data create(fd_coef_x)
1266# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1267#elif defined(MFC_OpenMP)
1268# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1269!$omp target enter data map(always,alloc:fd_coef_x)
1270# 216 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1271#endif
1272
1273 if (weno_order > 1 .or. muscl_order > 1) then
1274#ifdef MFC_DEBUG
1275# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1276 block
1277# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1278 use iso_fortran_env, only: output_unit
1279# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1280
1281# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1282 print *, 'm_cbc.fpp:219: ', '@:ALLOCATE(pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))'
1283# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1284
1285# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1286 call flush (output_unit)
1287# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1288 end block
1289# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1290#endif
1291# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1292 allocate (pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))
1293# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1294
1295# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1296
1297# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1298#if defined(MFC_OpenACC)
1299# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1300!$acc enter data create(pi_coef_x)
1301# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1302#elif defined(MFC_OpenMP)
1303# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1304!$omp target enter data map(always,alloc:pi_coef_x)
1305# 219 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1306#endif
1307 end if
1308
1309 call s_compute_cbc_coefficients(1, -1)
1310 else if (bc_x%end <= -5 .and. bc_x%end >= -13) then
1311#ifdef MFC_DEBUG
1312# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1313 block
1314# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1315 use iso_fortran_env, only: output_unit
1316# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1317
1318# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1319 print *, 'm_cbc.fpp:224: ', '@:ALLOCATE(fd_coef_x(0:buff_size, 1:1))'
1320# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1321
1322# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1323 call flush (output_unit)
1324# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1325 end block
1326# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1327#endif
1328# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1329 allocate (fd_coef_x(0:buff_size, 1:1))
1330# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1331
1332# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1333
1334# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1335#if defined(MFC_OpenACC)
1336# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1337!$acc enter data create(fd_coef_x)
1338# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1339#elif defined(MFC_OpenMP)
1340# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1341!$omp target enter data map(always,alloc:fd_coef_x)
1342# 224 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1343#endif
1344
1345 if (weno_order > 1 .or. muscl_order > 1) then
1346#ifdef MFC_DEBUG
1347# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1348 block
1349# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1350 use iso_fortran_env, only: output_unit
1351# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1352
1353# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1354 print *, 'm_cbc.fpp:227: ', '@:ALLOCATE(pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))'
1355# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1356
1357# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1358 call flush (output_unit)
1359# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1360 end block
1361# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1362#endif
1363# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1364 allocate (pi_coef_x(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))
1365# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1366
1367# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1368
1369# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1370#if defined(MFC_OpenACC)
1371# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1372!$acc enter data create(pi_coef_x)
1373# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1374#elif defined(MFC_OpenMP)
1375# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1376!$omp target enter data map(always,alloc:pi_coef_x)
1377# 227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1378#endif
1379 end if
1380
1382 end if
1383
1384 ! Allocating/Computing CBC Coefficients in y-direction
1385 if (n > 0) then
1386 if (all((/bc_y%beg, bc_y%end/) <= -5) .and. all((/bc_y%beg, bc_y%end/) >= -13)) then
1387#ifdef MFC_DEBUG
1388# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1389 block
1390# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1391 use iso_fortran_env, only: output_unit
1392# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1393
1394# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1395 print *, 'm_cbc.fpp:236: ', '@:ALLOCATE(fd_coef_y(0:buff_size, -1:1))'
1396# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1397
1398# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1399 call flush (output_unit)
1400# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1401 end block
1402# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1403#endif
1404# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1405 allocate (fd_coef_y(0:buff_size, -1:1))
1406# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1407
1408# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1409
1410# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1411#if defined(MFC_OpenACC)
1412# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1413!$acc enter data create(fd_coef_y)
1414# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1415#elif defined(MFC_OpenMP)
1416# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1417!$omp target enter data map(always,alloc:fd_coef_y)
1418# 236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1419#endif
1420
1421 if (weno_order > 1 .or. muscl_order > 1) then
1422#ifdef MFC_DEBUG
1423# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1424 block
1425# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1426 use iso_fortran_env, only: output_unit
1427# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1428
1429# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1430 print *, 'm_cbc.fpp:239: ', '@:ALLOCATE(pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))'
1431# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1432
1433# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1434 call flush (output_unit)
1435# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1436 end block
1437# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1438#endif
1439# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1440 allocate (pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))
1441# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1442
1443# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1444
1445# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1446#if defined(MFC_OpenACC)
1447# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1448!$acc enter data create(pi_coef_y)
1449# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1450#elif defined(MFC_OpenMP)
1451# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1452!$omp target enter data map(always,alloc:pi_coef_y)
1453# 239 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1454#endif
1455 end if
1456
1457 call s_compute_cbc_coefficients(2, -1)
1459 else if (bc_y%beg <= -5 .and. bc_y%beg >= -13) then
1460#ifdef MFC_DEBUG
1461# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1462 block
1463# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1464 use iso_fortran_env, only: output_unit
1465# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1466
1467# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1468 print *, 'm_cbc.fpp:245: ', '@:ALLOCATE(fd_coef_y(0:buff_size, -1:-1))'
1469# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1470
1471# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1472 call flush (output_unit)
1473# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1474 end block
1475# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1476#endif
1477# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1478 allocate (fd_coef_y(0:buff_size, -1:-1))
1479# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1480
1481# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1482
1483# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1484#if defined(MFC_OpenACC)
1485# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1486!$acc enter data create(fd_coef_y)
1487# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1488#elif defined(MFC_OpenMP)
1489# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1490!$omp target enter data map(always,alloc:fd_coef_y)
1491# 245 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1492#endif
1493
1494 if (weno_order > 1 .or. muscl_order > 1) then
1495#ifdef MFC_DEBUG
1496# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1497 block
1498# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1499 use iso_fortran_env, only: output_unit
1500# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1501
1502# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1503 print *, 'm_cbc.fpp:248: ', '@:ALLOCATE(pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))'
1504# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1505
1506# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1507 call flush (output_unit)
1508# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1509 end block
1510# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1511#endif
1512# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1513 allocate (pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))
1514# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1515
1516# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1517
1518# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1519#if defined(MFC_OpenACC)
1520# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1521!$acc enter data create(pi_coef_y)
1522# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1523#elif defined(MFC_OpenMP)
1524# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1525!$omp target enter data map(always,alloc:pi_coef_y)
1526# 248 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1527#endif
1528 end if
1529
1530 call s_compute_cbc_coefficients(2, -1)
1531 else if (bc_y%end <= -5 .and. bc_y%end >= -13) then
1532#ifdef MFC_DEBUG
1533# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1534 block
1535# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1536 use iso_fortran_env, only: output_unit
1537# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1538
1539# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1540 print *, 'm_cbc.fpp:253: ', '@:ALLOCATE(fd_coef_y(0:buff_size, 1:1))'
1541# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1542
1543# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1544 call flush (output_unit)
1545# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1546 end block
1547# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1548#endif
1549# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1550 allocate (fd_coef_y(0:buff_size, 1:1))
1551# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1552
1553# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1554
1555# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1556#if defined(MFC_OpenACC)
1557# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1558!$acc enter data create(fd_coef_y)
1559# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1560#elif defined(MFC_OpenMP)
1561# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1562!$omp target enter data map(always,alloc:fd_coef_y)
1563# 253 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1564#endif
1565
1566 if (weno_order > 1 .or. muscl_order > 1) then
1567#ifdef MFC_DEBUG
1568# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1569 block
1570# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1571 use iso_fortran_env, only: output_unit
1572# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1573
1574# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1575 print *, 'm_cbc.fpp:256: ', '@:ALLOCATE(pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))'
1576# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1577
1578# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1579 call flush (output_unit)
1580# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1581 end block
1582# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1583#endif
1584# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1585 allocate (pi_coef_y(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))
1586# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1587
1588# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1589
1590# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1591#if defined(MFC_OpenACC)
1592# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1593!$acc enter data create(pi_coef_y)
1594# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1595#elif defined(MFC_OpenMP)
1596# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1597!$omp target enter data map(always,alloc:pi_coef_y)
1598# 256 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1599#endif
1600 end if
1601
1603 end if
1604 end if
1605
1606 ! Allocating/Computing CBC Coefficients in z-direction
1607 if (p > 0) then
1608 if (all((/bc_z%beg, bc_z%end/) <= -5) .and. all((/bc_z%beg, bc_z%end/) >= -13)) then
1609#ifdef MFC_DEBUG
1610# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1611 block
1612# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1613 use iso_fortran_env, only: output_unit
1614# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1615
1616# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1617 print *, 'm_cbc.fpp:266: ', '@:ALLOCATE(fd_coef_z(0:buff_size, -1:1))'
1618# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1619
1620# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1621 call flush (output_unit)
1622# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1623 end block
1624# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1625#endif
1626# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1627 allocate (fd_coef_z(0:buff_size, -1:1))
1628# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1629
1630# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1631
1632# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1633#if defined(MFC_OpenACC)
1634# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1635!$acc enter data create(fd_coef_z)
1636# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1637#elif defined(MFC_OpenMP)
1638# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1639!$omp target enter data map(always,alloc:fd_coef_z)
1640# 266 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1641#endif
1642
1643 if (weno_order > 1 .or. muscl_order > 1) then
1644#ifdef MFC_DEBUG
1645# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1646 block
1647# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1648 use iso_fortran_env, only: output_unit
1649# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1650
1651# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1652 print *, 'm_cbc.fpp:269: ', '@:ALLOCATE(pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))'
1653# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1654
1655# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1656 call flush (output_unit)
1657# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1658 end block
1659# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1660#endif
1661# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1662 allocate (pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:1))
1663# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1664
1665# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1666
1667# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1668#if defined(MFC_OpenACC)
1669# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1670!$acc enter data create(pi_coef_z)
1671# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1672#elif defined(MFC_OpenMP)
1673# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1674!$omp target enter data map(always,alloc:pi_coef_z)
1675# 269 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1676#endif
1677 end if
1678
1679 call s_compute_cbc_coefficients(3, -1)
1681 else if (bc_z%beg <= -5 .and. bc_z%beg >= -13) then
1682#ifdef MFC_DEBUG
1683# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1684 block
1685# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1686 use iso_fortran_env, only: output_unit
1687# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1688
1689# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1690 print *, 'm_cbc.fpp:275: ', '@:ALLOCATE(fd_coef_z(0:buff_size, -1:-1))'
1691# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1692
1693# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1694 call flush (output_unit)
1695# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1696 end block
1697# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1698#endif
1699# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1700 allocate (fd_coef_z(0:buff_size, -1:-1))
1701# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1702
1703# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1704
1705# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1706#if defined(MFC_OpenACC)
1707# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1708!$acc enter data create(fd_coef_z)
1709# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1710#elif defined(MFC_OpenMP)
1711# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1712!$omp target enter data map(always,alloc:fd_coef_z)
1713# 275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1714#endif
1715
1716 if (weno_order > 1 .or. muscl_order > 1) then
1717#ifdef MFC_DEBUG
1718# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1719 block
1720# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1721 use iso_fortran_env, only: output_unit
1722# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1723
1724# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1725 print *, 'm_cbc.fpp:278: ', '@:ALLOCATE(pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))'
1726# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1727
1728# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1729 call flush (output_unit)
1730# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1731 end block
1732# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1733#endif
1734# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1735 allocate (pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, -1:-1))
1736# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1737
1738# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1739
1740# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1741#if defined(MFC_OpenACC)
1742# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1743!$acc enter data create(pi_coef_z)
1744# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1745#elif defined(MFC_OpenMP)
1746# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1747!$omp target enter data map(always,alloc:pi_coef_z)
1748# 278 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1749#endif
1750 end if
1751
1752 call s_compute_cbc_coefficients(3, -1)
1753 else if (bc_z%end <= -5 .and. bc_z%end >= -13) then
1754#ifdef MFC_DEBUG
1755# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1756 block
1757# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1758 use iso_fortran_env, only: output_unit
1759# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1760
1761# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1762 print *, 'm_cbc.fpp:283: ', '@:ALLOCATE(fd_coef_z(0:buff_size, 1:1))'
1763# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1764
1765# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1766 call flush (output_unit)
1767# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1768 end block
1769# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1770#endif
1771# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1772 allocate (fd_coef_z(0:buff_size, 1:1))
1773# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1774
1775# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1776
1777# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1778#if defined(MFC_OpenACC)
1779# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1780!$acc enter data create(fd_coef_z)
1781# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1782#elif defined(MFC_OpenMP)
1783# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1784!$omp target enter data map(always,alloc:fd_coef_z)
1785# 283 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1786#endif
1787
1788 if (weno_order > 1 .or. muscl_order > 1) then
1789#ifdef MFC_DEBUG
1790# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1791 block
1792# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1793 use iso_fortran_env, only: output_unit
1794# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1795
1796# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1797 print *, 'm_cbc.fpp:286: ', '@:ALLOCATE(pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))'
1798# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1799
1800# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1801 call flush (output_unit)
1802# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1803 end block
1804# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1805#endif
1806# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1807 allocate (pi_coef_z(idx1%beg:idx1%end, idx2%beg:idx2%end, 1:1))
1808# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1809
1810# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1811
1812# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1813#if defined(MFC_OpenACC)
1814# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1815!$acc enter data create(pi_coef_z)
1816# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1817#elif defined(MFC_OpenMP)
1818# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1819!$omp target enter data map(always,alloc:pi_coef_z)
1820# 286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1821#endif
1822 end if
1823
1825 end if
1826 end if
1827
1828
1829# 293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1830#if defined(MFC_OpenACC)
1831# 293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1832!$acc update device(fd_coef_x, fd_coef_y, fd_coef_z, pi_coef_x, pi_coef_y, pi_coef_z)
1833# 293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1834#elif defined(MFC_OpenMP)
1835# 293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1836!$omp target update to(fd_coef_x, fd_coef_y, fd_coef_z, pi_coef_x, pi_coef_y, pi_coef_z)
1837# 293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1838#endif
1839
1840 ! Allocate GRCBC inputs
1841#ifdef MFC_DEBUG
1842# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1843 block
1844# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1845 use iso_fortran_env, only: output_unit
1846# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1847
1848# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1849 print *, 'm_cbc.fpp:296: ', '@:ALLOCATE(pres_in(1:num_dims), pres_out(1:num_dims))'
1850# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1851
1852# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1853 call flush (output_unit)
1854# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1855 end block
1856# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1857#endif
1858# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1859 allocate (pres_in(1:num_dims), pres_out(1:num_dims))
1860# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1861
1862# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1863
1864# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1865
1866# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1867#if defined(MFC_OpenACC)
1868# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1869!$acc enter data create(pres_in, pres_out)
1870# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1871#elif defined(MFC_OpenMP)
1872# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1873!$omp target enter data map(always,alloc:pres_in, pres_out)
1874# 296 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1875#endif
1876#ifdef MFC_DEBUG
1877# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1878 block
1879# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1880 use iso_fortran_env, only: output_unit
1881# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1882
1883# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1884 print *, 'm_cbc.fpp:297: ', '@:ALLOCATE(Del_in(1:num_dims), Del_out(1:num_dims))'
1885# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1886
1887# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1888 call flush (output_unit)
1889# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1890 end block
1891# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1892#endif
1893# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1894 allocate (del_in(1:num_dims), del_out(1:num_dims))
1895# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1896
1897# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1898
1899# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1900
1901# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1902#if defined(MFC_OpenACC)
1903# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1904!$acc enter data create(Del_in, Del_out)
1905# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1906#elif defined(MFC_OpenMP)
1907# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1908!$omp target enter data map(always,alloc:Del_in, Del_out)
1909# 297 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1910#endif
1911#ifdef MFC_DEBUG
1912# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1913 block
1914# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1915 use iso_fortran_env, only: output_unit
1916# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1917
1918# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1919 print *, 'm_cbc.fpp:298: ', '@:ALLOCATE(vel_in(1:num_dims, 1:num_dims), vel_out(1:num_dims, 1:num_dims))'
1920# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1921
1922# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1923 call flush (output_unit)
1924# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1925 end block
1926# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1927#endif
1928# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1929 allocate (vel_in(1:num_dims, 1:num_dims), vel_out(1:num_dims, 1:num_dims))
1930# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1931
1932# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1933
1934# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1935
1936# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1937#if defined(MFC_OpenACC)
1938# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1939!$acc enter data create(vel_in, vel_out)
1940# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1941#elif defined(MFC_OpenMP)
1942# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1943!$omp target enter data map(always,alloc:vel_in, vel_out)
1944# 298 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1945#endif
1946#ifdef MFC_DEBUG
1947# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1948 block
1949# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1950 use iso_fortran_env, only: output_unit
1951# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1952
1953# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1954 print *, 'm_cbc.fpp:299: ', '@:ALLOCATE(alpha_rho_in(1:num_fluids, 1:num_dims), alpha_in(1:num_fluids, 1:num_dims))'
1955# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1956
1957# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1958 call flush (output_unit)
1959# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1960 end block
1961# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1962#endif
1963# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1964 allocate (alpha_rho_in(1:num_fluids, 1:num_dims), alpha_in(1:num_fluids, 1:num_dims))
1965# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1966
1967# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1968
1969# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1970
1971# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1972#if defined(MFC_OpenACC)
1973# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1974!$acc enter data create(alpha_rho_in, alpha_in)
1975# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1976#elif defined(MFC_OpenMP)
1977# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1978!$omp target enter data map(always,alloc:alpha_rho_in, alpha_in)
1979# 299 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1980#endif
1981
1982 ! Assign and update GRCBC inputs
1983# 303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
1984 if (1 <= num_dims) then
1985 vel_in(1, 1) = bc_x%vel_in(1)
1986 vel_out(1, 1) = bc_x%vel_out(1)
1987 if (n > 0) then
1988 vel_in(1, 2) = bc_x%vel_in(2)
1989 vel_out(1, 2) = bc_x%vel_out(2)
1990 if (p > 0) then
1991 vel_in(1, 3) = bc_x%vel_in(3)
1992 vel_out(1, 3) = bc_x%vel_out(3)
1993 end if
1994 end if
1995 del_in(1) = maxval(dx)
1996 del_out(1) = maxval(dx)
1997 pres_in(1) = bc_x%pres_in
1998 pres_out(1) = bc_x%pres_out
1999 do i = 1, num_fluids
2000 alpha_rho_in(i, 1) = bc_x%alpha_rho_in(i)
2001 alpha_in(i, 1) = bc_x%alpha_in(i)
2002 end do
2003 end if
2004# 303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2005 if (2 <= num_dims) then
2006 vel_in(2, 1) = bc_y%vel_in(1)
2007 vel_out(2, 1) = bc_y%vel_out(1)
2008 if (n > 0) then
2009 vel_in(2, 2) = bc_y%vel_in(2)
2010 vel_out(2, 2) = bc_y%vel_out(2)
2011 if (p > 0) then
2012 vel_in(2, 3) = bc_y%vel_in(3)
2013 vel_out(2, 3) = bc_y%vel_out(3)
2014 end if
2015 end if
2016 del_in(2) = maxval(dy)
2017 del_out(2) = maxval(dy)
2018 pres_in(2) = bc_y%pres_in
2019 pres_out(2) = bc_y%pres_out
2020 do i = 1, num_fluids
2021 alpha_rho_in(i, 2) = bc_y%alpha_rho_in(i)
2022 alpha_in(i, 2) = bc_y%alpha_in(i)
2023 end do
2024 end if
2025# 303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2026 if (3 <= num_dims) then
2027 vel_in(3, 1) = bc_z%vel_in(1)
2028 vel_out(3, 1) = bc_z%vel_out(1)
2029 if (n > 0) then
2030 vel_in(3, 2) = bc_z%vel_in(2)
2031 vel_out(3, 2) = bc_z%vel_out(2)
2032 if (p > 0) then
2033 vel_in(3, 3) = bc_z%vel_in(3)
2034 vel_out(3, 3) = bc_z%vel_out(3)
2035 end if
2036 end if
2037 del_in(3) = maxval(dz)
2038 del_out(3) = maxval(dz)
2039 pres_in(3) = bc_z%pres_in
2040 pres_out(3) = bc_z%pres_out
2041 do i = 1, num_fluids
2042 alpha_rho_in(i, 3) = bc_z%alpha_rho_in(i)
2043 alpha_in(i, 3) = bc_z%alpha_in(i)
2044 end do
2045 end if
2046# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2047
2048# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2049#if defined(MFC_OpenACC)
2050# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2051!$acc update device(vel_in, vel_out, pres_in, pres_out, Del_in, Del_out, alpha_rho_in, alpha_in)
2052# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2053#elif defined(MFC_OpenMP)
2054# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2055!$omp target update to(vel_in, vel_out, pres_in, pres_out, Del_in, Del_out, alpha_rho_in, alpha_in)
2056# 324 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2057#endif
2058
2059 end subroutine s_initialize_cbc_module
2060
2061 !> Compute CBC coefficients
2062 subroutine s_compute_cbc_coefficients(cbc_dir_in, cbc_loc_in)
2063
2064 ! Compute grid-dependent CBC coefficients for given direction and location
2065
2066 ! CBC coordinate direction and location
2067 integer, intent(in) :: cbc_dir_in, cbc_loc_in
2068
2069 ! Cell-boundary locations in the s-direction
2070 real(wp), dimension(0:buff_size + 1) :: s_cb
2071
2072 ! Generic loop iterator
2073 integer :: i
2074
2075 ! Associating CBC coefficients pointers
2076
2077 call s_associate_cbc_coefficients_pointers(cbc_dir_in, cbc_loc_in)
2078
2079 ! Determining the cell-boundary locations in the s-direction
2080 s_cb(0) = 0._wp
2081
2082 do i = 0, buff_size
2083 s_cb(i + 1) = s_cb(i) + ds(i)
2084 end do
2085
2086 ! Computing CBC1 Coefficients
2087# 355 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2088 if (cbc_dir_in == 1 .and. recon_type == recon_type_weno) then
2089 if (weno_order == 1) then
2090 fd_coef_x(:,cbc_loc_in) = 0._wp
2091 fd_coef_x(0, cbc_loc_in) = -2._wp/(ds(0) + ds(1))
2092 fd_coef_x(1, cbc_loc_in) = -fd_coef_x(0, cbc_loc_in)
2093
2094 ! Computing CBC2 Coefficients
2095 else if (weno_order == 3) then
2096 fd_coef_x(:,cbc_loc_in) = 0._wp
2097 fd_coef_x(0, cbc_loc_in) = -6._wp/(3._wp*ds(0) + 2._wp*ds(1) - ds(2))
2098 fd_coef_x(1, cbc_loc_in) = -4._wp*fd_coef_x(0, cbc_loc_in)/3._wp
2099 fd_coef_x(2, cbc_loc_in) = fd_coef_x(0, cbc_loc_in)/3._wp
2100
2101 pi_coef_x(0, 0, cbc_loc_in) = (s_cb(0) - s_cb(1))/(s_cb(0) - s_cb(2))
2102
2103 ! Computing CBC4 Coefficients
2104 else
2105 fd_coef_x(:,cbc_loc_in) = 0._wp
2106 fd_coef_x(0, &
2107 & cbc_loc_in) = -50._wp/(25._wp*ds(0) + 2._wp*ds(1) - 1.e1_wp*ds(2) + 1.e1_wp*ds(3) &
2108 & - 3._wp*ds(4))
2109 fd_coef_x(1, cbc_loc_in) = -48._wp*fd_coef_x(0, cbc_loc_in)/25._wp
2110 fd_coef_x(2, cbc_loc_in) = 36._wp*fd_coef_x(0, cbc_loc_in)/25._wp
2111 fd_coef_x(3, cbc_loc_in) = -16._wp*fd_coef_x(0, cbc_loc_in)/25._wp
2112 fd_coef_x(4, cbc_loc_in) = 3._wp*fd_coef_x(0, cbc_loc_in)/25._wp
2113
2114 pi_coef_x(0, 0, &
2115 & cbc_loc_in) = ((s_cb(0) - s_cb(1))*(s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)))/((s_cb(1) &
2116 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(2)))
2117 pi_coef_x(0, 1, &
2118 & cbc_loc_in) = ((s_cb(1) - s_cb(0))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(1) &
2119 & - s_cb(3)) - (s_cb(0) - s_cb(4))*((s_cb(3) - s_cb(1)) + (s_cb(4) - s_cb(1)))))/((s_cb(0) &
2120 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2121 pi_coef_x(0, 2, &
2122 & cbc_loc_in) = (s_cb(1) - s_cb(0))*((s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)) + ((s_cb(0) &
2123 & - s_cb(2)) + (s_cb(1) - s_cb(3)))*(s_cb(0) - s_cb(4)))/((s_cb(2) - s_cb(0))*(s_cb(0) &
2124 & - s_cb(3))*(s_cb(0) - s_cb(4)))
2125 pi_coef_x(1, 0, &
2126 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(2) - s_cb(1))*(s_cb(2) - s_cb(3)))/((s_cb(2) &
2127 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(1)))
2128 pi_coef_x(1, 1, &
2129 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(2) &
2130 & - s_cb(3)) + (s_cb(0) - s_cb(4))*((s_cb(1) - s_cb(3)) + (s_cb(2) - s_cb(4)))))/((s_cb(0) &
2131 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2132 pi_coef_x(1, 2, &
2133 & cbc_loc_in) = ((s_cb(1) - s_cb(2))*(s_cb(2) - s_cb(3))*(s_cb(2) - s_cb(4)))/((s_cb(0) &
2134 & - s_cb(2))*(s_cb(0) - s_cb(3))*(s_cb(0) - s_cb(4)))
2135 end if
2136 end if
2137# 355 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2138 if (cbc_dir_in == 2 .and. recon_type == recon_type_weno) then
2139 if (weno_order == 1) then
2140 fd_coef_y(:,cbc_loc_in) = 0._wp
2141 fd_coef_y(0, cbc_loc_in) = -2._wp/(ds(0) + ds(1))
2142 fd_coef_y(1, cbc_loc_in) = -fd_coef_y(0, cbc_loc_in)
2143
2144 ! Computing CBC2 Coefficients
2145 else if (weno_order == 3) then
2146 fd_coef_y(:,cbc_loc_in) = 0._wp
2147 fd_coef_y(0, cbc_loc_in) = -6._wp/(3._wp*ds(0) + 2._wp*ds(1) - ds(2))
2148 fd_coef_y(1, cbc_loc_in) = -4._wp*fd_coef_y(0, cbc_loc_in)/3._wp
2149 fd_coef_y(2, cbc_loc_in) = fd_coef_y(0, cbc_loc_in)/3._wp
2150
2151 pi_coef_y(0, 0, cbc_loc_in) = (s_cb(0) - s_cb(1))/(s_cb(0) - s_cb(2))
2152
2153 ! Computing CBC4 Coefficients
2154 else
2155 fd_coef_y(:,cbc_loc_in) = 0._wp
2156 fd_coef_y(0, &
2157 & cbc_loc_in) = -50._wp/(25._wp*ds(0) + 2._wp*ds(1) - 1.e1_wp*ds(2) + 1.e1_wp*ds(3) &
2158 & - 3._wp*ds(4))
2159 fd_coef_y(1, cbc_loc_in) = -48._wp*fd_coef_y(0, cbc_loc_in)/25._wp
2160 fd_coef_y(2, cbc_loc_in) = 36._wp*fd_coef_y(0, cbc_loc_in)/25._wp
2161 fd_coef_y(3, cbc_loc_in) = -16._wp*fd_coef_y(0, cbc_loc_in)/25._wp
2162 fd_coef_y(4, cbc_loc_in) = 3._wp*fd_coef_y(0, cbc_loc_in)/25._wp
2163
2164 pi_coef_y(0, 0, &
2165 & cbc_loc_in) = ((s_cb(0) - s_cb(1))*(s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)))/((s_cb(1) &
2166 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(2)))
2167 pi_coef_y(0, 1, &
2168 & cbc_loc_in) = ((s_cb(1) - s_cb(0))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(1) &
2169 & - s_cb(3)) - (s_cb(0) - s_cb(4))*((s_cb(3) - s_cb(1)) + (s_cb(4) - s_cb(1)))))/((s_cb(0) &
2170 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2171 pi_coef_y(0, 2, &
2172 & cbc_loc_in) = (s_cb(1) - s_cb(0))*((s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)) + ((s_cb(0) &
2173 & - s_cb(2)) + (s_cb(1) - s_cb(3)))*(s_cb(0) - s_cb(4)))/((s_cb(2) - s_cb(0))*(s_cb(0) &
2174 & - s_cb(3))*(s_cb(0) - s_cb(4)))
2175 pi_coef_y(1, 0, &
2176 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(2) - s_cb(1))*(s_cb(2) - s_cb(3)))/((s_cb(2) &
2177 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(1)))
2178 pi_coef_y(1, 1, &
2179 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(2) &
2180 & - s_cb(3)) + (s_cb(0) - s_cb(4))*((s_cb(1) - s_cb(3)) + (s_cb(2) - s_cb(4)))))/((s_cb(0) &
2181 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2182 pi_coef_y(1, 2, &
2183 & cbc_loc_in) = ((s_cb(1) - s_cb(2))*(s_cb(2) - s_cb(3))*(s_cb(2) - s_cb(4)))/((s_cb(0) &
2184 & - s_cb(2))*(s_cb(0) - s_cb(3))*(s_cb(0) - s_cb(4)))
2185 end if
2186 end if
2187# 355 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2188 if (cbc_dir_in == 3 .and. recon_type == recon_type_weno) then
2189 if (weno_order == 1) then
2190 fd_coef_z(:,cbc_loc_in) = 0._wp
2191 fd_coef_z(0, cbc_loc_in) = -2._wp/(ds(0) + ds(1))
2192 fd_coef_z(1, cbc_loc_in) = -fd_coef_z(0, cbc_loc_in)
2193
2194 ! Computing CBC2 Coefficients
2195 else if (weno_order == 3) then
2196 fd_coef_z(:,cbc_loc_in) = 0._wp
2197 fd_coef_z(0, cbc_loc_in) = -6._wp/(3._wp*ds(0) + 2._wp*ds(1) - ds(2))
2198 fd_coef_z(1, cbc_loc_in) = -4._wp*fd_coef_z(0, cbc_loc_in)/3._wp
2199 fd_coef_z(2, cbc_loc_in) = fd_coef_z(0, cbc_loc_in)/3._wp
2200
2201 pi_coef_z(0, 0, cbc_loc_in) = (s_cb(0) - s_cb(1))/(s_cb(0) - s_cb(2))
2202
2203 ! Computing CBC4 Coefficients
2204 else
2205 fd_coef_z(:,cbc_loc_in) = 0._wp
2206 fd_coef_z(0, &
2207 & cbc_loc_in) = -50._wp/(25._wp*ds(0) + 2._wp*ds(1) - 1.e1_wp*ds(2) + 1.e1_wp*ds(3) &
2208 & - 3._wp*ds(4))
2209 fd_coef_z(1, cbc_loc_in) = -48._wp*fd_coef_z(0, cbc_loc_in)/25._wp
2210 fd_coef_z(2, cbc_loc_in) = 36._wp*fd_coef_z(0, cbc_loc_in)/25._wp
2211 fd_coef_z(3, cbc_loc_in) = -16._wp*fd_coef_z(0, cbc_loc_in)/25._wp
2212 fd_coef_z(4, cbc_loc_in) = 3._wp*fd_coef_z(0, cbc_loc_in)/25._wp
2213
2214 pi_coef_z(0, 0, &
2215 & cbc_loc_in) = ((s_cb(0) - s_cb(1))*(s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)))/((s_cb(1) &
2216 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(2)))
2217 pi_coef_z(0, 1, &
2218 & cbc_loc_in) = ((s_cb(1) - s_cb(0))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(1) &
2219 & - s_cb(3)) - (s_cb(0) - s_cb(4))*((s_cb(3) - s_cb(1)) + (s_cb(4) - s_cb(1)))))/((s_cb(0) &
2220 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2221 pi_coef_z(0, 2, &
2222 & cbc_loc_in) = (s_cb(1) - s_cb(0))*((s_cb(1) - s_cb(2))*(s_cb(1) - s_cb(3)) + ((s_cb(0) &
2223 & - s_cb(2)) + (s_cb(1) - s_cb(3)))*(s_cb(0) - s_cb(4)))/((s_cb(2) - s_cb(0))*(s_cb(0) &
2224 & - s_cb(3))*(s_cb(0) - s_cb(4)))
2225 pi_coef_z(1, 0, &
2226 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(2) - s_cb(1))*(s_cb(2) - s_cb(3)))/((s_cb(2) &
2227 & - s_cb(4))*(s_cb(4) - s_cb(0))*(s_cb(4) - s_cb(1)))
2228 pi_coef_z(1, 1, &
2229 & cbc_loc_in) = ((s_cb(0) - s_cb(2))*(s_cb(1) - s_cb(2))*((s_cb(1) - s_cb(3))*(s_cb(2) &
2230 & - s_cb(3)) + (s_cb(0) - s_cb(4))*((s_cb(1) - s_cb(3)) + (s_cb(2) - s_cb(4)))))/((s_cb(0) &
2231 & - s_cb(3))*(s_cb(1) - s_cb(3))*(s_cb(0) - s_cb(4))*(s_cb(1) - s_cb(4)))
2232 pi_coef_z(1, 2, &
2233 & cbc_loc_in) = ((s_cb(1) - s_cb(2))*(s_cb(2) - s_cb(3))*(s_cb(2) - s_cb(4)))/((s_cb(0) &
2234 & - s_cb(2))*(s_cb(0) - s_cb(3))*(s_cb(0) - s_cb(4)))
2235 end if
2236 end if
2237# 405 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2238
2239 ! END: Computing CBC4 Coefficients
2240
2241 ! Nullifying CBC coefficients
2242
2243 end subroutine s_compute_cbc_coefficients
2244
2245 !> Associate CBC finite-difference and polynomial-interpolation coefficients based on direction and boundary location
2246 subroutine s_associate_cbc_coefficients_pointers(cbc_dir_in, cbc_loc_in)
2247
2248 integer, intent(in) :: cbc_dir_in, cbc_loc_in
2249 integer :: i !< Generic loop iterator
2250 ! Associating CBC Coefficients in x-direction
2251
2252 if (cbc_dir_in == 1) then
2253 ! fd_coef => fd_coef_x; if (weno_order > 1) pi_coef => pi_coef_x
2254
2255 if (cbc_loc_in == -1) then
2256 do i = 0, buff_size
2257 ds(i) = dx(i)
2258 end do
2259 else
2260 do i = 0, buff_size
2261 ds(i) = dx(m - i)
2262 end do
2263 end if
2264
2265 ! Associating CBC Coefficients in y-direction
2266 else if (cbc_dir_in == 2) then
2267 ! fd_coef => fd_coef_y; if (weno_order > 1) pi_coef => pi_coef_y
2268
2269 if (cbc_loc_in == -1) then
2270 do i = 0, buff_size
2271 ds(i) = dy(i)
2272 end do
2273 else
2274 do i = 0, buff_size
2275 ds(i) = dy(n - i)
2276 end do
2277 end if
2278
2279 ! Associating CBC Coefficients in z-direction
2280 else
2281 ! fd_coef => fd_coef_z; if (weno_order > 1) pi_coef => pi_coef_z
2282
2283 if (cbc_loc_in == -1) then
2284 do i = 0, buff_size
2285 ds(i) = dz(i)
2286 end do
2287 else
2288 do i = 0, buff_size
2289 ds(i) = dz(p - i)
2290 end do
2291 end if
2292 end if
2293
2294
2295# 461 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2296#if defined(MFC_OpenACC)
2297# 461 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2298!$acc update device(ds)
2299# 461 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2300#elif defined(MFC_OpenMP)
2301# 461 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2302!$omp target update to(ds)
2303# 461 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2304#endif
2305
2307
2308 !> Apply characteristic boundary conditions by modifying fluxes near domain boundaries
2309 subroutine s_cbc(q_prim_vf, flux_vf, flux_src_vf, cbc_dir_norm, cbc_loc_norm, ix, iy, iz)
2310
2311 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2312 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf
2313 integer, intent(in) :: cbc_dir_norm, cbc_loc_norm
2314 type(int_bounds_info), intent(in) :: ix, iy, iz
2315 real(wp) :: drho_dt
2316 real(wp) :: dpres_dt
2317 real(wp) :: dgamma_dt
2318 real(wp) :: dpi_inf_dt
2319 real(wp) :: dqv_dt
2320 real(wp) :: dpres_ds
2321 real(wp) :: ramp !< inflow ramp factor; unity unless a ramp is set
2322
2323# 483 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2324 real(wp), dimension(sys_size) :: l
2325# 485 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2326# 494 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2327 real(wp), dimension(num_fluids) :: alpha_rho, dalpha_rho_ds, mf
2328 real(wp), dimension(num_vels) :: vel, dvel_ds
2329 real(wp), dimension(num_fluids) :: adv_local, dadv_ds
2330 real(wp), dimension(num_fluids) :: dadv_dt
2331 real(wp), dimension(num_dims) :: dvel_dt
2332 real(wp), dimension(num_fluids) :: dalpha_rho_dt
2333 real(wp), dimension(num_species) :: ys, h_k, dys_dt, dys_ds, xs, gamma_i, cp_i
2334# 502 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2335 real(wp), dimension(2) :: re_cbc
2336 real(wp), dimension(3) :: lambda
2337 real(wp) :: rho !< Cell averaged density
2338 real(wp) :: pres !< Cell averaged pressure
2339 real(wp) :: e !< Cell averaged energy
2340 real(wp) :: gamma !< Cell averaged specific heat ratio
2341 real(wp) :: pi_inf !< Cell averaged liquid stiffness
2342 real(wp) :: qv !< Cell averaged fluid reference energy
2343 real(wp) :: c
2344 real(wp) :: ma
2345 real(wp) :: t, sum_enthalpies
2346 real(wp) :: cv, cp, e_mix, mw, r_gas
2347 real(wp) :: vel_k_sum, vel_dv_dt_sum
2348 integer :: i, j, k, r !< Generic loop iterators
2349 ! Reshaping of inputted data and association of the FD and PI coefficients, or CBC coefficients, respectively, hinging on
2350 ! selected CBC coordinate direction
2351
2352 cbc_dir = cbc_dir_norm
2353 cbc_loc = cbc_loc_norm
2354
2355
2356# 522 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2357#if defined(MFC_OpenACC)
2358# 522 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2359!$acc update device(cbc_dir, cbc_loc)
2360# 522 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2361#elif defined(MFC_OpenMP)
2362# 522 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2363!$omp target update to(cbc_dir, cbc_loc)
2364# 522 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2365#endif
2366
2367 call s_initialize_cbc(q_prim_vf, flux_vf, flux_src_vf, ix, iy, iz)
2368
2370
2371# 529 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2372 if (cbc_dir == 1 .and. recon_type == recon_type_weno) then
2373 ! PI2 of flux_rs_vf and flux_src_rs_vf at j = 1/2
2374 if (weno_order == 3) then
2375 call s_convert_primitive_to_flux_variables(q_prim_rsx_vf, f_rsx_vf, f_src_rsx_vf, is1, is2, &
2376 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
2377
2378
2379# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2380
2381# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2382#if defined(MFC_OpenACC)
2383# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2384!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
2385# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2386#elif defined(MFC_OpenMP)
2387# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2388
2389# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2390
2391# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2392
2393# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2394!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
2395# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2396#endif
2397 do i = 1, flux_cbc_index
2398 do r = is3%beg, is3%end
2399 do k = is2%beg, is2%end
2400 flux_rsx_vf_l(0, k, r, i) = f_rsx_vf(0, k, r, i) + pi_coef_x(0, 0, &
2401 & cbc_loc)*(f_rsx_vf(1, k, r, i) - f_rsx_vf(0, k, r, i))
2402 end do
2403 end do
2404 end do
2405
2406# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2407#if defined(MFC_OpenACC)
2408# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2409!$acc end parallel loop
2410# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2411#elif defined(MFC_OpenMP)
2412# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2413
2414# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2415!$omp end target teams loop
2416# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2417#endif
2418
2419
2420# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2421
2422# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2423#if defined(MFC_OpenACC)
2424# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2425!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
2426# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2427#elif defined(MFC_OpenMP)
2428# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2429
2430# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2431
2432# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2433
2434# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2435!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
2436# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2437#endif
2438 do i = eqn_idx%adv%beg, eqn_idx%adv%end
2439 do r = is3%beg, is3%end
2440 do k = is2%beg, is2%end
2441 flux_src_rsx_vf_l(0, k, r, i) = f_src_rsx_vf(0, k, r, i) + (f_src_rsx_vf(1, k, &
2442 & r, i) - f_src_rsx_vf(0, k, r, i))*pi_coef_x(0, 0, cbc_loc)
2443 end do
2444 end do
2445 end do
2446
2447# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2448#if defined(MFC_OpenACC)
2449# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2450!$acc end parallel loop
2451# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2452#elif defined(MFC_OpenMP)
2453# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2454
2455# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2456!$omp end target teams loop
2457# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2458#endif
2459 end if
2460
2461 ! PI4 of flux_rs_vf and flux_src_rs_vf at j = 1/2, 3/2
2462 if (weno_order == 5) then
2463 call s_convert_primitive_to_flux_variables(q_prim_rsx_vf, f_rsx_vf, f_src_rsx_vf, is1, is2, &
2464 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
2465
2466
2467# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2468
2469# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2470#if defined(MFC_OpenACC)
2471# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2472!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
2473# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2474#elif defined(MFC_OpenMP)
2475# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2476
2477# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2478
2479# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2480
2481# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2482!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
2483# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2484#endif
2485 do i = 1, flux_cbc_index
2486 do j = 0, 1
2487 do r = is3%beg, is3%end
2488 do k = is2%beg, is2%end
2489 flux_rsx_vf_l(j, k, r, i) = f_rsx_vf(j, k, r, i) + pi_coef_x(j, 0, &
2490 & cbc_loc)*(f_rsx_vf(3, k, r, i) - f_rsx_vf(2, k, r, &
2491 & i)) + pi_coef_x(j, 1, cbc_loc)*(f_rsx_vf(2, k, r, &
2492 & i) - f_rsx_vf(1, k, r, i)) + pi_coef_x(j, 2, &
2493 & cbc_loc)*(f_rsx_vf(1, k, r, i) - f_rsx_vf(0, k, r, i))
2494 end do
2495 end do
2496 end do
2497 end do
2498
2499# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2500#if defined(MFC_OpenACC)
2501# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2502!$acc end parallel loop
2503# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2504#elif defined(MFC_OpenMP)
2505# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2506
2507# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2508!$omp end target teams loop
2509# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2510#endif
2511
2512
2513# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2514
2515# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2516#if defined(MFC_OpenACC)
2517# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2518!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
2519# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2520#elif defined(MFC_OpenMP)
2521# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2522
2523# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2524
2525# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2526
2527# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2528!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
2529# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2530#endif
2531 do i = eqn_idx%adv%beg, eqn_idx%adv%end
2532 do j = 0, 1
2533 do r = is3%beg, is3%end
2534 do k = is2%beg, is2%end
2535 flux_src_rsx_vf_l(j, k, r, i) = f_src_rsx_vf(j, k, r, i) + (f_src_rsx_vf(3, &
2536 & k, r, i) - f_src_rsx_vf(2, k, r, i))*pi_coef_x(j, 0, &
2537 & cbc_loc) + (f_src_rsx_vf(2, k, r, i) - f_src_rsx_vf(1, &
2538 & k, r, i))*pi_coef_x(j, 1, cbc_loc) + (f_src_rsx_vf(1, &
2539 & k, r, i) - f_src_rsx_vf(0, k, r, i))*pi_coef_x(j, 2, &
2540 & cbc_loc)
2541 end do
2542 end do
2543 end do
2544 end do
2545
2546# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2547#if defined(MFC_OpenACC)
2548# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2549!$acc end parallel loop
2550# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2551#elif defined(MFC_OpenMP)
2552# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2553
2554# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2555!$omp end target teams loop
2556# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2557#endif
2558 end if
2559
2560 ! FD2 or FD4 of RHS at j = 0
2561
2562# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2563
2564# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2565#if defined(MFC_OpenACC)
2566# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2567!$acc parallel loop collapse(2) gang vector default(present) private(r, k, alpha_rho, vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, &
2568# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2569!$acc& Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, &
2570# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2571!$acc& vel_dv_dt_sum, i, j, ramp) copyin(dir_idx)
2572# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2573#elif defined(MFC_OpenMP)
2574# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2575
2576# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2577
2578# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2579
2580# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2581!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(r, k, alpha_rho, &
2582# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2583!$omp& vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, &
2584# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2585!$omp& dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, vel_dv_dt_sum, i, j, ramp) map(to:dir_idx)
2586# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2587#endif
2588# 603 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2589 do r = is3%beg, is3%end
2590 do k = is2%beg, is2%end
2591 ! Ramp factor for a smoothly starting inflow, evaluated here from mytime rather than
2592 ! computed on the host and copied every Runge-Kutta stage. Unity unless a ramp is set.
2593 ramp = f_vel_ramp(bc_x%vel_in_ramp, bc_x%vel_in_t0, bc_x%vel_in_frac0, mytime)
2594
2595 ! Transferring the Primitive Variables
2596
2597# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2598#if defined(MFC_OpenACC)
2599# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2600!$acc loop seq
2601# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2602#elif defined(MFC_OpenMP)
2603# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2604
2605# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2606#endif
2607 do i = 1, eqn_idx%cont%end
2608 alpha_rho(i) = q_prim_rsx_vf(0, k, r, i)
2609 end do
2610
2611
2612# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2613#if defined(MFC_OpenACC)
2614# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2615!$acc loop seq
2616# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2617#elif defined(MFC_OpenMP)
2618# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2619
2620# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2621#endif
2622 do i = 1, num_dims
2623 vel(i) = q_prim_rsx_vf(0, k, r, eqn_idx%cont%end + i)
2624 end do
2625
2626 vel_k_sum = 0._wp
2627
2628# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2629#if defined(MFC_OpenACC)
2630# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2631!$acc loop seq
2632# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2633#elif defined(MFC_OpenMP)
2634# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2635
2636# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2637#endif
2638 do i = 1, num_dims
2639 vel_k_sum = vel_k_sum + vel(i)**2._wp
2640 end do
2641
2642 pres = q_prim_rsx_vf(0, k, r, eqn_idx%E)
2643
2644
2645# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2646#if defined(MFC_OpenACC)
2647# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2648!$acc loop seq
2649# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2650#elif defined(MFC_OpenMP)
2651# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2652
2653# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2654#endif
2655 do i = 1, eqn_idx%adv%end - eqn_idx%E
2656 adv_local(i) = q_prim_rsx_vf(0, k, r, eqn_idx%E + i)
2657 end do
2658
2659 call s_convert_species_to_mixture_variables_kernel(rho, gamma, pi_inf, qv, adv_local, alpha_rho, re_cbc)
2660
2661
2662# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2663#if defined(MFC_OpenACC)
2664# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2665!$acc loop seq
2666# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2667#elif defined(MFC_OpenMP)
2668# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2669
2670# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2671#endif
2672 do i = 1, eqn_idx%cont%end
2673 mf(i) = alpha_rho(i)/rho
2674 end do
2675
2676 if (chemistry) then
2677
2678# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2679#if defined(MFC_OpenACC)
2680# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2681!$acc loop seq
2682# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2683#elif defined(MFC_OpenMP)
2684# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2685
2686# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2687#endif
2688 do i = eqn_idx%species%beg, eqn_idx%species%end
2689 ys(i - eqn_idx%species%beg + 1) = q_prim_rsx_vf(0, k, r, i)
2690 end do
2691
2692 call get_mixture_molecular_weight(ys, mw)
2693 r_gas = gas_constant/mw
2694 t = pres/rho/r_gas
2695 call get_mixture_specific_heat_cp_mass(t, ys, cp)
2696 call get_mixture_energy_mass(t, ys, e_mix)
2697 e = rho*e_mix + 5.e-1_wp*rho*vel_k_sum
2698 if (chem_params%gamma_method == 1) then
2699 !> gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
2700 call get_mole_fractions(mw, ys, xs)
2701 call get_species_specific_heats_r(t, cp_i)
2702 gamma_i(1:num_species) = cp_i(1:num_species)/(cp_i(1:num_species) - 1.0_wp)
2703 gamma = sum(xs(1:num_species)/(gamma_i(1:num_species) - 1.0_wp))
2704 else if (chem_params%gamma_method == 2) then
2705 !> gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
2706 call get_mixture_specific_heat_cv_mass(t, ys, cv)
2707 gamma = 1.0_wp/(cp/cv - 1.0_wp)
2708 end if
2709 end if
2710
2711 ! Compute mixture sound speed
2712 call s_compute_speed_of_sound(pres, rho, gamma, pi_inf, adv_local, c, alpha_rho)
2713
2714 ! First-Order Spatial Derivatives of Primitive Variables
2715
2716
2717# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2718#if defined(MFC_OpenACC)
2719# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2720!$acc loop seq
2721# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2722#elif defined(MFC_OpenMP)
2723# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2724
2725# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2726#endif
2727 do i = 1, eqn_idx%cont%end
2728 dalpha_rho_ds(i) = 0._wp
2729 end do
2730
2731
2732# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2733#if defined(MFC_OpenACC)
2734# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2735!$acc loop seq
2736# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2737#elif defined(MFC_OpenMP)
2738# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2739
2740# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2741#endif
2742 do i = 1, num_dims
2743 dvel_ds(i) = 0._wp
2744 end do
2745
2746 dpres_ds = 0._wp
2747
2748# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2749#if defined(MFC_OpenACC)
2750# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2751!$acc loop seq
2752# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2753#elif defined(MFC_OpenMP)
2754# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2755
2756# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2757#endif
2758 do i = 1, eqn_idx%adv%end - eqn_idx%E
2759 dadv_ds(i) = 0._wp
2760 end do
2761
2762 if (chemistry) then
2763
2764# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2765#if defined(MFC_OpenACC)
2766# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2767!$acc loop seq
2768# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2769#elif defined(MFC_OpenMP)
2770# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2771
2772# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2773#endif
2774 do i = 1, num_species
2775 dys_ds(i) = 0._wp
2776 end do
2777 end if
2778
2779
2780# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2781#if defined(MFC_OpenACC)
2782# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2783!$acc loop seq
2784# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2785#elif defined(MFC_OpenMP)
2786# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2787
2788# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2789#endif
2790 do j = 0, buff_size
2791
2792# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2793#if defined(MFC_OpenACC)
2794# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2795!$acc loop seq
2796# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2797#elif defined(MFC_OpenMP)
2798# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2799
2800# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2801#endif
2802 do i = 1, eqn_idx%cont%end
2803 dalpha_rho_ds(i) = q_prim_rsx_vf(j, k, r, i)*fd_coef_x(j, cbc_loc) + dalpha_rho_ds(i)
2804 end do
2805
2806# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2807#if defined(MFC_OpenACC)
2808# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2809!$acc loop seq
2810# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2811#elif defined(MFC_OpenMP)
2812# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2813
2814# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2815#endif
2816 do i = 1, num_dims
2817 dvel_ds(i) = q_prim_rsx_vf(j, k, r, eqn_idx%cont%end + i)*fd_coef_x(j, &
2818 & cbc_loc) + dvel_ds(i)
2819 end do
2820
2821 dpres_ds = q_prim_rsx_vf(j, k, r, eqn_idx%E)*fd_coef_x(j, cbc_loc) + dpres_ds
2822
2823# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2824#if defined(MFC_OpenACC)
2825# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2826!$acc loop seq
2827# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2828#elif defined(MFC_OpenMP)
2829# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2830
2831# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2832#endif
2833 do i = 1, eqn_idx%adv%end - eqn_idx%E
2834 dadv_ds(i) = q_prim_rsx_vf(j, k, r, eqn_idx%E + i)*fd_coef_x(j, cbc_loc) + dadv_ds(i)
2835 end do
2836
2837 if (chemistry) then
2838
2839# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2840#if defined(MFC_OpenACC)
2841# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2842!$acc loop seq
2843# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2844#elif defined(MFC_OpenMP)
2845# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2846
2847# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2848#endif
2849 do i = 1, num_species
2850 dys_ds(i) = q_prim_rsx_vf(j, k, r, eqn_idx%species%beg - 1 + i)*fd_coef_x(j, &
2851 & cbc_loc) + dys_ds(i)
2852 end do
2853 end if
2854 end do
2855
2856 ! First-Order Temporal Derivatives of Primitive Variables
2857 lambda(1) = vel(dir_idx(1)) - c
2858 lambda(2) = vel(dir_idx(1))
2859 lambda(3) = vel(dir_idx(1)) + c
2860
2861 ma = vel(dir_idx(1))/c
2862
2863 if ((cbc_loc == -1 .and. bc_x%beg == bc_char_slip_wall) .or. (cbc_loc == 1 &
2864 & .and. bc_x%end == bc_char_slip_wall)) then
2865 call s_compute_slip_wall_l(lambda, l, rho, c, dpres_ds, dvel_ds)
2866 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_nr_sub_buffer) .or. (cbc_loc == 1 &
2867 & .and. bc_x%end == bc_char_nr_sub_buffer)) then
2868 call s_compute_nonreflecting_subsonic_buffer_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
2869 & dvel_ds, dadv_ds, dys_ds)
2870 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_nr_sub_inflow) .or. (cbc_loc == 1 &
2871 & .and. bc_x%end == bc_char_nr_sub_inflow)) then
2872 call s_compute_nonreflecting_subsonic_inflow_l(lambda, l, rho, c, dpres_ds, dvel_ds)
2873 ! Add GRCBC for Subsonic Inflow
2874 if (bc_x%grcbc_in) then
2875
2876# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2877#if defined(MFC_OpenACC)
2878# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2879!$acc loop seq
2880# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2881#elif defined(MFC_OpenMP)
2882# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2883
2884# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2885#endif
2886 do i = 2, eqn_idx%mom%beg
2887 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, &
2888 & 1))/del_in(1) - c*ma*(pres - pres_in(1))/del_in(1)
2889 end do
2890 if (n > 0) then
2891 l(eqn_idx%mom%beg + 1) = c*ma*(vel(dir_idx(2)) - ramp*vel_in(1, &
2892 & dir_idx(2)))/del_in(1)
2893 if (p > 0) then
2894 l(eqn_idx%mom%beg + 2) = c*ma*(vel(dir_idx(3)) - ramp*vel_in(1, &
2895 & dir_idx(3)))/del_in(1)
2896 end if
2897 end if
2898
2899# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2900#if defined(MFC_OpenACC)
2901# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2902!$acc loop seq
2903# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2904#elif defined(MFC_OpenMP)
2905# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2906
2907# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2908#endif
2909 do i = eqn_idx%E, eqn_idx%adv%end - 1
2910 l(i) = c*ma*(adv_local(i + 1 - eqn_idx%E) - alpha_in(i + 1 - eqn_idx%E, &
2911 & 1))/del_in(1)
2912 end do
2913 l(eqn_idx%adv%end) = rho*c**2._wp*(1._wp + ma)*(vel(dir_idx(1)) + ramp*vel_in(1, &
2914 & dir_idx(1))*sign(1, &
2915 & cbc_loc))/del_in(1) + c*(1._wp + ma)*(pres - pres_in(1))/del_in(1)
2916 end if
2917 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_nr_sub_outflow) .or. (cbc_loc == 1 &
2918 & .and. bc_x%end == bc_char_nr_sub_outflow)) then
2919 call s_compute_nonreflecting_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
2920 & dvel_ds, dadv_ds, dys_ds)
2921 ! Add GRCBC for Subsonic Outflow (Pressure)
2922 if (bc_x%grcbc_out) then
2923 l(eqn_idx%adv%end) = c*(1._wp - ma)*(pres - pres_out(1))/del_out(1)
2924
2925 ! Add GRCBC for Subsonic Outflow (Normal Velocity)
2926 if (bc_x%grcbc_vel_out) then
2927 l(eqn_idx%adv%end) = l(eqn_idx%adv%end) + rho*c**2._wp*(1._wp - ma)*(vel(dir_idx(1)) &
2928 & + vel_out(1, dir_idx(1))*sign(1, cbc_loc))/del_out(1)
2929 end if
2930 end if
2931 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_ff_sub_outflow) .or. (cbc_loc == 1 &
2932 & .and. bc_x%end == bc_char_ff_sub_outflow)) then
2933 call s_compute_force_free_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, &
2934 & dadv_ds)
2935 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_cp_sub_outflow) .or. (cbc_loc == 1 &
2936 & .and. bc_x%end == bc_char_cp_sub_outflow)) then
2937 call s_compute_constant_pressure_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
2938 & dvel_ds, dadv_ds)
2939 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_sup_inflow) .or. (cbc_loc == 1 &
2940 & .and. bc_x%end == bc_char_sup_inflow)) then
2941 call s_compute_supersonic_inflow_l(l)
2942 else if ((cbc_loc == -1 .and. bc_x%beg == bc_char_sup_outflow) .or. (cbc_loc == 1 &
2943 & .and. bc_x%end == bc_char_sup_outflow)) then
2944 call s_compute_supersonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, &
2945 & dys_ds)
2946 end if
2947
2948 ! Be careful about the cylindrical coordinate!
2949 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
2950 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1)) + rho*c*c*vel(dir_idx(1))/y_cc(n)
2951 else
2952 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1))
2953 end if
2954
2955
2956# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2957#if defined(MFC_OpenACC)
2958# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2959!$acc loop seq
2960# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2961#elif defined(MFC_OpenMP)
2962# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2963
2964# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2965#endif
2966 do i = 1, eqn_idx%cont%end
2967 dalpha_rho_dt(i) = -(l(i + 1) - mf(i)*dpres_dt)/(c*c)
2968 end do
2969
2970
2971# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2972#if defined(MFC_OpenACC)
2973# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2974!$acc loop seq
2975# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2976#elif defined(MFC_OpenMP)
2977# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2978
2979# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2980#endif
2981 do i = 1, num_dims
2982 dvel_dt(dir_idx(i)) = dir_flg(dir_idx(i))*(l(1) - l(eqn_idx%adv%end))/(2._wp*rho*c) &
2983 & + (dir_flg(dir_idx(i)) - 1._wp)*l(eqn_idx%mom%beg + i - 1)
2984 end do
2985
2986 vel_dv_dt_sum = 0._wp
2987
2988# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2989#if defined(MFC_OpenACC)
2990# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2991!$acc loop seq
2992# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2993#elif defined(MFC_OpenMP)
2994# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2995
2996# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
2997#endif
2998 do i = 1, num_dims
2999 vel_dv_dt_sum = vel_dv_dt_sum + vel(i)*dvel_dt(i)
3000 end do
3001
3002 if (chemistry) then
3003
3004# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3005#if defined(MFC_OpenACC)
3006# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3007!$acc loop seq
3008# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3009#elif defined(MFC_OpenMP)
3010# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3011
3012# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3013#endif
3014 do i = 1, num_species
3015 dys_dt(i) = -1._wp*l(eqn_idx%species%beg + i - 1)
3016 end do
3017 end if
3018
3019 ! The treatment of void fraction source is unclear
3020 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
3021
3022# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3023#if defined(MFC_OpenACC)
3024# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3025!$acc loop seq
3026# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3027#elif defined(MFC_OpenMP)
3028# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3029
3030# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3031#endif
3032 do i = 1, eqn_idx%adv%end - eqn_idx%E
3033 dadv_dt(i) = -l(eqn_idx%mom%end + i) ! + adv_local(i) * vel(dir_idx(1))/y_cc(n)
3034 end do
3035 else
3036
3037# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3038#if defined(MFC_OpenACC)
3039# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3040!$acc loop seq
3041# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3042#elif defined(MFC_OpenMP)
3043# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3044
3045# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3046#endif
3047 do i = 1, eqn_idx%adv%end - eqn_idx%E
3048 dadv_dt(i) = -l(eqn_idx%mom%end + i)
3049 end do
3050 end if
3051
3052 drho_dt = 0._wp; dgamma_dt = 0._wp; dpi_inf_dt = 0._wp; dqv_dt = 0._wp
3053
3054 if (model_eqns == model_eqns_gamma_law) then
3055 drho_dt = dalpha_rho_dt(1)
3056 dgamma_dt = dadv_dt(1)
3057# 842 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3058 dpi_inf_dt = dadv_dt(2)
3059# 844 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3060 else
3061 call s_compute_mixture_coefficients_dt(dalpha_rho_dt, dadv_dt, alpha_rho, adv_local, drho_dt, &
3062 & dgamma_dt, dpi_inf_dt, dqv_dt)
3063 end if
3064
3065 ! flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
3066
3067# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3068#if defined(MFC_OpenACC)
3069# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3070!$acc loop seq
3071# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3072#elif defined(MFC_OpenMP)
3073# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3074
3075# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3076#endif
3077 do i = 1, eqn_idx%cont%end
3078 flux_rsx_vf_l(-1, k, r, i) = flux_rsx_vf_l(0, k, r, i) + ds(0)*dalpha_rho_dt(i)
3079 end do
3080
3081
3082# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3083#if defined(MFC_OpenACC)
3084# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3085!$acc loop seq
3086# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3087#elif defined(MFC_OpenMP)
3088# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3089
3090# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3091#endif
3092 do i = eqn_idx%mom%beg, eqn_idx%mom%end
3093 flux_rsx_vf_l(-1, k, r, i) = flux_rsx_vf_l(0, k, r, &
3094 & i) + ds(0)*(vel(i - eqn_idx%cont%end)*drho_dt + rho*dvel_dt(i - eqn_idx%cont%end))
3095 end do
3096
3097 if (chemistry) then
3098 ! Evolution of LODI equation of energy for real gases adjusted to perfect gas,
3099 ! doi:10.1006/jcph.2002.6990
3100 call get_species_enthalpies_rt(t, h_k)
3101 sum_enthalpies = 0._wp
3102
3103# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3104#if defined(MFC_OpenACC)
3105# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3106!$acc loop seq
3107# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3108#elif defined(MFC_OpenMP)
3109# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3110
3111# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3112#endif
3113 do i = 1, num_species
3114 h_k(i) = h_k(i)*gas_constant/molecular_weights(i)*t
3115 sum_enthalpies = sum_enthalpies + (rho*h_k(i) - pres*mw/molecular_weights(i)*cp/r_gas)*dys_dt(i)
3116 end do
3117 flux_rsx_vf_l(-1, k, r, eqn_idx%E) = flux_rsx_vf_l(0, k, r, &
3118 & eqn_idx%E) + ds(0)*((e/rho + pres/rho)*drho_dt + rho*vel_dv_dt_sum + cp*t*l(2) &
3119 & /(c*c) + sum_enthalpies)
3120
3121# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3122#if defined(MFC_OpenACC)
3123# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3124!$acc loop seq
3125# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3126#elif defined(MFC_OpenMP)
3127# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3128
3129# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3130#endif
3131 do i = 1, num_species
3132 flux_rsx_vf_l(-1, k, r, i - 1 + eqn_idx%species%beg) = flux_rsx_vf_l(0, k, r, &
3133 & eqn_idx%species%beg + i - 1) + ds(0)*(drho_dt*ys(i) + rho*dys_dt(i))
3134 end do
3135 else
3136 flux_rsx_vf_l(-1, k, r, eqn_idx%E) = flux_rsx_vf_l(0, k, r, &
3137 & eqn_idx%E) + ds(0)*(pres*dgamma_dt + gamma*dpres_dt + dpi_inf_dt + dqv_dt &
3138 & + rho*vel_dv_dt_sum + 5.e-1_wp*drho_dt*vel_k_sum)
3139 end if
3140
3141 ! Only HLL Method 1 uses per-fluid alpha source traces. HLL Method 2 carries a shared interface velocity and
3142 ! must follow the same CBC representation as HLLC.
3143 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
3144
3145# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3146#if defined(MFC_OpenACC)
3147# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3148!$acc loop seq
3149# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3150#elif defined(MFC_OpenMP)
3151# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3152
3153# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3154#endif
3155 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3156 flux_rsx_vf_l(-1, k, r, i) = 0._wp
3157 end do
3158
3159
3160# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3161#if defined(MFC_OpenACC)
3162# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3163!$acc loop seq
3164# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3165#elif defined(MFC_OpenMP)
3166# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3167
3168# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3169#endif
3170 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3171 flux_src_rsx_vf_l(-1, k, r, i) = 1._wp/max(abs(vel(dir_idx(1))), sgm_eps)*sign(1._wp, &
3172 & vel(dir_idx(1)))*(flux_rsx_vf_l(0, k, r, &
3173 & i) + vel(dir_idx(1))*flux_src_rsx_vf_l(0, k, r, &
3174 & i) + ds(0)*dadv_dt(i - eqn_idx%E))
3175 end do
3176 else
3177
3178# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3179#if defined(MFC_OpenACC)
3180# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3181!$acc loop seq
3182# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3183#elif defined(MFC_OpenMP)
3184# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3185
3186# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3187#endif
3188 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3189 flux_rsx_vf_l(-1, k, r, i) = flux_rsx_vf_l(0, k, r, i) + ds(0)*dadv_dt(i - eqn_idx%E)
3190 end do
3191
3192
3193# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3194#if defined(MFC_OpenACC)
3195# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3196!$acc loop seq
3197# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3198#elif defined(MFC_OpenMP)
3199# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3200
3201# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3202#endif
3203 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3204 flux_src_rsx_vf_l(-1, k, r, i) = flux_src_rsx_vf_l(0, k, r, i)
3205 end do
3206 end if
3207 ! END: flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
3208 end do
3209 end do
3210
3211# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3212#if defined(MFC_OpenACC)
3213# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3214!$acc end parallel loop
3215# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3216#elif defined(MFC_OpenMP)
3217# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3218
3219# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3220!$omp end target teams loop
3221# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3222#endif
3223 end if
3224# 529 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3225 if (cbc_dir == 2 .and. recon_type == recon_type_weno) then
3226 ! PI2 of flux_rs_vf and flux_src_rs_vf at j = 1/2
3227 if (weno_order == 3) then
3228 call s_convert_primitive_to_flux_variables(q_prim_rsy_vf, f_rsy_vf, f_src_rsy_vf, is1, is2, &
3229 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
3230
3231
3232# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3233
3234# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3235#if defined(MFC_OpenACC)
3236# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3237!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
3238# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3239#elif defined(MFC_OpenMP)
3240# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3241
3242# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3243
3244# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3245
3246# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3247!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
3248# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3249#endif
3250 do i = 1, flux_cbc_index
3251 do r = is3%beg, is3%end
3252 do k = is2%beg, is2%end
3253 flux_rsy_vf_l(0, k, r, i) = f_rsy_vf(0, k, r, i) + pi_coef_y(0, 0, &
3254 & cbc_loc)*(f_rsy_vf(1, k, r, i) - f_rsy_vf(0, k, r, i))
3255 end do
3256 end do
3257 end do
3258
3259# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3260#if defined(MFC_OpenACC)
3261# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3262!$acc end parallel loop
3263# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3264#elif defined(MFC_OpenMP)
3265# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3266
3267# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3268!$omp end target teams loop
3269# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3270#endif
3271
3272
3273# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3274
3275# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3276#if defined(MFC_OpenACC)
3277# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3278!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
3279# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3280#elif defined(MFC_OpenMP)
3281# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3282
3283# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3284
3285# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3286
3287# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3288!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
3289# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3290#endif
3291 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3292 do r = is3%beg, is3%end
3293 do k = is2%beg, is2%end
3294 flux_src_rsy_vf_l(0, k, r, i) = f_src_rsy_vf(0, k, r, i) + (f_src_rsy_vf(1, k, &
3295 & r, i) - f_src_rsy_vf(0, k, r, i))*pi_coef_y(0, 0, cbc_loc)
3296 end do
3297 end do
3298 end do
3299
3300# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3301#if defined(MFC_OpenACC)
3302# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3303!$acc end parallel loop
3304# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3305#elif defined(MFC_OpenMP)
3306# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3307
3308# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3309!$omp end target teams loop
3310# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3311#endif
3312 end if
3313
3314 ! PI4 of flux_rs_vf and flux_src_rs_vf at j = 1/2, 3/2
3315 if (weno_order == 5) then
3316 call s_convert_primitive_to_flux_variables(q_prim_rsy_vf, f_rsy_vf, f_src_rsy_vf, is1, is2, &
3317 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
3318
3319
3320# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3321
3322# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3323#if defined(MFC_OpenACC)
3324# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3325!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
3326# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3327#elif defined(MFC_OpenMP)
3328# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3329
3330# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3331
3332# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3333
3334# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3335!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
3336# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3337#endif
3338 do i = 1, flux_cbc_index
3339 do j = 0, 1
3340 do r = is3%beg, is3%end
3341 do k = is2%beg, is2%end
3342 flux_rsy_vf_l(j, k, r, i) = f_rsy_vf(j, k, r, i) + pi_coef_y(j, 0, &
3343 & cbc_loc)*(f_rsy_vf(3, k, r, i) - f_rsy_vf(2, k, r, &
3344 & i)) + pi_coef_y(j, 1, cbc_loc)*(f_rsy_vf(2, k, r, &
3345 & i) - f_rsy_vf(1, k, r, i)) + pi_coef_y(j, 2, &
3346 & cbc_loc)*(f_rsy_vf(1, k, r, i) - f_rsy_vf(0, k, r, i))
3347 end do
3348 end do
3349 end do
3350 end do
3351
3352# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3353#if defined(MFC_OpenACC)
3354# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3355!$acc end parallel loop
3356# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3357#elif defined(MFC_OpenMP)
3358# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3359
3360# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3361!$omp end target teams loop
3362# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3363#endif
3364
3365
3366# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3367
3368# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3369#if defined(MFC_OpenACC)
3370# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3371!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
3372# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3373#elif defined(MFC_OpenMP)
3374# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3375
3376# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3377
3378# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3379
3380# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3381!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
3382# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3383#endif
3384 do i = eqn_idx%adv%beg, eqn_idx%adv%end
3385 do j = 0, 1
3386 do r = is3%beg, is3%end
3387 do k = is2%beg, is2%end
3388 flux_src_rsy_vf_l(j, k, r, i) = f_src_rsy_vf(j, k, r, i) + (f_src_rsy_vf(3, &
3389 & k, r, i) - f_src_rsy_vf(2, k, r, i))*pi_coef_y(j, 0, &
3390 & cbc_loc) + (f_src_rsy_vf(2, k, r, i) - f_src_rsy_vf(1, &
3391 & k, r, i))*pi_coef_y(j, 1, cbc_loc) + (f_src_rsy_vf(1, &
3392 & k, r, i) - f_src_rsy_vf(0, k, r, i))*pi_coef_y(j, 2, &
3393 & cbc_loc)
3394 end do
3395 end do
3396 end do
3397 end do
3398
3399# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3400#if defined(MFC_OpenACC)
3401# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3402!$acc end parallel loop
3403# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3404#elif defined(MFC_OpenMP)
3405# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3406
3407# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3408!$omp end target teams loop
3409# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3410#endif
3411 end if
3412
3413 ! FD2 or FD4 of RHS at j = 0
3414
3415# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3416
3417# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3418#if defined(MFC_OpenACC)
3419# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3420!$acc parallel loop collapse(2) gang vector default(present) private(r, k, alpha_rho, vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, &
3421# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3422!$acc& Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, &
3423# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3424!$acc& vel_dv_dt_sum, i, j, ramp) copyin(dir_idx)
3425# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3426#elif defined(MFC_OpenMP)
3427# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3428
3429# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3430
3431# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3432
3433# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3434!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(r, k, alpha_rho, &
3435# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3436!$omp& vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, &
3437# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3438!$omp& dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, vel_dv_dt_sum, i, j, ramp) map(to:dir_idx)
3439# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3440#endif
3441# 603 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3442 do r = is3%beg, is3%end
3443 do k = is2%beg, is2%end
3444 ! Ramp factor for a smoothly starting inflow, evaluated here from mytime rather than
3445 ! computed on the host and copied every Runge-Kutta stage. Unity unless a ramp is set.
3446 ramp = f_vel_ramp(bc_y%vel_in_ramp, bc_y%vel_in_t0, bc_y%vel_in_frac0, mytime)
3447
3448 ! Transferring the Primitive Variables
3449
3450# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3451#if defined(MFC_OpenACC)
3452# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3453!$acc loop seq
3454# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3455#elif defined(MFC_OpenMP)
3456# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3457
3458# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3459#endif
3460 do i = 1, eqn_idx%cont%end
3461 alpha_rho(i) = q_prim_rsy_vf(0, k, r, i)
3462 end do
3463
3464
3465# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3466#if defined(MFC_OpenACC)
3467# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3468!$acc loop seq
3469# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3470#elif defined(MFC_OpenMP)
3471# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3472
3473# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3474#endif
3475 do i = 1, num_dims
3476 vel(i) = q_prim_rsy_vf(0, k, r, eqn_idx%cont%end + i)
3477 end do
3478
3479 vel_k_sum = 0._wp
3480
3481# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3482#if defined(MFC_OpenACC)
3483# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3484!$acc loop seq
3485# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3486#elif defined(MFC_OpenMP)
3487# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3488
3489# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3490#endif
3491 do i = 1, num_dims
3492 vel_k_sum = vel_k_sum + vel(i)**2._wp
3493 end do
3494
3495 pres = q_prim_rsy_vf(0, k, r, eqn_idx%E)
3496
3497
3498# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3499#if defined(MFC_OpenACC)
3500# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3501!$acc loop seq
3502# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3503#elif defined(MFC_OpenMP)
3504# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3505
3506# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3507#endif
3508 do i = 1, eqn_idx%adv%end - eqn_idx%E
3509 adv_local(i) = q_prim_rsy_vf(0, k, r, eqn_idx%E + i)
3510 end do
3511
3512 call s_convert_species_to_mixture_variables_kernel(rho, gamma, pi_inf, qv, adv_local, alpha_rho, re_cbc)
3513
3514
3515# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3516#if defined(MFC_OpenACC)
3517# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3518!$acc loop seq
3519# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3520#elif defined(MFC_OpenMP)
3521# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3522
3523# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3524#endif
3525 do i = 1, eqn_idx%cont%end
3526 mf(i) = alpha_rho(i)/rho
3527 end do
3528
3529 if (chemistry) then
3530
3531# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3532#if defined(MFC_OpenACC)
3533# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3534!$acc loop seq
3535# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3536#elif defined(MFC_OpenMP)
3537# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3538
3539# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3540#endif
3541 do i = eqn_idx%species%beg, eqn_idx%species%end
3542 ys(i - eqn_idx%species%beg + 1) = q_prim_rsy_vf(0, k, r, i)
3543 end do
3544
3545 call get_mixture_molecular_weight(ys, mw)
3546 r_gas = gas_constant/mw
3547 t = pres/rho/r_gas
3548 call get_mixture_specific_heat_cp_mass(t, ys, cp)
3549 call get_mixture_energy_mass(t, ys, e_mix)
3550 e = rho*e_mix + 5.e-1_wp*rho*vel_k_sum
3551 if (chem_params%gamma_method == 1) then
3552 !> gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
3553 call get_mole_fractions(mw, ys, xs)
3554 call get_species_specific_heats_r(t, cp_i)
3555 gamma_i(1:num_species) = cp_i(1:num_species)/(cp_i(1:num_species) - 1.0_wp)
3556 gamma = sum(xs(1:num_species)/(gamma_i(1:num_species) - 1.0_wp))
3557 else if (chem_params%gamma_method == 2) then
3558 !> gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
3559 call get_mixture_specific_heat_cv_mass(t, ys, cv)
3560 gamma = 1.0_wp/(cp/cv - 1.0_wp)
3561 end if
3562 end if
3563
3564 ! Compute mixture sound speed
3565 call s_compute_speed_of_sound(pres, rho, gamma, pi_inf, adv_local, c, alpha_rho)
3566
3567 ! First-Order Spatial Derivatives of Primitive Variables
3568
3569
3570# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3571#if defined(MFC_OpenACC)
3572# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3573!$acc loop seq
3574# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3575#elif defined(MFC_OpenMP)
3576# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3577
3578# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3579#endif
3580 do i = 1, eqn_idx%cont%end
3581 dalpha_rho_ds(i) = 0._wp
3582 end do
3583
3584
3585# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3586#if defined(MFC_OpenACC)
3587# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3588!$acc loop seq
3589# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3590#elif defined(MFC_OpenMP)
3591# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3592
3593# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3594#endif
3595 do i = 1, num_dims
3596 dvel_ds(i) = 0._wp
3597 end do
3598
3599 dpres_ds = 0._wp
3600
3601# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3602#if defined(MFC_OpenACC)
3603# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3604!$acc loop seq
3605# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3606#elif defined(MFC_OpenMP)
3607# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3608
3609# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3610#endif
3611 do i = 1, eqn_idx%adv%end - eqn_idx%E
3612 dadv_ds(i) = 0._wp
3613 end do
3614
3615 if (chemistry) then
3616
3617# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3618#if defined(MFC_OpenACC)
3619# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3620!$acc loop seq
3621# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3622#elif defined(MFC_OpenMP)
3623# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3624
3625# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3626#endif
3627 do i = 1, num_species
3628 dys_ds(i) = 0._wp
3629 end do
3630 end if
3631
3632
3633# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3634#if defined(MFC_OpenACC)
3635# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3636!$acc loop seq
3637# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3638#elif defined(MFC_OpenMP)
3639# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3640
3641# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3642#endif
3643 do j = 0, buff_size
3644
3645# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3646#if defined(MFC_OpenACC)
3647# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3648!$acc loop seq
3649# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3650#elif defined(MFC_OpenMP)
3651# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3652
3653# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3654#endif
3655 do i = 1, eqn_idx%cont%end
3656 dalpha_rho_ds(i) = q_prim_rsy_vf(j, k, r, i)*fd_coef_y(j, cbc_loc) + dalpha_rho_ds(i)
3657 end do
3658
3659# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3660#if defined(MFC_OpenACC)
3661# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3662!$acc loop seq
3663# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3664#elif defined(MFC_OpenMP)
3665# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3666
3667# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3668#endif
3669 do i = 1, num_dims
3670 dvel_ds(i) = q_prim_rsy_vf(j, k, r, eqn_idx%cont%end + i)*fd_coef_y(j, &
3671 & cbc_loc) + dvel_ds(i)
3672 end do
3673
3674 dpres_ds = q_prim_rsy_vf(j, k, r, eqn_idx%E)*fd_coef_y(j, cbc_loc) + dpres_ds
3675
3676# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3677#if defined(MFC_OpenACC)
3678# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3679!$acc loop seq
3680# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3681#elif defined(MFC_OpenMP)
3682# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3683
3684# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3685#endif
3686 do i = 1, eqn_idx%adv%end - eqn_idx%E
3687 dadv_ds(i) = q_prim_rsy_vf(j, k, r, eqn_idx%E + i)*fd_coef_y(j, cbc_loc) + dadv_ds(i)
3688 end do
3689
3690 if (chemistry) then
3691
3692# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3693#if defined(MFC_OpenACC)
3694# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3695!$acc loop seq
3696# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3697#elif defined(MFC_OpenMP)
3698# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3699
3700# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3701#endif
3702 do i = 1, num_species
3703 dys_ds(i) = q_prim_rsy_vf(j, k, r, eqn_idx%species%beg - 1 + i)*fd_coef_y(j, &
3704 & cbc_loc) + dys_ds(i)
3705 end do
3706 end if
3707 end do
3708
3709 ! First-Order Temporal Derivatives of Primitive Variables
3710 lambda(1) = vel(dir_idx(1)) - c
3711 lambda(2) = vel(dir_idx(1))
3712 lambda(3) = vel(dir_idx(1)) + c
3713
3714 ma = vel(dir_idx(1))/c
3715
3716 if ((cbc_loc == -1 .and. bc_y%beg == bc_char_slip_wall) .or. (cbc_loc == 1 &
3717 & .and. bc_y%end == bc_char_slip_wall)) then
3718 call s_compute_slip_wall_l(lambda, l, rho, c, dpres_ds, dvel_ds)
3719 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_nr_sub_buffer) .or. (cbc_loc == 1 &
3720 & .and. bc_y%end == bc_char_nr_sub_buffer)) then
3721 call s_compute_nonreflecting_subsonic_buffer_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
3722 & dvel_ds, dadv_ds, dys_ds)
3723 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_nr_sub_inflow) .or. (cbc_loc == 1 &
3724 & .and. bc_y%end == bc_char_nr_sub_inflow)) then
3725 call s_compute_nonreflecting_subsonic_inflow_l(lambda, l, rho, c, dpres_ds, dvel_ds)
3726 ! Add GRCBC for Subsonic Inflow
3727 if (bc_y%grcbc_in) then
3728
3729# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3730#if defined(MFC_OpenACC)
3731# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3732!$acc loop seq
3733# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3734#elif defined(MFC_OpenMP)
3735# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3736
3737# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3738#endif
3739 do i = 2, eqn_idx%mom%beg
3740 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, &
3741 & 2))/del_in(2) - c*ma*(pres - pres_in(2))/del_in(2)
3742 end do
3743 if (n > 0) then
3744 l(eqn_idx%mom%beg + 1) = c*ma*(vel(dir_idx(2)) - ramp*vel_in(2, &
3745 & dir_idx(2)))/del_in(2)
3746 if (p > 0) then
3747 l(eqn_idx%mom%beg + 2) = c*ma*(vel(dir_idx(3)) - ramp*vel_in(2, &
3748 & dir_idx(3)))/del_in(2)
3749 end if
3750 end if
3751
3752# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3753#if defined(MFC_OpenACC)
3754# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3755!$acc loop seq
3756# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3757#elif defined(MFC_OpenMP)
3758# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3759
3760# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3761#endif
3762 do i = eqn_idx%E, eqn_idx%adv%end - 1
3763 l(i) = c*ma*(adv_local(i + 1 - eqn_idx%E) - alpha_in(i + 1 - eqn_idx%E, &
3764 & 2))/del_in(2)
3765 end do
3766 l(eqn_idx%adv%end) = rho*c**2._wp*(1._wp + ma)*(vel(dir_idx(1)) + ramp*vel_in(2, &
3767 & dir_idx(1))*sign(1, &
3768 & cbc_loc))/del_in(2) + c*(1._wp + ma)*(pres - pres_in(2))/del_in(2)
3769 end if
3770 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_nr_sub_outflow) .or. (cbc_loc == 1 &
3771 & .and. bc_y%end == bc_char_nr_sub_outflow)) then
3772 call s_compute_nonreflecting_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
3773 & dvel_ds, dadv_ds, dys_ds)
3774 ! Add GRCBC for Subsonic Outflow (Pressure)
3775 if (bc_y%grcbc_out) then
3776 l(eqn_idx%adv%end) = c*(1._wp - ma)*(pres - pres_out(2))/del_out(2)
3777
3778 ! Add GRCBC for Subsonic Outflow (Normal Velocity)
3779 if (bc_y%grcbc_vel_out) then
3780 l(eqn_idx%adv%end) = l(eqn_idx%adv%end) + rho*c**2._wp*(1._wp - ma)*(vel(dir_idx(1)) &
3781 & + vel_out(2, dir_idx(1))*sign(1, cbc_loc))/del_out(2)
3782 end if
3783 end if
3784 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_ff_sub_outflow) .or. (cbc_loc == 1 &
3785 & .and. bc_y%end == bc_char_ff_sub_outflow)) then
3786 call s_compute_force_free_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, &
3787 & dadv_ds)
3788 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_cp_sub_outflow) .or. (cbc_loc == 1 &
3789 & .and. bc_y%end == bc_char_cp_sub_outflow)) then
3790 call s_compute_constant_pressure_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
3791 & dvel_ds, dadv_ds)
3792 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_sup_inflow) .or. (cbc_loc == 1 &
3793 & .and. bc_y%end == bc_char_sup_inflow)) then
3794 call s_compute_supersonic_inflow_l(l)
3795 else if ((cbc_loc == -1 .and. bc_y%beg == bc_char_sup_outflow) .or. (cbc_loc == 1 &
3796 & .and. bc_y%end == bc_char_sup_outflow)) then
3797 call s_compute_supersonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, &
3798 & dys_ds)
3799 end if
3800
3801 ! Be careful about the cylindrical coordinate!
3802 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
3803 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1)) + rho*c*c*vel(dir_idx(1))/y_cc(n)
3804 else
3805 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1))
3806 end if
3807
3808
3809# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3810#if defined(MFC_OpenACC)
3811# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3812!$acc loop seq
3813# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3814#elif defined(MFC_OpenMP)
3815# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3816
3817# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3818#endif
3819 do i = 1, eqn_idx%cont%end
3820 dalpha_rho_dt(i) = -(l(i + 1) - mf(i)*dpres_dt)/(c*c)
3821 end do
3822
3823
3824# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3825#if defined(MFC_OpenACC)
3826# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3827!$acc loop seq
3828# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3829#elif defined(MFC_OpenMP)
3830# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3831
3832# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3833#endif
3834 do i = 1, num_dims
3835 dvel_dt(dir_idx(i)) = dir_flg(dir_idx(i))*(l(1) - l(eqn_idx%adv%end))/(2._wp*rho*c) &
3836 & + (dir_flg(dir_idx(i)) - 1._wp)*l(eqn_idx%mom%beg + i - 1)
3837 end do
3838
3839 vel_dv_dt_sum = 0._wp
3840
3841# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3842#if defined(MFC_OpenACC)
3843# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3844!$acc loop seq
3845# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3846#elif defined(MFC_OpenMP)
3847# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3848
3849# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3850#endif
3851 do i = 1, num_dims
3852 vel_dv_dt_sum = vel_dv_dt_sum + vel(i)*dvel_dt(i)
3853 end do
3854
3855 if (chemistry) then
3856
3857# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3858#if defined(MFC_OpenACC)
3859# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3860!$acc loop seq
3861# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3862#elif defined(MFC_OpenMP)
3863# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3864
3865# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3866#endif
3867 do i = 1, num_species
3868 dys_dt(i) = -1._wp*l(eqn_idx%species%beg + i - 1)
3869 end do
3870 end if
3871
3872 ! The treatment of void fraction source is unclear
3873 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
3874
3875# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3876#if defined(MFC_OpenACC)
3877# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3878!$acc loop seq
3879# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3880#elif defined(MFC_OpenMP)
3881# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3882
3883# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3884#endif
3885 do i = 1, eqn_idx%adv%end - eqn_idx%E
3886 dadv_dt(i) = -l(eqn_idx%mom%end + i) ! + adv_local(i) * vel(dir_idx(1))/y_cc(n)
3887 end do
3888 else
3889
3890# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3891#if defined(MFC_OpenACC)
3892# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3893!$acc loop seq
3894# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3895#elif defined(MFC_OpenMP)
3896# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3897
3898# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3899#endif
3900 do i = 1, eqn_idx%adv%end - eqn_idx%E
3901 dadv_dt(i) = -l(eqn_idx%mom%end + i)
3902 end do
3903 end if
3904
3905 drho_dt = 0._wp; dgamma_dt = 0._wp; dpi_inf_dt = 0._wp; dqv_dt = 0._wp
3906
3907 if (model_eqns == model_eqns_gamma_law) then
3908 drho_dt = dalpha_rho_dt(1)
3909 dgamma_dt = dadv_dt(1)
3910# 842 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3911 dpi_inf_dt = dadv_dt(2)
3912# 844 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3913 else
3914 call s_compute_mixture_coefficients_dt(dalpha_rho_dt, dadv_dt, alpha_rho, adv_local, drho_dt, &
3915 & dgamma_dt, dpi_inf_dt, dqv_dt)
3916 end if
3917
3918 ! flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
3919
3920# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3921#if defined(MFC_OpenACC)
3922# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3923!$acc loop seq
3924# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3925#elif defined(MFC_OpenMP)
3926# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3927
3928# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3929#endif
3930 do i = 1, eqn_idx%cont%end
3931 flux_rsy_vf_l(-1, k, r, i) = flux_rsy_vf_l(0, k, r, i) + ds(0)*dalpha_rho_dt(i)
3932 end do
3933
3934
3935# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3936#if defined(MFC_OpenACC)
3937# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3938!$acc loop seq
3939# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3940#elif defined(MFC_OpenMP)
3941# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3942
3943# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3944#endif
3945 do i = eqn_idx%mom%beg, eqn_idx%mom%end
3946 flux_rsy_vf_l(-1, k, r, i) = flux_rsy_vf_l(0, k, r, &
3947 & i) + ds(0)*(vel(i - eqn_idx%cont%end)*drho_dt + rho*dvel_dt(i - eqn_idx%cont%end))
3948 end do
3949
3950 if (chemistry) then
3951 ! Evolution of LODI equation of energy for real gases adjusted to perfect gas,
3952 ! doi:10.1006/jcph.2002.6990
3953 call get_species_enthalpies_rt(t, h_k)
3954 sum_enthalpies = 0._wp
3955
3956# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3957#if defined(MFC_OpenACC)
3958# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3959!$acc loop seq
3960# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3961#elif defined(MFC_OpenMP)
3962# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3963
3964# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3965#endif
3966 do i = 1, num_species
3967 h_k(i) = h_k(i)*gas_constant/molecular_weights(i)*t
3968 sum_enthalpies = sum_enthalpies + (rho*h_k(i) - pres*mw/molecular_weights(i)*cp/r_gas)*dys_dt(i)
3969 end do
3970 flux_rsy_vf_l(-1, k, r, eqn_idx%E) = flux_rsy_vf_l(0, k, r, &
3971 & eqn_idx%E) + ds(0)*((e/rho + pres/rho)*drho_dt + rho*vel_dv_dt_sum + cp*t*l(2) &
3972 & /(c*c) + sum_enthalpies)
3973
3974# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3975#if defined(MFC_OpenACC)
3976# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3977!$acc loop seq
3978# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3979#elif defined(MFC_OpenMP)
3980# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3981
3982# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3983#endif
3984 do i = 1, num_species
3985 flux_rsy_vf_l(-1, k, r, i - 1 + eqn_idx%species%beg) = flux_rsy_vf_l(0, k, r, &
3986 & eqn_idx%species%beg + i - 1) + ds(0)*(drho_dt*ys(i) + rho*dys_dt(i))
3987 end do
3988 else
3989 flux_rsy_vf_l(-1, k, r, eqn_idx%E) = flux_rsy_vf_l(0, k, r, &
3990 & eqn_idx%E) + ds(0)*(pres*dgamma_dt + gamma*dpres_dt + dpi_inf_dt + dqv_dt &
3991 & + rho*vel_dv_dt_sum + 5.e-1_wp*drho_dt*vel_k_sum)
3992 end if
3993
3994 ! Only HLL Method 1 uses per-fluid alpha source traces. HLL Method 2 carries a shared interface velocity and
3995 ! must follow the same CBC representation as HLLC.
3996 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
3997
3998# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
3999#if defined(MFC_OpenACC)
4000# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4001!$acc loop seq
4002# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4003#elif defined(MFC_OpenMP)
4004# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4005
4006# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4007#endif
4008 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4009 flux_rsy_vf_l(-1, k, r, i) = 0._wp
4010 end do
4011
4012
4013# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4014#if defined(MFC_OpenACC)
4015# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4016!$acc loop seq
4017# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4018#elif defined(MFC_OpenMP)
4019# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4020
4021# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4022#endif
4023 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4024 flux_src_rsy_vf_l(-1, k, r, i) = 1._wp/max(abs(vel(dir_idx(1))), sgm_eps)*sign(1._wp, &
4025 & vel(dir_idx(1)))*(flux_rsy_vf_l(0, k, r, &
4026 & i) + vel(dir_idx(1))*flux_src_rsy_vf_l(0, k, r, &
4027 & i) + ds(0)*dadv_dt(i - eqn_idx%E))
4028 end do
4029 else
4030
4031# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4032#if defined(MFC_OpenACC)
4033# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4034!$acc loop seq
4035# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4036#elif defined(MFC_OpenMP)
4037# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4038
4039# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4040#endif
4041 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4042 flux_rsy_vf_l(-1, k, r, i) = flux_rsy_vf_l(0, k, r, i) + ds(0)*dadv_dt(i - eqn_idx%E)
4043 end do
4044
4045
4046# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4047#if defined(MFC_OpenACC)
4048# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4049!$acc loop seq
4050# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4051#elif defined(MFC_OpenMP)
4052# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4053
4054# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4055#endif
4056 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4057 flux_src_rsy_vf_l(-1, k, r, i) = flux_src_rsy_vf_l(0, k, r, i)
4058 end do
4059 end if
4060 ! END: flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
4061 end do
4062 end do
4063
4064# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4065#if defined(MFC_OpenACC)
4066# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4067!$acc end parallel loop
4068# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4069#elif defined(MFC_OpenMP)
4070# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4071
4072# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4073!$omp end target teams loop
4074# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4075#endif
4076 end if
4077# 529 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4078 if (cbc_dir == 3 .and. recon_type == recon_type_weno) then
4079 ! PI2 of flux_rs_vf and flux_src_rs_vf at j = 1/2
4080 if (weno_order == 3) then
4081 call s_convert_primitive_to_flux_variables(q_prim_rsz_vf, f_rsz_vf, f_src_rsz_vf, is1, is2, &
4082 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
4083
4084
4085# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4086
4087# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4088#if defined(MFC_OpenACC)
4089# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4090!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
4091# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4092#elif defined(MFC_OpenMP)
4093# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4094
4095# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4096
4097# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4098
4099# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4100!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
4101# 535 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4102#endif
4103 do i = 1, flux_cbc_index
4104 do r = is3%beg, is3%end
4105 do k = is2%beg, is2%end
4106 flux_rsz_vf_l(0, k, r, i) = f_rsz_vf(0, k, r, i) + pi_coef_z(0, 0, &
4107 & cbc_loc)*(f_rsz_vf(1, k, r, i) - f_rsz_vf(0, k, r, i))
4108 end do
4109 end do
4110 end do
4111
4112# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4113#if defined(MFC_OpenACC)
4114# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4115!$acc end parallel loop
4116# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4117#elif defined(MFC_OpenMP)
4118# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4119
4120# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4121!$omp end target teams loop
4122# 544 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4123#endif
4124
4125
4126# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4127
4128# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4129#if defined(MFC_OpenACC)
4130# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4131!$acc parallel loop collapse(3) gang vector default(present) private(i, r, k)
4132# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4133#elif defined(MFC_OpenMP)
4134# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4135
4136# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4137
4138# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4139
4140# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4141!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, r, k)
4142# 546 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4143#endif
4144 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4145 do r = is3%beg, is3%end
4146 do k = is2%beg, is2%end
4147 flux_src_rsz_vf_l(0, k, r, i) = f_src_rsz_vf(0, k, r, i) + (f_src_rsz_vf(1, k, &
4148 & r, i) - f_src_rsz_vf(0, k, r, i))*pi_coef_z(0, 0, cbc_loc)
4149 end do
4150 end do
4151 end do
4152
4153# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4154#if defined(MFC_OpenACC)
4155# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4156!$acc end parallel loop
4157# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4158#elif defined(MFC_OpenMP)
4159# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4160
4161# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4162!$omp end target teams loop
4163# 555 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4164#endif
4165 end if
4166
4167 ! PI4 of flux_rs_vf and flux_src_rs_vf at j = 1/2, 3/2
4168 if (weno_order == 5) then
4169 call s_convert_primitive_to_flux_variables(q_prim_rsz_vf, f_rsz_vf, f_src_rsz_vf, is1, is2, &
4170 & is3, idwbuff(2)%beg, idwbuff(3)%beg, dir_idx, dir_flg, hll_u_interface)
4171
4172
4173# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4174
4175# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4176#if defined(MFC_OpenACC)
4177# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4178!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
4179# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4180#elif defined(MFC_OpenMP)
4181# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4182
4183# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4184
4185# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4186
4187# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4188!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
4189# 563 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4190#endif
4191 do i = 1, flux_cbc_index
4192 do j = 0, 1
4193 do r = is3%beg, is3%end
4194 do k = is2%beg, is2%end
4195 flux_rsz_vf_l(j, k, r, i) = f_rsz_vf(j, k, r, i) + pi_coef_z(j, 0, &
4196 & cbc_loc)*(f_rsz_vf(3, k, r, i) - f_rsz_vf(2, k, r, &
4197 & i)) + pi_coef_z(j, 1, cbc_loc)*(f_rsz_vf(2, k, r, &
4198 & i) - f_rsz_vf(1, k, r, i)) + pi_coef_z(j, 2, &
4199 & cbc_loc)*(f_rsz_vf(1, k, r, i) - f_rsz_vf(0, k, r, i))
4200 end do
4201 end do
4202 end do
4203 end do
4204
4205# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4206#if defined(MFC_OpenACC)
4207# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4208!$acc end parallel loop
4209# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4210#elif defined(MFC_OpenMP)
4211# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4212
4213# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4214!$omp end target teams loop
4215# 577 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4216#endif
4217
4218
4219# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4220
4221# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4222#if defined(MFC_OpenACC)
4223# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4224!$acc parallel loop collapse(4) gang vector default(present) private(i, j, r, k)
4225# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4226#elif defined(MFC_OpenMP)
4227# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4228
4229# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4230
4231# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4232
4233# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4234!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, r, k)
4235# 579 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4236#endif
4237 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4238 do j = 0, 1
4239 do r = is3%beg, is3%end
4240 do k = is2%beg, is2%end
4241 flux_src_rsz_vf_l(j, k, r, i) = f_src_rsz_vf(j, k, r, i) + (f_src_rsz_vf(3, &
4242 & k, r, i) - f_src_rsz_vf(2, k, r, i))*pi_coef_z(j, 0, &
4243 & cbc_loc) + (f_src_rsz_vf(2, k, r, i) - f_src_rsz_vf(1, &
4244 & k, r, i))*pi_coef_z(j, 1, cbc_loc) + (f_src_rsz_vf(1, &
4245 & k, r, i) - f_src_rsz_vf(0, k, r, i))*pi_coef_z(j, 2, &
4246 & cbc_loc)
4247 end do
4248 end do
4249 end do
4250 end do
4251
4252# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4253#if defined(MFC_OpenACC)
4254# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4255!$acc end parallel loop
4256# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4257#elif defined(MFC_OpenMP)
4258# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4259
4260# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4261!$omp end target teams loop
4262# 594 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4263#endif
4264 end if
4265
4266 ! FD2 or FD4 of RHS at j = 0
4267
4268# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4269
4270# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4271#if defined(MFC_OpenACC)
4272# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4273!$acc parallel loop collapse(2) gang vector default(present) private(r, k, alpha_rho, vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, &
4274# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4275!$acc& Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, &
4276# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4277!$acc& vel_dv_dt_sum, i, j, ramp) copyin(dir_idx)
4278# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4279#elif defined(MFC_OpenMP)
4280# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4281
4282# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4283
4284# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4285
4286# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4287!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(r, k, alpha_rho, &
4288# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4289!$omp& vel, adv_local, mf, dvel_ds, dadv_ds, Re_cbc, dalpha_rho_ds, dpres_ds, dvel_dt, dadv_dt, dalpha_rho_dt, L, lambda, Ys, dYs_dt, dYs_ds, h_k, Cp_i, Gamma_i, Xs, drho_dt, dpres_dt, dpi_inf_dt, &
4290# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4291!$omp& dqv_dt, dgamma_dt, rho, pres, E, gamma, pi_inf, qv, c, Ma, T, sum_Enthalpies, Cv, Cp, e_mix, Mw, R_gas, vel_K_sum, vel_dv_dt_sum, i, j, ramp) map(to:dir_idx)
4292# 598 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4293#endif
4294# 603 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4295 do r = is3%beg, is3%end
4296 do k = is2%beg, is2%end
4297 ! Ramp factor for a smoothly starting inflow, evaluated here from mytime rather than
4298 ! computed on the host and copied every Runge-Kutta stage. Unity unless a ramp is set.
4299 ramp = f_vel_ramp(bc_z%vel_in_ramp, bc_z%vel_in_t0, bc_z%vel_in_frac0, mytime)
4300
4301 ! Transferring the Primitive Variables
4302
4303# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4304#if defined(MFC_OpenACC)
4305# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4306!$acc loop seq
4307# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4308#elif defined(MFC_OpenMP)
4309# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4310
4311# 610 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4312#endif
4313 do i = 1, eqn_idx%cont%end
4314 alpha_rho(i) = q_prim_rsz_vf(0, k, r, i)
4315 end do
4316
4317
4318# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4319#if defined(MFC_OpenACC)
4320# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4321!$acc loop seq
4322# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4323#elif defined(MFC_OpenMP)
4324# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4325
4326# 615 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4327#endif
4328 do i = 1, num_dims
4329 vel(i) = q_prim_rsz_vf(0, k, r, eqn_idx%cont%end + i)
4330 end do
4331
4332 vel_k_sum = 0._wp
4333
4334# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4335#if defined(MFC_OpenACC)
4336# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4337!$acc loop seq
4338# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4339#elif defined(MFC_OpenMP)
4340# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4341
4342# 621 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4343#endif
4344 do i = 1, num_dims
4345 vel_k_sum = vel_k_sum + vel(i)**2._wp
4346 end do
4347
4348 pres = q_prim_rsz_vf(0, k, r, eqn_idx%E)
4349
4350
4351# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4352#if defined(MFC_OpenACC)
4353# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4354!$acc loop seq
4355# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4356#elif defined(MFC_OpenMP)
4357# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4358
4359# 628 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4360#endif
4361 do i = 1, eqn_idx%adv%end - eqn_idx%E
4362 adv_local(i) = q_prim_rsz_vf(0, k, r, eqn_idx%E + i)
4363 end do
4364
4365 call s_convert_species_to_mixture_variables_kernel(rho, gamma, pi_inf, qv, adv_local, alpha_rho, re_cbc)
4366
4367
4368# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4369#if defined(MFC_OpenACC)
4370# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4371!$acc loop seq
4372# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4373#elif defined(MFC_OpenMP)
4374# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4375
4376# 635 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4377#endif
4378 do i = 1, eqn_idx%cont%end
4379 mf(i) = alpha_rho(i)/rho
4380 end do
4381
4382 if (chemistry) then
4383
4384# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4385#if defined(MFC_OpenACC)
4386# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4387!$acc loop seq
4388# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4389#elif defined(MFC_OpenMP)
4390# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4391
4392# 641 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4393#endif
4394 do i = eqn_idx%species%beg, eqn_idx%species%end
4395 ys(i - eqn_idx%species%beg + 1) = q_prim_rsz_vf(0, k, r, i)
4396 end do
4397
4398 call get_mixture_molecular_weight(ys, mw)
4399 r_gas = gas_constant/mw
4400 t = pres/rho/r_gas
4401 call get_mixture_specific_heat_cp_mass(t, ys, cp)
4402 call get_mixture_energy_mass(t, ys, e_mix)
4403 e = rho*e_mix + 5.e-1_wp*rho*vel_k_sum
4404 if (chem_params%gamma_method == 1) then
4405 !> gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.
4406 call get_mole_fractions(mw, ys, xs)
4407 call get_species_specific_heats_r(t, cp_i)
4408 gamma_i(1:num_species) = cp_i(1:num_species)/(cp_i(1:num_species) - 1.0_wp)
4409 gamma = sum(xs(1:num_species)/(gamma_i(1:num_species) - 1.0_wp))
4410 else if (chem_params%gamma_method == 2) then
4411 !> gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.
4412 call get_mixture_specific_heat_cv_mass(t, ys, cv)
4413 gamma = 1.0_wp/(cp/cv - 1.0_wp)
4414 end if
4415 end if
4416
4417 ! Compute mixture sound speed
4418 call s_compute_speed_of_sound(pres, rho, gamma, pi_inf, adv_local, c, alpha_rho)
4419
4420 ! First-Order Spatial Derivatives of Primitive Variables
4421
4422
4423# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4424#if defined(MFC_OpenACC)
4425# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4426!$acc loop seq
4427# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4428#elif defined(MFC_OpenMP)
4429# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4430
4431# 670 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4432#endif
4433 do i = 1, eqn_idx%cont%end
4434 dalpha_rho_ds(i) = 0._wp
4435 end do
4436
4437
4438# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4439#if defined(MFC_OpenACC)
4440# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4441!$acc loop seq
4442# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4443#elif defined(MFC_OpenMP)
4444# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4445
4446# 675 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4447#endif
4448 do i = 1, num_dims
4449 dvel_ds(i) = 0._wp
4450 end do
4451
4452 dpres_ds = 0._wp
4453
4454# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4455#if defined(MFC_OpenACC)
4456# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4457!$acc loop seq
4458# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4459#elif defined(MFC_OpenMP)
4460# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4461
4462# 681 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4463#endif
4464 do i = 1, eqn_idx%adv%end - eqn_idx%E
4465 dadv_ds(i) = 0._wp
4466 end do
4467
4468 if (chemistry) then
4469
4470# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4471#if defined(MFC_OpenACC)
4472# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4473!$acc loop seq
4474# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4475#elif defined(MFC_OpenMP)
4476# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4477
4478# 687 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4479#endif
4480 do i = 1, num_species
4481 dys_ds(i) = 0._wp
4482 end do
4483 end if
4484
4485
4486# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4487#if defined(MFC_OpenACC)
4488# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4489!$acc loop seq
4490# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4491#elif defined(MFC_OpenMP)
4492# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4493
4494# 693 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4495#endif
4496 do j = 0, buff_size
4497
4498# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4499#if defined(MFC_OpenACC)
4500# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4501!$acc loop seq
4502# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4503#elif defined(MFC_OpenMP)
4504# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4505
4506# 695 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4507#endif
4508 do i = 1, eqn_idx%cont%end
4509 dalpha_rho_ds(i) = q_prim_rsz_vf(j, k, r, i)*fd_coef_z(j, cbc_loc) + dalpha_rho_ds(i)
4510 end do
4511
4512# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4513#if defined(MFC_OpenACC)
4514# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4515!$acc loop seq
4516# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4517#elif defined(MFC_OpenMP)
4518# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4519
4520# 699 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4521#endif
4522 do i = 1, num_dims
4523 dvel_ds(i) = q_prim_rsz_vf(j, k, r, eqn_idx%cont%end + i)*fd_coef_z(j, &
4524 & cbc_loc) + dvel_ds(i)
4525 end do
4526
4527 dpres_ds = q_prim_rsz_vf(j, k, r, eqn_idx%E)*fd_coef_z(j, cbc_loc) + dpres_ds
4528
4529# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4530#if defined(MFC_OpenACC)
4531# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4532!$acc loop seq
4533# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4534#elif defined(MFC_OpenMP)
4535# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4536
4537# 706 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4538#endif
4539 do i = 1, eqn_idx%adv%end - eqn_idx%E
4540 dadv_ds(i) = q_prim_rsz_vf(j, k, r, eqn_idx%E + i)*fd_coef_z(j, cbc_loc) + dadv_ds(i)
4541 end do
4542
4543 if (chemistry) then
4544
4545# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4546#if defined(MFC_OpenACC)
4547# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4548!$acc loop seq
4549# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4550#elif defined(MFC_OpenMP)
4551# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4552
4553# 712 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4554#endif
4555 do i = 1, num_species
4556 dys_ds(i) = q_prim_rsz_vf(j, k, r, eqn_idx%species%beg - 1 + i)*fd_coef_z(j, &
4557 & cbc_loc) + dys_ds(i)
4558 end do
4559 end if
4560 end do
4561
4562 ! First-Order Temporal Derivatives of Primitive Variables
4563 lambda(1) = vel(dir_idx(1)) - c
4564 lambda(2) = vel(dir_idx(1))
4565 lambda(3) = vel(dir_idx(1)) + c
4566
4567 ma = vel(dir_idx(1))/c
4568
4569 if ((cbc_loc == -1 .and. bc_z%beg == bc_char_slip_wall) .or. (cbc_loc == 1 &
4570 & .and. bc_z%end == bc_char_slip_wall)) then
4571 call s_compute_slip_wall_l(lambda, l, rho, c, dpres_ds, dvel_ds)
4572 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_nr_sub_buffer) .or. (cbc_loc == 1 &
4573 & .and. bc_z%end == bc_char_nr_sub_buffer)) then
4574 call s_compute_nonreflecting_subsonic_buffer_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
4575 & dvel_ds, dadv_ds, dys_ds)
4576 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_nr_sub_inflow) .or. (cbc_loc == 1 &
4577 & .and. bc_z%end == bc_char_nr_sub_inflow)) then
4578 call s_compute_nonreflecting_subsonic_inflow_l(lambda, l, rho, c, dpres_ds, dvel_ds)
4579 ! Add GRCBC for Subsonic Inflow
4580 if (bc_z%grcbc_in) then
4581
4582# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4583#if defined(MFC_OpenACC)
4584# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4585!$acc loop seq
4586# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4587#elif defined(MFC_OpenMP)
4588# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4589
4590# 739 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4591#endif
4592 do i = 2, eqn_idx%mom%beg
4593 l(i) = c**3._wp*ma*(alpha_rho(i - 1) - alpha_rho_in(i - 1, &
4594 & 3))/del_in(3) - c*ma*(pres - pres_in(3))/del_in(3)
4595 end do
4596 if (n > 0) then
4597 l(eqn_idx%mom%beg + 1) = c*ma*(vel(dir_idx(2)) - ramp*vel_in(3, &
4598 & dir_idx(2)))/del_in(3)
4599 if (p > 0) then
4600 l(eqn_idx%mom%beg + 2) = c*ma*(vel(dir_idx(3)) - ramp*vel_in(3, &
4601 & dir_idx(3)))/del_in(3)
4602 end if
4603 end if
4604
4605# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4606#if defined(MFC_OpenACC)
4607# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4608!$acc loop seq
4609# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4610#elif defined(MFC_OpenMP)
4611# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4612
4613# 752 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4614#endif
4615 do i = eqn_idx%E, eqn_idx%adv%end - 1
4616 l(i) = c*ma*(adv_local(i + 1 - eqn_idx%E) - alpha_in(i + 1 - eqn_idx%E, &
4617 & 3))/del_in(3)
4618 end do
4619 l(eqn_idx%adv%end) = rho*c**2._wp*(1._wp + ma)*(vel(dir_idx(1)) + ramp*vel_in(3, &
4620 & dir_idx(1))*sign(1, &
4621 & cbc_loc))/del_in(3) + c*(1._wp + ma)*(pres - pres_in(3))/del_in(3)
4622 end if
4623 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_nr_sub_outflow) .or. (cbc_loc == 1 &
4624 & .and. bc_z%end == bc_char_nr_sub_outflow)) then
4625 call s_compute_nonreflecting_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
4626 & dvel_ds, dadv_ds, dys_ds)
4627 ! Add GRCBC for Subsonic Outflow (Pressure)
4628 if (bc_z%grcbc_out) then
4629 l(eqn_idx%adv%end) = c*(1._wp - ma)*(pres - pres_out(3))/del_out(3)
4630
4631 ! Add GRCBC for Subsonic Outflow (Normal Velocity)
4632 if (bc_z%grcbc_vel_out) then
4633 l(eqn_idx%adv%end) = l(eqn_idx%adv%end) + rho*c**2._wp*(1._wp - ma)*(vel(dir_idx(1)) &
4634 & + vel_out(3, dir_idx(1))*sign(1, cbc_loc))/del_out(3)
4635 end if
4636 end if
4637 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_ff_sub_outflow) .or. (cbc_loc == 1 &
4638 & .and. bc_z%end == bc_char_ff_sub_outflow)) then
4639 call s_compute_force_free_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, &
4640 & dadv_ds)
4641 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_cp_sub_outflow) .or. (cbc_loc == 1 &
4642 & .and. bc_z%end == bc_char_cp_sub_outflow)) then
4643 call s_compute_constant_pressure_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, &
4644 & dvel_ds, dadv_ds)
4645 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_sup_inflow) .or. (cbc_loc == 1 &
4646 & .and. bc_z%end == bc_char_sup_inflow)) then
4647 call s_compute_supersonic_inflow_l(l)
4648 else if ((cbc_loc == -1 .and. bc_z%beg == bc_char_sup_outflow) .or. (cbc_loc == 1 &
4649 & .and. bc_z%end == bc_char_sup_outflow)) then
4650 call s_compute_supersonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, &
4651 & dys_ds)
4652 end if
4653
4654 ! Be careful about the cylindrical coordinate!
4655 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
4656 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1)) + rho*c*c*vel(dir_idx(1))/y_cc(n)
4657 else
4658 dpres_dt = -5.e-1_wp*(l(eqn_idx%adv%end) + l(1))
4659 end if
4660
4661
4662# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4663#if defined(MFC_OpenACC)
4664# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4665!$acc loop seq
4666# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4667#elif defined(MFC_OpenMP)
4668# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4669
4670# 799 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4671#endif
4672 do i = 1, eqn_idx%cont%end
4673 dalpha_rho_dt(i) = -(l(i + 1) - mf(i)*dpres_dt)/(c*c)
4674 end do
4675
4676
4677# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4678#if defined(MFC_OpenACC)
4679# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4680!$acc loop seq
4681# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4682#elif defined(MFC_OpenMP)
4683# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4684
4685# 804 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4686#endif
4687 do i = 1, num_dims
4688 dvel_dt(dir_idx(i)) = dir_flg(dir_idx(i))*(l(1) - l(eqn_idx%adv%end))/(2._wp*rho*c) &
4689 & + (dir_flg(dir_idx(i)) - 1._wp)*l(eqn_idx%mom%beg + i - 1)
4690 end do
4691
4692 vel_dv_dt_sum = 0._wp
4693
4694# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4695#if defined(MFC_OpenACC)
4696# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4697!$acc loop seq
4698# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4699#elif defined(MFC_OpenMP)
4700# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4701
4702# 811 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4703#endif
4704 do i = 1, num_dims
4705 vel_dv_dt_sum = vel_dv_dt_sum + vel(i)*dvel_dt(i)
4706 end do
4707
4708 if (chemistry) then
4709
4710# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4711#if defined(MFC_OpenACC)
4712# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4713!$acc loop seq
4714# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4715#elif defined(MFC_OpenMP)
4716# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4717
4718# 817 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4719#endif
4720 do i = 1, num_species
4721 dys_dt(i) = -1._wp*l(eqn_idx%species%beg + i - 1)
4722 end do
4723 end if
4724
4725 ! The treatment of void fraction source is unclear
4726 if (cyl_coord .and. cbc_dir == 2 .and. cbc_loc == 1) then
4727
4728# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4729#if defined(MFC_OpenACC)
4730# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4731!$acc loop seq
4732# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4733#elif defined(MFC_OpenMP)
4734# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4735
4736# 825 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4737#endif
4738 do i = 1, eqn_idx%adv%end - eqn_idx%E
4739 dadv_dt(i) = -l(eqn_idx%mom%end + i) ! + adv_local(i) * vel(dir_idx(1))/y_cc(n)
4740 end do
4741 else
4742
4743# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4744#if defined(MFC_OpenACC)
4745# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4746!$acc loop seq
4747# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4748#elif defined(MFC_OpenMP)
4749# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4750
4751# 830 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4752#endif
4753 do i = 1, eqn_idx%adv%end - eqn_idx%E
4754 dadv_dt(i) = -l(eqn_idx%mom%end + i)
4755 end do
4756 end if
4757
4758 drho_dt = 0._wp; dgamma_dt = 0._wp; dpi_inf_dt = 0._wp; dqv_dt = 0._wp
4759
4760 if (model_eqns == model_eqns_gamma_law) then
4761 drho_dt = dalpha_rho_dt(1)
4762 dgamma_dt = dadv_dt(1)
4763# 842 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4764 dpi_inf_dt = dadv_dt(2)
4765# 844 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4766 else
4767 call s_compute_mixture_coefficients_dt(dalpha_rho_dt, dadv_dt, alpha_rho, adv_local, drho_dt, &
4768 & dgamma_dt, dpi_inf_dt, dqv_dt)
4769 end if
4770
4771 ! flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
4772
4773# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4774#if defined(MFC_OpenACC)
4775# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4776!$acc loop seq
4777# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4778#elif defined(MFC_OpenMP)
4779# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4780
4781# 850 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4782#endif
4783 do i = 1, eqn_idx%cont%end
4784 flux_rsz_vf_l(-1, k, r, i) = flux_rsz_vf_l(0, k, r, i) + ds(0)*dalpha_rho_dt(i)
4785 end do
4786
4787
4788# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4789#if defined(MFC_OpenACC)
4790# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4791!$acc loop seq
4792# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4793#elif defined(MFC_OpenMP)
4794# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4795
4796# 855 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4797#endif
4798 do i = eqn_idx%mom%beg, eqn_idx%mom%end
4799 flux_rsz_vf_l(-1, k, r, i) = flux_rsz_vf_l(0, k, r, &
4800 & i) + ds(0)*(vel(i - eqn_idx%cont%end)*drho_dt + rho*dvel_dt(i - eqn_idx%cont%end))
4801 end do
4802
4803 if (chemistry) then
4804 ! Evolution of LODI equation of energy for real gases adjusted to perfect gas,
4805 ! doi:10.1006/jcph.2002.6990
4806 call get_species_enthalpies_rt(t, h_k)
4807 sum_enthalpies = 0._wp
4808
4809# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4810#if defined(MFC_OpenACC)
4811# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4812!$acc loop seq
4813# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4814#elif defined(MFC_OpenMP)
4815# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4816
4817# 866 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4818#endif
4819 do i = 1, num_species
4820 h_k(i) = h_k(i)*gas_constant/molecular_weights(i)*t
4821 sum_enthalpies = sum_enthalpies + (rho*h_k(i) - pres*mw/molecular_weights(i)*cp/r_gas)*dys_dt(i)
4822 end do
4823 flux_rsz_vf_l(-1, k, r, eqn_idx%E) = flux_rsz_vf_l(0, k, r, &
4824 & eqn_idx%E) + ds(0)*((e/rho + pres/rho)*drho_dt + rho*vel_dv_dt_sum + cp*t*l(2) &
4825 & /(c*c) + sum_enthalpies)
4826
4827# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4828#if defined(MFC_OpenACC)
4829# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4830!$acc loop seq
4831# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4832#elif defined(MFC_OpenMP)
4833# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4834
4835# 874 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4836#endif
4837 do i = 1, num_species
4838 flux_rsz_vf_l(-1, k, r, i - 1 + eqn_idx%species%beg) = flux_rsz_vf_l(0, k, r, &
4839 & eqn_idx%species%beg + i - 1) + ds(0)*(drho_dt*ys(i) + rho*dys_dt(i))
4840 end do
4841 else
4842 flux_rsz_vf_l(-1, k, r, eqn_idx%E) = flux_rsz_vf_l(0, k, r, &
4843 & eqn_idx%E) + ds(0)*(pres*dgamma_dt + gamma*dpres_dt + dpi_inf_dt + dqv_dt &
4844 & + rho*vel_dv_dt_sum + 5.e-1_wp*drho_dt*vel_k_sum)
4845 end if
4846
4847 ! Only HLL Method 1 uses per-fluid alpha source traces. HLL Method 2 carries a shared interface velocity and
4848 ! must follow the same CBC representation as HLLC.
4849 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
4850
4851# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4852#if defined(MFC_OpenACC)
4853# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4854!$acc loop seq
4855# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4856#elif defined(MFC_OpenMP)
4857# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4858
4859# 888 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4860#endif
4861 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4862 flux_rsz_vf_l(-1, k, r, i) = 0._wp
4863 end do
4864
4865
4866# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4867#if defined(MFC_OpenACC)
4868# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4869!$acc loop seq
4870# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4871#elif defined(MFC_OpenMP)
4872# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4873
4874# 893 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4875#endif
4876 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4877 flux_src_rsz_vf_l(-1, k, r, i) = 1._wp/max(abs(vel(dir_idx(1))), sgm_eps)*sign(1._wp, &
4878 & vel(dir_idx(1)))*(flux_rsz_vf_l(0, k, r, &
4879 & i) + vel(dir_idx(1))*flux_src_rsz_vf_l(0, k, r, &
4880 & i) + ds(0)*dadv_dt(i - eqn_idx%E))
4881 end do
4882 else
4883
4884# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4885#if defined(MFC_OpenACC)
4886# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4887!$acc loop seq
4888# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4889#elif defined(MFC_OpenMP)
4890# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4891
4892# 901 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4893#endif
4894 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4895 flux_rsz_vf_l(-1, k, r, i) = flux_rsz_vf_l(0, k, r, i) + ds(0)*dadv_dt(i - eqn_idx%E)
4896 end do
4897
4898
4899# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4900#if defined(MFC_OpenACC)
4901# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4902!$acc loop seq
4903# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4904#elif defined(MFC_OpenMP)
4905# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4906
4907# 906 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4908#endif
4909 do i = eqn_idx%adv%beg, eqn_idx%adv%end
4910 flux_src_rsz_vf_l(-1, k, r, i) = flux_src_rsz_vf_l(0, k, r, i)
4911 end do
4912 end if
4913 ! END: flux_rs_vf_l and flux_src_rs_vf_l at j = -1/2
4914 end do
4915 end do
4916
4917# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4918#if defined(MFC_OpenACC)
4919# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4920!$acc end parallel loop
4921# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4922#elif defined(MFC_OpenMP)
4923# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4924
4925# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4926!$omp end target teams loop
4927# 914 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4928#endif
4929 end if
4930# 917 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4931
4932 ! END: FD2 or FD4 of RHS at j = 0
4933
4934 ! The reshaping of outputted data and disssociation of the FD and PI coefficients, or CBC coefficients, respectively, based
4935 ! on selected CBC coordinate direction.
4936 call s_finalize_cbc(flux_vf, flux_src_vf)
4937
4938 end subroutine s_cbc
4939
4940 !> Set up the selected CBC for the current boundary
4941 subroutine s_initialize_cbc(q_prim_vf, flux_vf, flux_src_vf, ix, iy, iz)
4942
4943 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
4944 type(scalar_field), dimension(sys_size), intent(in) :: flux_vf, flux_src_vf
4945 type(int_bounds_info), intent(in) :: ix, iy, iz
4946 integer :: i, j, k, r !< Generic loop iterators
4947 ! Configuring the coordinate direction indexes and flags
4948
4949 ! Determining the indicial shift based on CBC location
4950
4951 ! END: Allocation/Association of Primitive and Flux Variables
4952
4953 if (cbc_dir == 1) then
4954 is1%beg = 0; is1%end = buff_size; is2 = iy; is3 = iz
4955 dir_idx = (/1, 2, 3/); dir_flg = (/1._wp, 0._wp, 0._wp/)
4956 else if (cbc_dir == 2) then
4957 is1%beg = 0; is1%end = buff_size; is2 = ix; is3 = iz
4958 dir_idx = (/2, 1, 3/); dir_flg = (/0._wp, 1._wp, 0._wp/)
4959 else
4960 is1%beg = 0; is1%end = buff_size; is2 = iy; is3 = ix
4961 dir_idx = (/3, 1, 2/); dir_flg = (/0._wp, 0._wp, 1._wp/)
4962 end if
4963
4964 dj = max(0, cbc_loc)
4965
4966# 951 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4967#if defined(MFC_OpenACC)
4968# 951 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4969!$acc update device(is1, is2, is3, dj)
4970# 951 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4971#elif defined(MFC_OpenMP)
4972# 951 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4973!$omp target update to(is1, is2, is3, dj)
4974# 951 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4975#endif
4976
4977# 952 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4978#if defined(MFC_OpenACC)
4979# 952 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4980!$acc update device(dir_idx, dir_flg)
4981# 952 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4982#elif defined(MFC_OpenMP)
4983# 952 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4984!$omp target update to(dir_idx, dir_flg)
4985# 952 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4986#endif
4987
4988 ! Reshaping Inputted Data in x-direction
4989 if (cbc_dir == 1) then
4990
4991# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4992
4993# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4994#if defined(MFC_OpenACC)
4995# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4996!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
4997# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
4998#elif defined(MFC_OpenMP)
4999# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5000
5001# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5002
5003# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5004
5005# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5006!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5007# 956 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5008#endif
5009 do i = 1, sys_size
5010 do r = is3%beg, is3%end
5011 do k = is2%beg, is2%end
5012 do j = 0, buff_size
5013 q_prim_rsx_vf(j, k, r, i) = q_prim_vf(i)%sf(dj*(m - 2*j) + j, k, r)
5014 end do
5015 end do
5016 end do
5017 end do
5018
5019# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5020#if defined(MFC_OpenACC)
5021# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5022!$acc end parallel loop
5023# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5024#elif defined(MFC_OpenMP)
5025# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5026
5027# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5028!$omp end target teams loop
5029# 966 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5030#endif
5031
5032
5033# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5034
5035# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5036#if defined(MFC_OpenACC)
5037# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5038!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5039# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5040#elif defined(MFC_OpenMP)
5041# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5042
5043# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5044
5045# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5046
5047# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5048!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5049# 968 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5050#endif
5051 do r = is3%beg, is3%end
5052 do k = is2%beg, is2%end
5053 do j = 0, buff_size
5054 q_prim_rsx_vf(j, k, r, eqn_idx%mom%beg) = q_prim_vf(eqn_idx%mom%beg)%sf(dj*(m - 2*j) + j, k, &
5055 & r)*sign(1._wp, -1._wp*cbc_loc)
5056 end do
5057 end do
5058 end do
5059
5060# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5061#if defined(MFC_OpenACC)
5062# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5063!$acc end parallel loop
5064# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5065#elif defined(MFC_OpenMP)
5066# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5067
5068# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5069!$omp end target teams loop
5070# 977 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5071#endif
5072
5073
5074# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5075
5076# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5077#if defined(MFC_OpenACC)
5078# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5079!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5080# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5081#elif defined(MFC_OpenMP)
5082# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5083
5084# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5085
5086# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5087
5088# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5089!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5090# 979 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5091#endif
5092 do i = 1, flux_cbc_index
5093 do r = is3%beg, is3%end
5094 do k = is2%beg, is2%end
5095 do j = -1, buff_size
5096 flux_rsx_vf_l(j, k, r, i) = flux_vf(i)%sf(dj*((m - 1) - 2*j) + j, k, r)*sign(1._wp, -1._wp*cbc_loc)
5097 end do
5098 end do
5099 end do
5100 end do
5101
5102# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5103#if defined(MFC_OpenACC)
5104# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5105!$acc end parallel loop
5106# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5107#elif defined(MFC_OpenMP)
5108# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5109
5110# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5111!$omp end target teams loop
5112# 989 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5113#endif
5114
5115
5116# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5117
5118# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5119#if defined(MFC_OpenACC)
5120# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5121!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5122# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5123#elif defined(MFC_OpenMP)
5124# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5125
5126# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5127
5128# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5129
5130# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5131!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5132# 991 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5133#endif
5134 do r = is3%beg, is3%end
5135 do k = is2%beg, is2%end
5136 do j = -1, buff_size
5137 flux_rsx_vf_l(j, k, r, eqn_idx%mom%beg) = flux_vf(eqn_idx%mom%beg)%sf(dj*((m - 1) - 2*j) + j, k, r)
5138 end do
5139 end do
5140 end do
5141
5142# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5143#if defined(MFC_OpenACC)
5144# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5145!$acc end parallel loop
5146# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5147#elif defined(MFC_OpenMP)
5148# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5149
5150# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5151!$omp end target teams loop
5152# 999 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5153#endif
5154
5155 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
5156
5157# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5158
5159# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5160#if defined(MFC_OpenACC)
5161# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5162!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5163# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5164#elif defined(MFC_OpenMP)
5165# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5166
5167# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5168
5169# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5170
5171# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5172!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5173# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5174#endif
5175 do i = eqn_idx%adv%beg, eqn_idx%adv%end
5176 do r = is3%beg, is3%end
5177 do k = is2%beg, is2%end
5178 do j = -1, buff_size
5179 flux_src_rsx_vf_l(j, k, r, i) = flux_src_vf(i)%sf(dj*((m - 1) - 2*j) + j, k, r)
5180 end do
5181 end do
5182 end do
5183 end do
5184
5185# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5186#if defined(MFC_OpenACC)
5187# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5188!$acc end parallel loop
5189# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5190#elif defined(MFC_OpenMP)
5191# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5192
5193# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5194!$omp end target teams loop
5195# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5196#endif
5197 else
5198
5199# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5200
5201# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5202#if defined(MFC_OpenACC)
5203# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5204!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5205# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5206#elif defined(MFC_OpenMP)
5207# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5208
5209# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5210
5211# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5212
5213# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5214!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5215# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5216#endif
5217 do r = is3%beg, is3%end
5218 do k = is2%beg, is2%end
5219 do j = -1, buff_size
5220 flux_src_rsx_vf_l(j, k, r, eqn_idx%adv%beg) = flux_src_vf(eqn_idx%adv%beg)%sf(dj*((m - 1) - 2*j) + j, &
5221 & k, r)*sign(1._wp, -1._wp*cbc_loc)
5222 end do
5223 end do
5224 end do
5225
5226# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5227#if defined(MFC_OpenACC)
5228# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5229!$acc end parallel loop
5230# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5231#elif defined(MFC_OpenMP)
5232# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5233
5234# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5235!$omp end target teams loop
5236# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5237#endif
5238 end if
5239
5240 ! END: Reshaping Inputted Data in x-direction
5241
5242 ! Reshaping Inputted Data in y-direction
5243 else if (cbc_dir == 2) then
5244
5245# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5246
5247# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5248#if defined(MFC_OpenACC)
5249# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5250!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5251# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5252#elif defined(MFC_OpenMP)
5253# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5254
5255# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5256
5257# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5258
5259# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5260!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5261# 1030 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5262#endif
5263 do i = 1, sys_size
5264 do r = is3%beg, is3%end
5265 do k = is2%beg, is2%end
5266 do j = 0, buff_size
5267 q_prim_rsy_vf(j, k, r, i) = q_prim_vf(i)%sf(k, dj*(n - 2*j) + j, r)
5268 end do
5269 end do
5270 end do
5271 end do
5272
5273# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5274#if defined(MFC_OpenACC)
5275# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5276!$acc end parallel loop
5277# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5278#elif defined(MFC_OpenMP)
5279# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5280
5281# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5282!$omp end target teams loop
5283# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5284#endif
5285
5286
5287# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5288
5289# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5290#if defined(MFC_OpenACC)
5291# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5292!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5293# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5294#elif defined(MFC_OpenMP)
5295# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5296
5297# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5298
5299# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5300
5301# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5302!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5303# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5304#endif
5305 do r = is3%beg, is3%end
5306 do k = is2%beg, is2%end
5307 do j = 0, buff_size
5308 q_prim_rsy_vf(j, k, r, eqn_idx%mom%beg + 1) = q_prim_vf(eqn_idx%mom%beg + 1)%sf(k, dj*(n - 2*j) + j, &
5309 & r)*sign(1._wp, -1._wp*cbc_loc)
5310 end do
5311 end do
5312 end do
5313
5314# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5315#if defined(MFC_OpenACC)
5316# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5317!$acc end parallel loop
5318# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5319#elif defined(MFC_OpenMP)
5320# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5321
5322# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5323!$omp end target teams loop
5324# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5325#endif
5326
5327
5328# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5329
5330# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5331#if defined(MFC_OpenACC)
5332# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5333!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5334# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5335#elif defined(MFC_OpenMP)
5336# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5337
5338# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5339
5340# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5341
5342# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5343!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5344# 1053 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5345#endif
5346 do i = 1, flux_cbc_index
5347 do r = is3%beg, is3%end
5348 do k = is2%beg, is2%end
5349 do j = -1, buff_size
5350 flux_rsy_vf_l(j, k, r, i) = flux_vf(i)%sf(k, dj*((n - 1) - 2*j) + j, r)*sign(1._wp, -1._wp*cbc_loc)
5351 end do
5352 end do
5353 end do
5354 end do
5355
5356# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5357#if defined(MFC_OpenACC)
5358# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5359!$acc end parallel loop
5360# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5361#elif defined(MFC_OpenMP)
5362# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5363
5364# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5365!$omp end target teams loop
5366# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5367#endif
5368
5369
5370# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5371
5372# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5373#if defined(MFC_OpenACC)
5374# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5375!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5376# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5377#elif defined(MFC_OpenMP)
5378# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5379
5380# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5381
5382# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5383
5384# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5385!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5386# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5387#endif
5388 do r = is3%beg, is3%end
5389 do k = is2%beg, is2%end
5390 do j = -1, buff_size
5391 flux_rsy_vf_l(j, k, r, eqn_idx%mom%beg + 1) = flux_vf(eqn_idx%mom%beg + 1)%sf(k, dj*((n - 1) - 2*j) + j, r)
5392 end do
5393 end do
5394 end do
5395
5396# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5397#if defined(MFC_OpenACC)
5398# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5399!$acc end parallel loop
5400# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5401#elif defined(MFC_OpenMP)
5402# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5403
5404# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5405!$omp end target teams loop
5406# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5407#endif
5408
5409 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
5410
5411# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5412
5413# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5414#if defined(MFC_OpenACC)
5415# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5416!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5417# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5418#elif defined(MFC_OpenMP)
5419# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5420
5421# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5422
5423# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5424
5425# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5426!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5427# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5428#endif
5429 do i = eqn_idx%adv%beg, eqn_idx%adv%end
5430 do r = is3%beg, is3%end
5431 do k = is2%beg, is2%end
5432 do j = -1, buff_size
5433 flux_src_rsy_vf_l(j, k, r, i) = flux_src_vf(i)%sf(k, dj*((n - 1) - 2*j) + j, r)
5434 end do
5435 end do
5436 end do
5437 end do
5438
5439# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5440#if defined(MFC_OpenACC)
5441# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5442!$acc end parallel loop
5443# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5444#elif defined(MFC_OpenMP)
5445# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5446
5447# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5448!$omp end target teams loop
5449# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5450#endif
5451 else
5452
5453# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5454
5455# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5456#if defined(MFC_OpenACC)
5457# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5458!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5459# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5460#elif defined(MFC_OpenMP)
5461# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5462
5463# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5464
5465# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5466
5467# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5468!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5469# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5470#endif
5471 do r = is3%beg, is3%end
5472 do k = is2%beg, is2%end
5473 do j = -1, buff_size
5474 flux_src_rsy_vf_l(j, k, r, eqn_idx%adv%beg) = flux_src_vf(eqn_idx%adv%beg)%sf(k, &
5475 & dj*((n - 1) - 2*j) + j, r)*sign(1._wp, -1._wp*cbc_loc)
5476 end do
5477 end do
5478 end do
5479
5480# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5481#if defined(MFC_OpenACC)
5482# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5483!$acc end parallel loop
5484# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5485#elif defined(MFC_OpenMP)
5486# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5487
5488# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5489!$omp end target teams loop
5490# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5491#endif
5492 end if
5493
5494 ! END: Reshaping Inputted Data in y-direction
5495
5496 ! Reshaping Inputted Data in z-direction
5497 else
5498
5499# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5500
5501# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5502#if defined(MFC_OpenACC)
5503# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5504!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5505# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5506#elif defined(MFC_OpenMP)
5507# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5508
5509# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5510
5511# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5512
5513# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5514!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5515# 1104 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5516#endif
5517 do i = 1, sys_size
5518 do r = is3%beg, is3%end
5519 do k = is2%beg, is2%end
5520 do j = 0, buff_size
5521 q_prim_rsz_vf(j, k, r, i) = q_prim_vf(i)%sf(r, k, dj*(p - 2*j) + j)
5522 end do
5523 end do
5524 end do
5525 end do
5526
5527# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5528#if defined(MFC_OpenACC)
5529# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5530!$acc end parallel loop
5531# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5532#elif defined(MFC_OpenMP)
5533# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5534
5535# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5536!$omp end target teams loop
5537# 1114 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5538#endif
5539
5540
5541# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5542
5543# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5544#if defined(MFC_OpenACC)
5545# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5546!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5547# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5548#elif defined(MFC_OpenMP)
5549# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5550
5551# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5552
5553# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5554
5555# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5556!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5557# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5558#endif
5559 do r = is3%beg, is3%end
5560 do k = is2%beg, is2%end
5561 do j = 0, buff_size
5562 q_prim_rsz_vf(j, k, r, eqn_idx%mom%end) = q_prim_vf(eqn_idx%mom%end)%sf(r, k, &
5563 & dj*(p - 2*j) + j)*sign(1._wp, -1._wp*cbc_loc)
5564 end do
5565 end do
5566 end do
5567
5568# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5569#if defined(MFC_OpenACC)
5570# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5571!$acc end parallel loop
5572# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5573#elif defined(MFC_OpenMP)
5574# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5575
5576# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5577!$omp end target teams loop
5578# 1125 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5579#endif
5580
5581
5582# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5583
5584# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5585#if defined(MFC_OpenACC)
5586# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5587!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5588# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5589#elif defined(MFC_OpenMP)
5590# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5591
5592# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5593
5594# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5595
5596# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5597!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5598# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5599#endif
5600 do i = 1, flux_cbc_index
5601 do r = is3%beg, is3%end
5602 do k = is2%beg, is2%end
5603 do j = -1, buff_size
5604 flux_rsz_vf_l(j, k, r, i) = flux_vf(i)%sf(r, k, dj*((p - 1) - 2*j) + j)*sign(1._wp, -1._wp*cbc_loc)
5605 end do
5606 end do
5607 end do
5608 end do
5609
5610# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5611#if defined(MFC_OpenACC)
5612# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5613!$acc end parallel loop
5614# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5615#elif defined(MFC_OpenMP)
5616# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5617
5618# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5619!$omp end target teams loop
5620# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5621#endif
5622
5623
5624# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5625
5626# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5627#if defined(MFC_OpenACC)
5628# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5629!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5630# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5631#elif defined(MFC_OpenMP)
5632# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5633
5634# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5635
5636# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5637
5638# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5639!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5640# 1139 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5641#endif
5642 do r = is3%beg, is3%end
5643 do k = is2%beg, is2%end
5644 do j = -1, buff_size
5645 flux_rsz_vf_l(j, k, r, eqn_idx%mom%end) = flux_vf(eqn_idx%mom%end)%sf(r, k, dj*((p - 1) - 2*j) + j)
5646 end do
5647 end do
5648 end do
5649
5650# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5651#if defined(MFC_OpenACC)
5652# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5653!$acc end parallel loop
5654# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5655#elif defined(MFC_OpenMP)
5656# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5657
5658# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5659!$omp end target teams loop
5660# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5661#endif
5662
5663 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
5664
5665# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5666
5667# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5668#if defined(MFC_OpenACC)
5669# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5670!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5671# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5672#elif defined(MFC_OpenMP)
5673# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5674
5675# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5676
5677# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5678
5679# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5680!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5681# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5682#endif
5683 do i = eqn_idx%adv%beg, eqn_idx%adv%end
5684 do r = is3%beg, is3%end
5685 do k = is2%beg, is2%end
5686 do j = -1, buff_size
5687 flux_src_rsz_vf_l(j, k, r, i) = flux_src_vf(i)%sf(r, k, dj*((p - 1) - 2*j) + j)
5688 end do
5689 end do
5690 end do
5691 end do
5692
5693# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5694#if defined(MFC_OpenACC)
5695# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5696!$acc end parallel loop
5697# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5698#elif defined(MFC_OpenMP)
5699# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5700
5701# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5702!$omp end target teams loop
5703# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5704#endif
5705 else
5706
5707# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5708
5709# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5710#if defined(MFC_OpenACC)
5711# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5712!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5713# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5714#elif defined(MFC_OpenMP)
5715# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5716
5717# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5718
5719# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5720
5721# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5722!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5723# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5724#endif
5725 do r = is3%beg, is3%end
5726 do k = is2%beg, is2%end
5727 do j = -1, buff_size
5728 flux_src_rsz_vf_l(j, k, r, eqn_idx%adv%beg) = flux_src_vf(eqn_idx%adv%beg)%sf(r, k, &
5729 & dj*((p - 1) - 2*j) + j)*sign(1._wp, -1._wp*cbc_loc)
5730 end do
5731 end do
5732 end do
5733
5734# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5735#if defined(MFC_OpenACC)
5736# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5737!$acc end parallel loop
5738# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5739#elif defined(MFC_OpenMP)
5740# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5741
5742# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5743!$omp end target teams loop
5744# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5745#endif
5746 end if
5747 end if
5748 ! END: Reshaping Inputted Data in z-direction
5749
5750 ! Association of the procedural pointer to the appropriate procedure that will be utilized in the evaluation of L variables
5751 ! for the CBC
5752
5753 end subroutine s_initialize_cbc
5754
5755 !> Deallocation and/or the disassociation procedures that are necessary in order to finalize the CBC application
5756 subroutine s_finalize_cbc(flux_vf, flux_src_vf)
5757
5758 type(scalar_field), dimension(sys_size), intent(inout) :: flux_vf, flux_src_vf
5759 integer :: i, j, k, r !< Generic loop iterators
5760 ! Determining the indicial shift based on CBC location
5761
5762 dj = max(0, cbc_loc)
5763
5764# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5765#if defined(MFC_OpenACC)
5766# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5767!$acc update device(dj)
5768# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5769#elif defined(MFC_OpenMP)
5770# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5771!$omp target update to(dj)
5772# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5773#endif
5774
5775 ! Reshaping Outputted Data in x-direction
5776 if (cbc_dir == 1) then
5777
5778# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5779
5780# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5781#if defined(MFC_OpenACC)
5782# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5783!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5784# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5785#elif defined(MFC_OpenMP)
5786# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5787
5788# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5789
5790# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5791
5792# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5793!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5794# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5795#endif
5796 do i = 1, flux_cbc_index
5797 do r = is3%beg, is3%end
5798 do k = is2%beg, is2%end
5799 do j = -1, buff_size
5800 flux_vf(i)%sf(dj*((m - 1) - 2*j) + j, k, r) = flux_rsx_vf_l(j, k, r, i)*sign(1._wp, -1._wp*cbc_loc)
5801 end do
5802 end do
5803 end do
5804 end do
5805
5806# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5807#if defined(MFC_OpenACC)
5808# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5809!$acc end parallel loop
5810# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5811#elif defined(MFC_OpenMP)
5812# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5813
5814# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5815!$omp end target teams loop
5816# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5817#endif
5818
5819# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5820
5821# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5822#if defined(MFC_OpenACC)
5823# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5824!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5825# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5826#elif defined(MFC_OpenMP)
5827# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5828
5829# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5830
5831# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5832
5833# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5834!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5835# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5836#endif
5837 do r = is3%beg, is3%end
5838 do k = is2%beg, is2%end
5839 do j = -1, buff_size
5840 flux_vf(eqn_idx%mom%beg)%sf(dj*((m - 1) - 2*j) + j, k, r) = flux_rsx_vf_l(j, k, r, eqn_idx%mom%beg)
5841 end do
5842 end do
5843 end do
5844
5845# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5846#if defined(MFC_OpenACC)
5847# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5848!$acc end parallel loop
5849# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5850#elif defined(MFC_OpenMP)
5851# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5852
5853# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5854!$omp end target teams loop
5855# 1212 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5856#endif
5857
5858 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
5859
5860# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5861
5862# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5863#if defined(MFC_OpenACC)
5864# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5865!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5866# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5867#elif defined(MFC_OpenMP)
5868# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5869
5870# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5871
5872# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5873
5874# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5875!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5876# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5877#endif
5878 do i = eqn_idx%adv%beg, eqn_idx%adv%end
5879 do r = is3%beg, is3%end
5880 do k = is2%beg, is2%end
5881 do j = -1, buff_size
5882 flux_src_vf(i)%sf(dj*((m - 1) - 2*j) + j, k, r) = flux_src_rsx_vf_l(j, k, r, i)
5883 end do
5884 end do
5885 end do
5886 end do
5887
5888# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5889#if defined(MFC_OpenACC)
5890# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5891!$acc end parallel loop
5892# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5893#elif defined(MFC_OpenMP)
5894# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5895
5896# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5897!$omp end target teams loop
5898# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5899#endif
5900 else
5901
5902# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5903
5904# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5905#if defined(MFC_OpenACC)
5906# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5907!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5908# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5909#elif defined(MFC_OpenMP)
5910# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5911
5912# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5913
5914# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5915
5916# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5917!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
5918# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5919#endif
5920 do r = is3%beg, is3%end
5921 do k = is2%beg, is2%end
5922 do j = -1, buff_size
5923 flux_src_vf(eqn_idx%adv%beg)%sf(dj*((m - 1) - 2*j) + j, k, r) = flux_src_rsx_vf_l(j, k, r, &
5924 & eqn_idx%adv%beg)*sign(1._wp, -1._wp*cbc_loc)
5925 end do
5926 end do
5927 end do
5928
5929# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5930#if defined(MFC_OpenACC)
5931# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5932!$acc end parallel loop
5933# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5934#elif defined(MFC_OpenMP)
5935# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5936
5937# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5938!$omp end target teams loop
5939# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5940#endif
5941 end if
5942 ! END: Reshaping Outputted Data in x-direction
5943
5944 ! Reshaping Outputted Data in y-direction
5945 else if (cbc_dir == 2) then
5946
5947# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5948
5949# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5950#if defined(MFC_OpenACC)
5951# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5952!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
5953# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5954#elif defined(MFC_OpenMP)
5955# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5956
5957# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5958
5959# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5960
5961# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5962!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
5963# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5964#endif
5965 do i = 1, flux_cbc_index
5966 do r = is3%beg, is3%end
5967 do k = is2%beg, is2%end
5968 do j = -1, buff_size
5969 flux_vf(i)%sf(k, dj*((n - 1) - 2*j) + j, r) = flux_rsy_vf_l(j, k, r, i)*sign(1._wp, -1._wp*cbc_loc)
5970 end do
5971 end do
5972 end do
5973 end do
5974
5975# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5976#if defined(MFC_OpenACC)
5977# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5978!$acc end parallel loop
5979# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5980#elif defined(MFC_OpenMP)
5981# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5982
5983# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5984!$omp end target teams loop
5985# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5986#endif
5987
5988
5989# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5990
5991# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5992#if defined(MFC_OpenACC)
5993# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5994!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
5995# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5996#elif defined(MFC_OpenMP)
5997# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
5998
5999# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6000
6001# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6002
6003# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6004!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
6005# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6006#endif
6007 do r = is3%beg, is3%end
6008 do k = is2%beg, is2%end
6009 do j = -1, buff_size
6010 flux_vf(eqn_idx%mom%beg + 1)%sf(k, dj*((n - 1) - 2*j) + j, r) = flux_rsy_vf_l(j, k, r, eqn_idx%mom%beg + 1)
6011 end do
6012 end do
6013 end do
6014
6015# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6016#if defined(MFC_OpenACC)
6017# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6018!$acc end parallel loop
6019# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6020#elif defined(MFC_OpenMP)
6021# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6022
6023# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6024!$omp end target teams loop
6025# 1262 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6026#endif
6027
6028 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
6029
6030# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6031
6032# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6033#if defined(MFC_OpenACC)
6034# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6035!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
6036# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6037#elif defined(MFC_OpenMP)
6038# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6039
6040# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6041
6042# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6043
6044# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6045!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
6046# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6047#endif
6048 do i = eqn_idx%adv%beg, eqn_idx%adv%end
6049 do r = is3%beg, is3%end
6050 do k = is2%beg, is2%end
6051 do j = -1, buff_size
6052 flux_src_vf(i)%sf(k, dj*((n - 1) - 2*j) + j, r) = flux_src_rsy_vf_l(j, k, r, i)
6053 end do
6054 end do
6055 end do
6056 end do
6057
6058# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6059#if defined(MFC_OpenACC)
6060# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6061!$acc end parallel loop
6062# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6063#elif defined(MFC_OpenMP)
6064# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6065
6066# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6067!$omp end target teams loop
6068# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6069#endif
6070 else
6071
6072# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6073
6074# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6075#if defined(MFC_OpenACC)
6076# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6077!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
6078# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6079#elif defined(MFC_OpenMP)
6080# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6081
6082# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6083
6084# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6085
6086# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6087!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
6088# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6089#endif
6090 do r = is3%beg, is3%end
6091 do k = is2%beg, is2%end
6092 do j = -1, buff_size
6093 flux_src_vf(eqn_idx%adv%beg)%sf(k, dj*((n - 1) - 2*j) + j, r) = flux_src_rsy_vf_l(j, k, r, &
6094 & eqn_idx%adv%beg)*sign(1._wp, -1._wp*cbc_loc)
6095 end do
6096 end do
6097 end do
6098
6099# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6100#if defined(MFC_OpenACC)
6101# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6102!$acc end parallel loop
6103# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6104#elif defined(MFC_OpenMP)
6105# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6106
6107# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6108!$omp end target teams loop
6109# 1286 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6110#endif
6111 end if
6112
6113 ! END: Reshaping Outputted Data in y-direction
6114
6115 ! Reshaping Outputted Data in z-direction
6116 else
6117
6118# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6119
6120# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6121#if defined(MFC_OpenACC)
6122# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6123!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
6124# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6125#elif defined(MFC_OpenMP)
6126# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6127
6128# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6129
6130# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6131
6132# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6133!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
6134# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6135#endif
6136 do i = 1, flux_cbc_index
6137 do r = is3%beg, is3%end
6138 do k = is2%beg, is2%end
6139 do j = -1, buff_size
6140 flux_vf(i)%sf(r, k, dj*((p - 1) - 2*j) + j) = flux_rsz_vf_l(j, k, r, i)*sign(1._wp, -1._wp*cbc_loc)
6141 end do
6142 end do
6143 end do
6144 end do
6145
6146# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6147#if defined(MFC_OpenACC)
6148# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6149!$acc end parallel loop
6150# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6151#elif defined(MFC_OpenMP)
6152# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6153
6154# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6155!$omp end target teams loop
6156# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6157#endif
6158
6159
6160# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6161
6162# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6163#if defined(MFC_OpenACC)
6164# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6165!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
6166# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6167#elif defined(MFC_OpenMP)
6168# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6169
6170# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6171
6172# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6173
6174# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6175!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
6176# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6177#endif
6178 do r = is3%beg, is3%end
6179 do k = is2%beg, is2%end
6180 do j = -1, buff_size
6181 flux_vf(eqn_idx%mom%end)%sf(r, k, dj*((p - 1) - 2*j) + j) = flux_rsz_vf_l(j, k, r, eqn_idx%mom%end)
6182 end do
6183 end do
6184 end do
6185
6186# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6187#if defined(MFC_OpenACC)
6188# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6189!$acc end parallel loop
6190# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6191#elif defined(MFC_OpenMP)
6192# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6193
6194# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6195!$omp end target teams loop
6196# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6197#endif
6198
6199 if (riemann_solver == riemann_solver_hll .and. .not. hll_u_interface) then
6200
6201# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6202
6203# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6204#if defined(MFC_OpenACC)
6205# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6206!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, r)
6207# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6208#elif defined(MFC_OpenMP)
6209# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6210
6211# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6212
6213# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6214
6215# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6216!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, r)
6217# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6218#endif
6219 do i = eqn_idx%adv%beg, eqn_idx%adv%end
6220 do r = is3%beg, is3%end
6221 do k = is2%beg, is2%end
6222 do j = -1, buff_size
6223 flux_src_vf(i)%sf(r, k, dj*((p - 1) - 2*j) + j) = flux_src_rsz_vf_l(j, k, r, i)
6224 end do
6225 end do
6226 end do
6227 end do
6228
6229# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6230#if defined(MFC_OpenACC)
6231# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6232!$acc end parallel loop
6233# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6234#elif defined(MFC_OpenMP)
6235# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6236
6237# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6238!$omp end target teams loop
6239# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6240#endif
6241 else
6242
6243# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6244
6245# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6246#if defined(MFC_OpenACC)
6247# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6248!$acc parallel loop collapse(3) gang vector default(present) private(j, k, r)
6249# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6250#elif defined(MFC_OpenMP)
6251# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6252
6253# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6254
6255# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6256
6257# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6258!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, r)
6259# 1328 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6260#endif
6261 do r = is3%beg, is3%end
6262 do k = is2%beg, is2%end
6263 do j = -1, buff_size
6264 flux_src_vf(eqn_idx%adv%beg)%sf(r, k, dj*((p - 1) - 2*j) + j) = flux_src_rsz_vf_l(j, k, r, &
6265 & eqn_idx%adv%beg)*sign(1._wp, -1._wp*cbc_loc)
6266 end do
6267 end do
6268 end do
6269
6270# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6271#if defined(MFC_OpenACC)
6272# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6273!$acc end parallel loop
6274# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6275#elif defined(MFC_OpenMP)
6276# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6277
6278# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6279!$omp end target teams loop
6280# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6281#endif
6282 end if
6283 end if
6284 ! END: Reshaping Outputted Data in z-direction
6285
6286 end subroutine s_finalize_cbc
6287
6288 !> Detect whether any domain boundary uses characteristic boundary conditions
6289 elemental subroutine s_any_cbc_boundaries(toggle)
6290
6291 logical, intent(inout) :: toggle
6292
6293 toggle = .false.
6294
6295# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6296 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -5)) then
6297 toggle = .true.
6298 end if
6299# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6300 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -6)) then
6301 toggle = .true.
6302 end if
6303# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6304 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -7)) then
6305 toggle = .true.
6306 end if
6307# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6308 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -8)) then
6309 toggle = .true.
6310 end if
6311# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6312 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -9)) then
6313 toggle = .true.
6314 end if
6315# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6316 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -10)) then
6317 toggle = .true.
6318 end if
6319# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6320 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -11)) then
6321 toggle = .true.
6322 end if
6323# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6324 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -12)) then
6325 toggle = .true.
6326 end if
6327# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6328 if (any((/bc_x%beg, bc_x%end, bc_y%beg, bc_y%end, bc_z%beg, bc_z%end/) == -13)) then
6329 toggle = .true.
6330 end if
6331# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6332
6333 end subroutine s_any_cbc_boundaries
6334
6335 !> Module deallocation and/or disassociation procedures
6336 impure subroutine s_finalize_cbc_module
6337
6338 logical :: is_cbc
6339
6340 call s_any_cbc_boundaries(is_cbc)
6341
6342 if (is_cbc .eqv. .false.) return
6343
6344 ! Deallocating the cell-average primitive variables
6345#ifdef MFC_DEBUG
6346# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6347 block
6348# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6349 use iso_fortran_env, only: output_unit
6350# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6351
6352# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6353 print *, 'm_cbc.fpp:1369: ', '@:DEALLOCATE(q_prim_rsx_vf)'
6354# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6355
6356# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6357 call flush (output_unit)
6358# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6359 end block
6360# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6361#endif
6362# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6363
6364# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6365#if defined(MFC_OpenACC)
6366# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6367!$acc exit data delete(q_prim_rsx_vf)
6368# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6369#elif defined(MFC_OpenMP)
6370# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6371!$omp target exit data map(release:q_prim_rsx_vf)
6372# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6373#endif
6374# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6375 deallocate (q_prim_rsx_vf)
6376 if (weno_order > 1 .or. muscl_order > 1) then
6377#ifdef MFC_DEBUG
6378# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6379 block
6380# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6381 use iso_fortran_env, only: output_unit
6382# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6383
6384# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6385 print *, 'm_cbc.fpp:1371: ', '@:DEALLOCATE(F_rsx_vf, F_src_rsx_vf)'
6386# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6387
6388# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6389 call flush (output_unit)
6390# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6391 end block
6392# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6393#endif
6394# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6395
6396# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6397#if defined(MFC_OpenACC)
6398# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6399!$acc exit data delete(F_rsx_vf, F_src_rsx_vf)
6400# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6401#elif defined(MFC_OpenMP)
6402# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6403!$omp target exit data map(release:F_rsx_vf, F_src_rsx_vf)
6404# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6405#endif
6406# 1371 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6407 deallocate (f_rsx_vf, f_src_rsx_vf)
6408 end if
6409#ifdef MFC_DEBUG
6410# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6411 block
6412# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6413 use iso_fortran_env, only: output_unit
6414# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6415
6416# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6417 print *, 'm_cbc.fpp:1373: ', '@:DEALLOCATE(flux_rsx_vf_l, flux_src_rsx_vf_l)'
6418# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6419
6420# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6421 call flush (output_unit)
6422# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6423 end block
6424# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6425#endif
6426# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6427
6428# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6429#if defined(MFC_OpenACC)
6430# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6431!$acc exit data delete(flux_rsx_vf_l, flux_src_rsx_vf_l)
6432# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6433#elif defined(MFC_OpenMP)
6434# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6435!$omp target exit data map(release:flux_rsx_vf_l, flux_src_rsx_vf_l)
6436# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6437#endif
6438# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6439 deallocate (flux_rsx_vf_l, flux_src_rsx_vf_l)
6440
6441 if (n > 0) then
6442#ifdef MFC_DEBUG
6443# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6444 block
6445# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6446 use iso_fortran_env, only: output_unit
6447# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6448
6449# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6450 print *, 'm_cbc.fpp:1376: ', '@:DEALLOCATE(q_prim_rsy_vf)'
6451# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6452
6453# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6454 call flush (output_unit)
6455# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6456 end block
6457# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6458#endif
6459# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6460
6461# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6462#if defined(MFC_OpenACC)
6463# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6464!$acc exit data delete(q_prim_rsy_vf)
6465# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6466#elif defined(MFC_OpenMP)
6467# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6468!$omp target exit data map(release:q_prim_rsy_vf)
6469# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6470#endif
6471# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6472 deallocate (q_prim_rsy_vf)
6473 if (weno_order > 1 .or. muscl_order > 1) then
6474#ifdef MFC_DEBUG
6475# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6476 block
6477# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6478 use iso_fortran_env, only: output_unit
6479# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6480
6481# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6482 print *, 'm_cbc.fpp:1378: ', '@:DEALLOCATE(F_rsy_vf, F_src_rsy_vf)'
6483# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6484
6485# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6486 call flush (output_unit)
6487# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6488 end block
6489# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6490#endif
6491# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6492
6493# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6494#if defined(MFC_OpenACC)
6495# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6496!$acc exit data delete(F_rsy_vf, F_src_rsy_vf)
6497# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6498#elif defined(MFC_OpenMP)
6499# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6500!$omp target exit data map(release:F_rsy_vf, F_src_rsy_vf)
6501# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6502#endif
6503# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6504 deallocate (f_rsy_vf, f_src_rsy_vf)
6505 end if
6506#ifdef MFC_DEBUG
6507# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6508 block
6509# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6510 use iso_fortran_env, only: output_unit
6511# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6512
6513# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6514 print *, 'm_cbc.fpp:1380: ', '@:DEALLOCATE(flux_rsy_vf_l, flux_src_rsy_vf_l)'
6515# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6516
6517# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6518 call flush (output_unit)
6519# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6520 end block
6521# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6522#endif
6523# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6524
6525# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6526#if defined(MFC_OpenACC)
6527# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6528!$acc exit data delete(flux_rsy_vf_l, flux_src_rsy_vf_l)
6529# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6530#elif defined(MFC_OpenMP)
6531# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6532!$omp target exit data map(release:flux_rsy_vf_l, flux_src_rsy_vf_l)
6533# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6534#endif
6535# 1380 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6536 deallocate (flux_rsy_vf_l, flux_src_rsy_vf_l)
6537 end if
6538 if (p > 0) then
6539#ifdef MFC_DEBUG
6540# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6541 block
6542# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6543 use iso_fortran_env, only: output_unit
6544# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6545
6546# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6547 print *, 'm_cbc.fpp:1383: ', '@:DEALLOCATE(q_prim_rsz_vf)'
6548# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6549
6550# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6551 call flush (output_unit)
6552# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6553 end block
6554# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6555#endif
6556# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6557
6558# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6559#if defined(MFC_OpenACC)
6560# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6561!$acc exit data delete(q_prim_rsz_vf)
6562# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6563#elif defined(MFC_OpenMP)
6564# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6565!$omp target exit data map(release:q_prim_rsz_vf)
6566# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6567#endif
6568# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6569 deallocate (q_prim_rsz_vf)
6570 if (weno_order > 1 .or. muscl_order > 1) then
6571#ifdef MFC_DEBUG
6572# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6573 block
6574# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6575 use iso_fortran_env, only: output_unit
6576# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6577
6578# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6579 print *, 'm_cbc.fpp:1385: ', '@:DEALLOCATE(F_rsz_vf, F_src_rsz_vf)'
6580# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6581
6582# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6583 call flush (output_unit)
6584# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6585 end block
6586# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6587#endif
6588# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6589
6590# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6591#if defined(MFC_OpenACC)
6592# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6593!$acc exit data delete(F_rsz_vf, F_src_rsz_vf)
6594# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6595#elif defined(MFC_OpenMP)
6596# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6597!$omp target exit data map(release:F_rsz_vf, F_src_rsz_vf)
6598# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6599#endif
6600# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6601 deallocate (f_rsz_vf, f_src_rsz_vf)
6602 end if
6603#ifdef MFC_DEBUG
6604# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6605 block
6606# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6607 use iso_fortran_env, only: output_unit
6608# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6609
6610# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6611 print *, 'm_cbc.fpp:1387: ', '@:DEALLOCATE(flux_rsz_vf_l, flux_src_rsz_vf_l)'
6612# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6613
6614# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6615 call flush (output_unit)
6616# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6617 end block
6618# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6619#endif
6620# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6621
6622# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6623#if defined(MFC_OpenACC)
6624# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6625!$acc exit data delete(flux_rsz_vf_l, flux_src_rsz_vf_l)
6626# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6627#elif defined(MFC_OpenMP)
6628# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6629!$omp target exit data map(release:flux_rsz_vf_l, flux_src_rsz_vf_l)
6630# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6631#endif
6632# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6633 deallocate (flux_rsz_vf_l, flux_src_rsz_vf_l)
6634 end if
6635
6636 ! Deallocating the cell-width distribution in the s-direction
6637#ifdef MFC_DEBUG
6638# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6639 block
6640# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6641 use iso_fortran_env, only: output_unit
6642# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6643
6644# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6645 print *, 'm_cbc.fpp:1391: ', '@:DEALLOCATE(ds)'
6646# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6647
6648# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6649 call flush (output_unit)
6650# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6651 end block
6652# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6653#endif
6654# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6655
6656# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6657#if defined(MFC_OpenACC)
6658# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6659!$acc exit data delete(ds)
6660# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6661#elif defined(MFC_OpenMP)
6662# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6663!$omp target exit data map(release:ds)
6664# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6665#endif
6666# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6667 deallocate (ds)
6668
6669 ! Deallocating GRCBC inputs
6670#ifdef MFC_DEBUG
6671# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6672 block
6673# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6674 use iso_fortran_env, only: output_unit
6675# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6676
6677# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6678 print *, 'm_cbc.fpp:1394: ', '@:DEALLOCATE(vel_in, vel_out, pres_in, pres_out, Del_in, Del_out, alpha_rho_in, alpha_in)'
6679# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6680
6681# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6682 call flush (output_unit)
6683# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6684 end block
6685# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6686#endif
6687# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6688
6689# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6690#if defined(MFC_OpenACC)
6691# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6692!$acc exit data delete(vel_in, vel_out, pres_in, pres_out, Del_in, Del_out, alpha_rho_in, alpha_in)
6693# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6694#elif defined(MFC_OpenMP)
6695# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6696!$omp target exit data map(release:vel_in, vel_out, pres_in, pres_out, Del_in, Del_out, alpha_rho_in, alpha_in)
6697# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6698#endif
6699# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6701
6702 ! Deallocating CBC Coefficients in x-direction
6703 if (all((/bc_x%beg, bc_x%end/) <= -5) .and. all((/bc_x%beg, &
6704 & bc_x%end/) >= -13) .or. bc_x%beg <= -5 .and. bc_x%beg >= -13 .or. bc_x%end <= -5 .and. bc_x%end >= -13) then
6705#ifdef MFC_DEBUG
6706# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6707 block
6708# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6709 use iso_fortran_env, only: output_unit
6710# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6711
6712# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6713 print *, 'm_cbc.fpp:1399: ', '@:DEALLOCATE(fd_coef_x)'
6714# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6715
6716# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6717 call flush (output_unit)
6718# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6719 end block
6720# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6721#endif
6722# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6723
6724# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6725#if defined(MFC_OpenACC)
6726# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6727!$acc exit data delete(fd_coef_x)
6728# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6729#elif defined(MFC_OpenMP)
6730# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6731!$omp target exit data map(release:fd_coef_x)
6732# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6733#endif
6734# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6735 deallocate (fd_coef_x)
6736 if (weno_order > 1 .or. muscl_order > 1) then
6737#ifdef MFC_DEBUG
6738# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6739 block
6740# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6741 use iso_fortran_env, only: output_unit
6742# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6743
6744# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6745 print *, 'm_cbc.fpp:1401: ', '@:DEALLOCATE(pi_coef_x)'
6746# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6747
6748# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6749 call flush (output_unit)
6750# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6751 end block
6752# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6753#endif
6754# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6755
6756# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6757#if defined(MFC_OpenACC)
6758# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6759!$acc exit data delete(pi_coef_x)
6760# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6761#elif defined(MFC_OpenMP)
6762# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6763!$omp target exit data map(release:pi_coef_x)
6764# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6765#endif
6766# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6767 deallocate (pi_coef_x)
6768 end if
6769 end if
6770
6771 ! Deallocating CBC Coefficients in y-direction
6772 if (n > 0) then
6773 if (all((/bc_y%beg, bc_y%end/) <= -5) .and. all((/bc_y%beg, &
6774 & bc_y%end/) >= -13) .or. bc_y%beg <= -5 .and. bc_y%beg >= -13 .or. bc_y%end <= -5 .and. bc_y%end >= -13) then
6775#ifdef MFC_DEBUG
6776# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6777 block
6778# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6779 use iso_fortran_env, only: output_unit
6780# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6781
6782# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6783 print *, 'm_cbc.fpp:1409: ', '@:DEALLOCATE(fd_coef_y)'
6784# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6785
6786# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6787 call flush (output_unit)
6788# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6789 end block
6790# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6791#endif
6792# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6793
6794# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6795#if defined(MFC_OpenACC)
6796# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6797!$acc exit data delete(fd_coef_y)
6798# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6799#elif defined(MFC_OpenMP)
6800# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6801!$omp target exit data map(release:fd_coef_y)
6802# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6803#endif
6804# 1409 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6805 deallocate (fd_coef_y)
6806 if (weno_order > 1) then
6807#ifdef MFC_DEBUG
6808# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6809 block
6810# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6811 use iso_fortran_env, only: output_unit
6812# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6813
6814# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6815 print *, 'm_cbc.fpp:1411: ', '@:DEALLOCATE(pi_coef_y)'
6816# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6817
6818# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6819 call flush (output_unit)
6820# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6821 end block
6822# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6823#endif
6824# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6825
6826# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6827#if defined(MFC_OpenACC)
6828# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6829!$acc exit data delete(pi_coef_y)
6830# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6831#elif defined(MFC_OpenMP)
6832# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6833!$omp target exit data map(release:pi_coef_y)
6834# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6835#endif
6836# 1411 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6837 deallocate (pi_coef_y)
6838 end if
6839 end if
6840 end if
6841
6842 ! Deallocating CBC Coefficients in z-direction
6843 if (p > 0) then
6844 if (all((/bc_z%beg, bc_z%end/) <= -5) .and. all((/bc_z%beg, &
6845 & bc_z%end/) >= -13) .or. bc_z%beg <= -5 .and. bc_z%beg >= -13 .or. bc_z%end <= -5 .and. bc_z%end >= -13) then
6846#ifdef MFC_DEBUG
6847# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6848 block
6849# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6850 use iso_fortran_env, only: output_unit
6851# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6852
6853# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6854 print *, 'm_cbc.fpp:1420: ', '@:DEALLOCATE(fd_coef_z)'
6855# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6856
6857# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6858 call flush (output_unit)
6859# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6860 end block
6861# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6862#endif
6863# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6864
6865# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6866#if defined(MFC_OpenACC)
6867# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6868!$acc exit data delete(fd_coef_z)
6869# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6870#elif defined(MFC_OpenMP)
6871# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6872!$omp target exit data map(release:fd_coef_z)
6873# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6874#endif
6875# 1420 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6876 deallocate (fd_coef_z)
6877 if (weno_order > 1) then
6878#ifdef MFC_DEBUG
6879# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6880 block
6881# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6882 use iso_fortran_env, only: output_unit
6883# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6884
6885# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6886 print *, 'm_cbc.fpp:1422: ', '@:DEALLOCATE(pi_coef_z)'
6887# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6888
6889# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6890 call flush (output_unit)
6891# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6892 end block
6893# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6894#endif
6895# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6896
6897# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6898#if defined(MFC_OpenACC)
6899# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6900!$acc exit data delete(pi_coef_z)
6901# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6902#elif defined(MFC_OpenMP)
6903# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6904!$omp target exit data map(release:pi_coef_z)
6905# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6906#endif
6907# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_cbc.fpp"
6908 deallocate (pi_coef_z)
6909 end if
6910 end if
6911 end if
6912
6913 end subroutine s_finalize_cbc_module
6914
6915end module m_cbc
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
Per-cell noncharacteristic boundary condition primitives applied in the ghost cells.
pure real(wp) function, public f_vel_ramp(tau, t0, frac0, t)
Velocity scaling for a GRCBC inflow that is ramping up: unity unless bc_[x,y,z]vel_in_ramp is set,...
Characteristic boundary conditions (CBCs) for slip walls, non-reflecting subsonic inflow/outflow,...
subroutine s_associate_cbc_coefficients_pointers(cbc_dir_in, cbc_loc_in)
Associate CBC finite-difference and polynomial-interpolation coefficients based on direction and boun...
real(wp), dimension(:,:), allocatable vel_out
subroutine, public s_cbc(q_prim_vf, flux_vf, flux_src_vf, cbc_dir_norm, cbc_loc_norm, ix, iy, iz)
Apply characteristic boundary conditions by modifying fluxes near domain boundaries.
integer dj
real(wp), dimension(:,:), allocatable alpha_rho_in
real(wp), dimension(:,:), allocatable fd_coef_x
Finite diff. coefficients x-dir.
subroutine s_compute_cbc_coefficients(cbc_dir_in, cbc_loc_in)
Compute CBC coefficients.
real(wp), dimension(:), allocatable pres_out
impure subroutine, public s_initialize_cbc_module
Initialize the CBC module.
type(int_bounds_info) is3
Indical bounds in the s1-, s2- and s3-directions.
real(wp), dimension(:,:,:,:), allocatable flux_rsx_vf_l
real(wp), dimension(:), allocatable del_out
real(wp), dimension(:,:,:,:), allocatable flux_src_rsy_vf_l
subroutine s_finalize_cbc(flux_vf, flux_src_vf)
Deallocation and/or the disassociation procedures that are necessary in order to finalize the CBC app...
elemental subroutine s_any_cbc_boundaries(toggle)
Detect whether any domain boundary uses characteristic boundary conditions.
real(wp), dimension(:), allocatable pres_in
integer cbc_loc
real(wp), dimension(:,:,:,:), allocatable flux_rsz_vf_l
real(wp), dimension(:,:,:,:), allocatable q_prim_rsx_vf
real(wp), dimension(:,:,:), allocatable pi_coef_x
Polynomial interpolant coefficients in x-dir.
real(wp), dimension(:,:,:,:), allocatable f_src_rsz_vf
integer cbc_dir
real(wp), dimension(:,:,:), allocatable pi_coef_y
Polynomial interpolant coefficients in y-dir.
real(wp), dimension(:,:), allocatable fd_coef_y
Finite diff. coefficients y-dir.
real(wp), dimension(:,:), allocatable vel_in
real(wp), dimension(:,:,:), allocatable pi_coef_z
Polynomial interpolant coefficients in z-dir.
impure subroutine, public s_finalize_cbc_module
Module deallocation and/or disassociation procedures.
real(wp), dimension(:,:,:,:), allocatable flux_src_rsz_vf_l
real(wp), dimension(:,:), allocatable alpha_in
real(wp), dimension(:), allocatable ds
Cell-width distribution in the s-direction.
real(wp), dimension(:,:,:,:), allocatable q_prim_rsy_vf
real(wp), dimension(:,:,:,:), allocatable f_src_rsx_vf
real(wp), dimension(:,:,:,:), allocatable f_rsy_vf
real(wp), dimension(:,:), allocatable fd_coef_z
Finite diff. coefficients, z-direction.
real(wp), dimension(:), allocatable del_in
type(int_bounds_info) is1
type(int_bounds_info) is2
real(wp), dimension(:,:,:,:), allocatable flux_rsy_vf_l
subroutine s_initialize_cbc(q_prim_vf, flux_vf, flux_src_vf, ix, iy, iz)
Set up the selected CBC for the current boundary.
real(wp), dimension(:,:,:,:), allocatable f_rsx_vf
real(wp), dimension(:,:,:,:), allocatable flux_src_rsx_vf_l
real(wp), dimension(:,:,:,:), allocatable f_src_rsy_vf
real(wp), dimension(:,:,:,:), allocatable f_rsz_vf
integer flux_cbc_index
real(wp), dimension(:,:,:,:), allocatable q_prim_rsz_vf
Characteristic boundary condition (CBC) computations for subsonic inflow, outflow,...
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter riemann_solver_hll
integer, parameter recon_type_muscl
integer, parameter recon_type_weno
integer, parameter model_eqns_gamma_law
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer buff_size
Number of ghost cells for boundary condition storage.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Integer bounds for variables.