MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_icpp_patches.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2!>
3!! @file
4!! @brief Contains module m_icpp_patches
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp" 1
18!> @brief Allocate memory and read initial condition data for IC extrusion.
19!>
20!> @details
21!> This macro handles the complete initialization process for IC extrusion by:
22!>
23!> **Memory Allocation:**
24!> - stored_values(xRows, yRows, sys_size) - stores primitive variable data from files
25!> - x_coords(nrows) - stores x-coordinates from input files
26!> - y_coords(nrows) - stores y-coordinates from input files (3D case only)
27!>
28!> **File Reading Operations:**
29!> - Reads primitive variable data from multiple files with pattern:
30!> `prim.<file_number>.00.<timestep>.dat` where timestep uses `zeros_default` padding
31!> - Files are read from directory specified by `init_dir` parameter
32!> - Supports 1D, 2D, and 3D computational domains
33!>
34!> **Grid Structure Detection:**
35!> - 1D/2D: Counts lines in first file to determine xRows
36!> - 3D: Analyzes coordinate patterns to determine xRows and yRows structure
37!>
38!> **MPI Domain Mapping:**
39!> - Calculates global_offset_x and global_offset_y for MPI subdomain positioning
40!> - Maps file coordinates to local computational grid coordinates
41!>
42!> **Data Assignment:**
43!> - Populates q_prim_vf primitive variable arrays with file data
44!> - Handles momentum component indexing with special treatment for momxe
45!> - Sets momxe component to zero for 2D/3D cases
46!>
47!> **State Management:**
48!> - Uses files_loaded flag to prevent redundant file operations
49!> - Preserves data across multiple macro calls within same simulation
50!>
51!> @note File pattern uses `zeros_default` parameter (default: "000000") for timestep padding
52!> @note Directory path is hardcoded in `init_dir` parameter - modify as needed
53!> @warning Aborts execution if file reading errors occur.
54
55# 56 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
56
57# 199 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
58
59# 210 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
60# 7 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
61# 1 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp" 1
62# 5 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp"
63
64# 67 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp"
65# 8 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
66# 1 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp" 1
67# 19 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
68
69# 343 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
70# 9 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
71# 1 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp" 1
72# 69 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp"
73
74# 198 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp"
75# 10 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
76# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
77# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
78# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
79# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84
85# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
87# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
88
89# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
90
91# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
92
93# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
94
95# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
96
97# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
98
99# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
100
101# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
102! New line at end of file is required for FYPP
103# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
104# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
105# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
106# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
107# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
108# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
109# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
110# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
111
112# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
113# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
114# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
115
116# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
117
118# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
119
120# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
121
122# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
123
124# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
125
126# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
127
128# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
129! New line at end of file is required for FYPP
130# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
131
132# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149
150# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151
152# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153
154# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155
156# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157
158# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159
160# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161
162# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163
164# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
165
166# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
167
168# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
169
170# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
171
172# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
173
174# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
175
176# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
177
178# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
179
180# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
181
182# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
183# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
184
185# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
186
187# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
188
189# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
190
191# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
192
193# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
194
195# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
196
197# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
198
199# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
200
201# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
202
203# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
204
205# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
206
207# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
208! New line at end of file is required for FYPP
209# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
210# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
211# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
212# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
213# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
214# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
215# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
216# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
217
218# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
219# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
220# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
221
222# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
223
224# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
225
226# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
227
228# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
229
230# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
231
232# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
233
234# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
235! New line at end of file is required for FYPP
236# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
237
238# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239
240# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241
242# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243
244# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
245
246# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
247
248# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
249
250# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
251
252# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
253
254# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
255
256# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
257
258# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
259
260# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
261
262# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
263
264# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
265
266# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
267
268# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
269
270# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
271
272# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
273
274# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
275
276# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
277
278# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
279
280# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
281
282# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
283
284# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
285
286# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
287
288# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
289
290# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
291
292# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
293! New line at end of file is required for FYPP
294# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
295
296# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297
298# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299
300# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301
302# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303
304# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305
306# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
307
308# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309
310# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311
312# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313
314# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315
316# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
317
318# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
319
320# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
321
322# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
323
324# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
325
326# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
327
328# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
329
330# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
331
332# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
333
334# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
335# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
336! New line at end of file is required for FYPP
337# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
338
339# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340
341! Caution:
342! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
343! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
344! For an example see misc/nvidia_uvm/bind.sh.
345# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
346
347# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
348
349# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
350
351# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
352
353# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
354
355# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
356
357# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
358
359# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
360! New line at end of file is required for FYPP
361# 11 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp" 2
362
363!> @brief Constructs initial condition patch geometries (lines, circles, rectangles, spheres, etc.) on the grid
365
366 use m_model ! Subroutine(s) related to STL files
367
368 use m_derived_types ! Definitions of the derived types
369
370 use m_global_parameters !< definitions of the global parameters
371
372 use m_helper_basic !< functions to compare floating point numbers
373
374 use m_helper
375
376 use m_mpi_common
377
379
380 use m_mpi_common
381
383
384 implicit none
385
386 private; public :: s_apply_icpp_patches
387
390
392 real(wp) :: smooth_coeff !<
393 !! These variables are analogous in both meaning and use to the similarly
394 !! named components in the ic_patch_parameters type (see m_derived_types.f90
395 !! for additional details). They are employed as a means to more concisely
396 !! perform the actions necessary to lay out a particular patch on the grid.
397
398 real(wp) :: eta !<
399 !! In the case that smoothing of patch boundaries is enabled and the boundary
400 !! between two adjacent patches is to be smeared out, this variable's purpose
401 !! is to act as a pseudo volume fraction to indicate the contribution of each
402 !! patch toward the composition of a cell's fluid state.
403
404 real(wp) :: cart_x, cart_y, cart_z
405 real(wp) :: sph_phi !<
406 !! Variables to be used to hold cell locations in Cartesian coordinates if
407 !! 3D simulation is using cylindrical coordinates
408
410 !! These variables combine the centroid and length parameters associated with
411 !! a particular patch to yield the locations of the patch boundaries in the
412 !! x-, y- and z-coordinate directions. They are used as a means to concisely
413 !! perform the actions necessary to lay out a particular patch on the grid.
414
415 character(len=5) :: istr ! string to store int to string result for error checking
416
417contains
418
419 !> @brief Dispatches each initial condition patch to its geometry-specific initialization routine.
420 impure subroutine s_apply_icpp_patches(patch_id_fp, q_prim_vf)
421
422 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
423#ifdef MFC_MIXED_PRECISION
424 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
425#else
426 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
427#endif
428 integer :: i
429
430 ! 3D Patch Geometries
431 if (p > 0) then
432
433 do i = 1, num_patches
434
435 if (proc_rank == 0) then
436 print *, 'Processing patch', i
437 end if
438
439 !> ICPP Patches
440 !> @{
441 ! Spherical patch
442 if (patch_icpp(i)%geometry == 8) then
443 call s_icpp_sphere(i, patch_id_fp, q_prim_vf)
444 ! Cuboidal patch
445 elseif (patch_icpp(i)%geometry == 9) then
446 call s_icpp_cuboid(i, patch_id_fp, q_prim_vf)
447 ! Cylindrical patch
448 elseif (patch_icpp(i)%geometry == 10) then
449 call s_icpp_cylinder(i, patch_id_fp, q_prim_vf)
450 ! Swept plane patch
451 elseif (patch_icpp(i)%geometry == 11) then
452 call s_icpp_sweep_plane(i, patch_id_fp, q_prim_vf)
453 ! Ellipsoidal patch
454 elseif (patch_icpp(i)%geometry == 12) then
455 call s_icpp_ellipsoid(i, patch_id_fp, q_prim_vf)
456 ! Spherical harmonic patch
457 elseif (patch_icpp(i)%geometry == 14) then
458 call s_icpp_spherical_harmonic(i, patch_id_fp, q_prim_vf)
459 ! 3D Modified circular patch
460 elseif (patch_icpp(i)%geometry == 19) then
461 call s_icpp_3dvarcircle(i, patch_id_fp, q_prim_vf)
462 ! 3D STL patch
463 elseif (patch_icpp(i)%geometry == 21) then
464 call s_icpp_model(i, patch_id_fp, q_prim_vf)
465 end if
466 end do
467 !> @}
468
469 ! 2D Patch Geometries
470 elseif (n > 0) then
471
472 do i = 1, num_patches
473
474 if (proc_rank == 0) then
475 print *, 'Processing patch', i
476 end if
477
478 !> ICPP Patches
479 !> @{
480 ! Circular patch
481 if (patch_icpp(i)%geometry == 2) then
482 call s_icpp_circle(i, patch_id_fp, q_prim_vf)
483 ! Rectangular patch
484 elseif (patch_icpp(i)%geometry == 3) then
485 call s_icpp_rectangle(i, patch_id_fp, q_prim_vf)
486 ! Swept line patch
487 elseif (patch_icpp(i)%geometry == 4) then
488 call s_icpp_sweep_line(i, patch_id_fp, q_prim_vf)
489 ! Elliptical patch
490 elseif (patch_icpp(i)%geometry == 5) then
491 call s_icpp_ellipse(i, patch_id_fp, q_prim_vf)
492 ! Unimplemented patch (formerly isentropic vortex)
493 elseif (patch_icpp(i)%geometry == 6) then
494 call s_mpi_abort('This used to be the isentropic vortex patch, '// &
495 'which no longer exists. See Examples. Exiting.')
496 ! Spherical Harmonic Patch
497 elseif (patch_icpp(i)%geometry == 14) then
498 call s_icpp_spherical_harmonic(i, patch_id_fp, q_prim_vf)
499 ! Spiral patch
500 elseif (patch_icpp(i)%geometry == 17) then
501 call s_icpp_spiral(i, patch_id_fp, q_prim_vf)
502 ! Modified circular patch
503 elseif (patch_icpp(i)%geometry == 18) then
504 call s_icpp_varcircle(i, patch_id_fp, q_prim_vf)
505 ! TaylorGreen vortex patch
506 elseif (patch_icpp(i)%geometry == 20) then
507 call s_icpp_2d_taylorgreen_vortex(i, patch_id_fp, q_prim_vf)
508 ! STL patch
509 elseif (patch_icpp(i)%geometry == 21) then
510 call s_icpp_model(i, patch_id_fp, q_prim_vf)
511 end if
512 !> @}
513 end do
514
515 ! 1D Patch Geometries
516 else
517
518 do i = 1, num_patches
519
520 if (proc_rank == 0) then
521 print *, 'Processing patch', i
522 end if
523
524 ! Line segment patch
525 if (patch_icpp(i)%geometry == 1) then
526 call s_icpp_line_segment(i, patch_id_fp, q_prim_vf)
527 ! 1d analytical
528 elseif (patch_icpp(i)%geometry == 16) then
529 call s_icpp_1d_bubble_pulse(i, patch_id_fp, q_prim_vf)
530 end if
531 end do
532
533 end if
534
535 end subroutine s_apply_icpp_patches
536
537 !> The line segment patch is a 1D geometry that may be used,
538 !! for example, in creating a Riemann problem. The geometry
539 !! of the patch is well-defined when its centroid and length
540 !! in the x-coordinate direction are provided. Note that the
541 !! line segment patch DOES NOT allow for the smearing of its
542 !! boundaries.
543 !! @param patch_id patch identifier
544 !! @param patch_id_fp Array to track patch ids
545 !! @param q_prim_vf Array of primitive variables
546 subroutine s_icpp_line_segment(patch_id, patch_id_fp, q_prim_vf)
547
548 integer, intent(in) :: patch_id
549#ifdef MFC_MIXED_PRECISION
550 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
551#else
552 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
553#endif
554 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
555
556 ! Generic loop iterators
557 integer :: i, j, k
558
559 ! Placeholders for the cell boundary values
560 real(wp) :: pi_inf, gamma, lit_gamma
561 integer :: xRows, yRows, nRows, iix, iiy, max_files
562# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
563 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
564# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
565 real(wp) :: x_len, x_step, y_len, y_step
566# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
567 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
568# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
569 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
570# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
571 real(wp) :: delta_x, delta_y
572# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
573 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
574# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
575 character(len=200) :: errmsg
576# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
577 real(wp), allocatable :: stored_values(:, :, :)
578# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
579 real(wp), allocatable :: x_coords(:), y_coords(:)
580# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
581 logical :: files_loaded = .false.
582# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
583 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
584# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
585 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
586# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
587 character(len=20) :: file_num_str ! For storing the file number as a string
588# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
589 character(len=20) :: zeros_part ! For the trailing zeros part
590# 210 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
591 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
592 ! Place any declaration of intermediate variables here
593# 211 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
594 real(wp) :: x_mid_diffu, width_sq, profile_shape, temp, molar_mass_inv, y1, y2, y3, y4
595
596 pi_inf = pi_infs(1)
597 gamma = gammas(1)
598 lit_gamma = gs_min(1)
599 j = 0
600 k = 0
601
602 ! Transferring the line segment's centroid and length information
603 x_centroid = patch_icpp(patch_id)%x_centroid
604 length_x = patch_icpp(patch_id)%length_x
605
606 ! Computing the beginning and end x-coordinates of the line segment
607 ! based on its centroid and length
608 x_boundary%beg = x_centroid - 0.5_wp*length_x
609 x_boundary%end = x_centroid + 0.5_wp*length_x
610
611 ! Since the line segment patch does not allow for its boundaries to
612 ! be smoothed out, the pseudo volume fraction is set to 1 to ensure
613 ! that only the current patch contributes to the fluid state in the
614 ! cells that this patch covers.
615 eta = 1._wp
616
617 ! Checking whether the line segment covers a particular cell in the
618 ! domain and verifying whether the current patch has the permission
619 ! to write to that cell. If both queries check out, the primitive
620 ! variables of the current patch are assigned to this cell.
621 do i = 0, m
622 if (x_boundary%beg <= x_cc(i) .and. &
623 x_boundary%end >= x_cc(i) .and. &
624 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, 0, 0))) then
625
626 call s_assign_patch_primitive_variables(patch_id, i, 0, 0, &
627 eta, q_prim_vf, patch_id_fp)
628
629
630
631 ! check if this should load a hardcoded patch
632 if (patch_icpp(patch_id)%hcid /= dflt_int) then
633 select case (patch_icpp(patch_id)%hcid)
634# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
635 case (150) ! 1D Smooth Alfven Case for MHD
636# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
637 ! velocity
638# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
639 q_prim_vf(momxb + 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
640# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
641 q_prim_vf(momxb + 2)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
642# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
643
644# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
645 ! magnetic field
646# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
647 q_prim_vf(b_idx%end - 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
648# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
649 q_prim_vf(b_idx%end)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
650# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
651
652# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
653 case (170)
654# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
655 ! This hardcoded case can be used to start a simulation with initial conditions given from a known 1D profile (e.g. Cantera, SDtoolbox)
656# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
657
658# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
659 if (.not. files_loaded) then
660# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
661 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
662# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
663 do f = 1, max_files
664# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
665 write (file_num_str, '(I0)') f
666# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
667 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
668# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
669 end do
670# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
671
672# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
673 ! Common file reading setup
674# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
675 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
676# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
677 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
678# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
679
680# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
681 select case (num_dims)
682# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
683 case (1, 2) ! 1D and 2D cases are similar
684# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
685 ! Count lines
686# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
687 line_count = 0
688# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
689 do
690# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
691 read (unit2, *, iostat=ios2) dummy_x, dummy_y
692# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
693 if (ios2 /= 0) exit
694# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
695 line_count = line_count + 1
696# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
697 end do
698# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
699 close (unit2)
700# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
701
702# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
703 xrows = line_count
704# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
705 yrows = 1
706# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
707 index_x = 0
708# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
709 if (num_dims == 2) index_x = i
710# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
711#ifdef MFC_DEBUG
712# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
713 block
714# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
715 use iso_fortran_env, only: output_unit
716# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
717
718# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
719 print *, 'm_icpp_patches.fpp:250: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
720# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
721
722# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
723 call flush (output_unit)
724# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
725 end block
726# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
727#endif
728# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
729 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
730# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
731
732# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
733
734# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
735
736# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
737#if defined(MFC_OpenACC)
738# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
739!$acc enter data create(x_coords, stored_values)
740# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
741#elif defined(MFC_OpenMP)
742# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
743!$omp target enter data map(always,alloc:x_coords, stored_values)
744# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
745#endif
746# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
747
748# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
749 ! Read data from all files
750# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
751 do f = 1, max_files
752# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
753 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
754# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
755 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
756# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
757
758# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
759 do iter = 1, xrows
760# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
761 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
762# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
763 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
764# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
765 end do
766# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
767 close (unit)
768# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
769 end do
770# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
771
772# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
773 ! Calculate offsets
774# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
775 domain_xstart = x_coords(1)
776# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
777 x_step = x_cc(1) - x_cc(0)
778# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
779 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
780# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
781 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
782# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
783 global_offset_x = nint(abs(delta_x)/x_step)
784# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
785
786# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
787 case (3) ! 3D case - determine grid structure
788# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
789 ! Find yRows by counting rows with same x
790# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
791 read (unit2, *, iostat=ios2) x0, y0, dummy_z
792# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
793 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
794# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
795
796# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
797 yrows = 1
798# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
799 do
800# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
801 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
802# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
803 if (ios2 /= 0) exit
804# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
805 if (dummy_x == x0 .and. dummy_y /= y0) then
806# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
807 yrows = yrows + 1
808# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
809 else
810# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
811 exit
812# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
813 end if
814# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
815 end do
816# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
817 close (unit2)
818# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
819
820# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
821 ! Count total rows
822# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
823 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
824# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
825 nrows = 0
826# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
827 do
828# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
829 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
830# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
831 if (ios2 /= 0) exit
832# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
833 nrows = nrows + 1
834# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
835 end do
836# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
837 close (unit2)
838# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
839
840# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
841 xrows = nrows/yrows
842# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
843#ifdef MFC_DEBUG
844# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
845 block
846# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
847 use iso_fortran_env, only: output_unit
848# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
849
850# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
851 print *, 'm_icpp_patches.fpp:250: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
852# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
853
854# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
855 call flush (output_unit)
856# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
857 end block
858# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
859#endif
860# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
861 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
862# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
863
864# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
865
866# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
867
868# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
869
870# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
871#if defined(MFC_OpenACC)
872# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
873!$acc enter data create(x_coords, y_coords, stored_values)
874# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
875#elif defined(MFC_OpenMP)
876# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
877!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
878# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
879#endif
880# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
881 index_x = i
882# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
883 index_y = j
884# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
885
886# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
887 ! Read all files
888# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
889 do f = 1, max_files
890# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
891 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
892# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
893 if (ios /= 0) then
894# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
895 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
896# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
897 cycle
898# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
899 end if
900# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
901
902# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
903 iter = 0
904# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
905 do iix = 1, xrows
906# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
907 do iiy = 1, yrows
908# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
909 iter = iter + 1
910# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
911 if (f == 1) then
912# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
913 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
914# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
915 else
916# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
917 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
918# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
919 end if
920# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
921 if (ios /= 0) call s_mpi_abort("Error reading data")
922# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
923 end do
924# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
925 end do
926# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
927 close (unit)
928# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
929 end do
930# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
931
932# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
933 ! Calculate offsets
934# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
935 x_step = x_cc(1) - x_cc(0)
936# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
937 y_step = y_cc(1) - y_cc(0)
938# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
939 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
940# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
941 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
942# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
943 global_offset_x = nint(abs(delta_x)/x_step)
944# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
945 global_offset_y = nint(abs(delta_y)/y_step)
946# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
947 end select
948# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
949
950# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
951 files_loaded = .true.
952# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
953 end if
954# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
955
956# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
957 ! Data assignment
958# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
959 select case (num_dims)
960# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
961 case (1)
962# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
963 idx = i + 1 + global_offset_x
964# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
965 do f = 1, sys_size
966# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
967 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
968# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
969 end do
970# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
971
972# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
973 case (2)
974# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
975 idx = i + 1 + global_offset_x - index_x
976# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
977 do f = 1, sys_size - 1
978# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
979 jump = merge(1, 0, f >= momxe)
980# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
981 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
982# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
983 end do
984# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
985 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
986# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
987
988# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
989 case (3)
990# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
991 idx = i + 1 + global_offset_x - index_x
992# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
993 idy = j + 1 + global_offset_y - index_y
994# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
995 do f = 1, sys_size - 1
996# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
997 jump = merge(1, 0, f >= momxe)
998# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
999 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
1000# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1001 end do
1002# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1003 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
1004# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1005 end select
1006# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1007
1008# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1009 case (180)
1010# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1011 ! This is patch is hard-coded for test suite optimization used in the
1012# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1013 ! 1D_shuoser cases: "patch_icpp(2)%alpha_rho(1)": "1 + 0.2*sin(5*x)"
1014# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1015 if (patch_id == 2) then
1016# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1017 q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.2*sin(5*x_cc(i))
1018# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1019 end if
1020# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1021
1022# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1023 case (181)
1024# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1025 ! This is patch is hard-coded for test suite optimization used in the
1026# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1027 ! 1D_titarevtorro cases: "patch_icpp(2)%alpha_rho(1)": "1 + 0.1*sin(20*x*pi)"
1028# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1029 q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.1*sin(20*x_cc(i)*pi)
1030# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1031
1032# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1033 case (182)
1034# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1035 ! This patch is a hard-coded for test suite optimization (multiple component diffusion)
1036# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1037 x_mid_diffu = 0.05_wp/2.0_wp
1038# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1039 width_sq = (2.5_wp*10.0_wp**(-3.0_wp))**2
1040# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1041 profile_shape = 1.0_wp - 0.5_wp*exp(-(x_cc(i) - x_mid_diffu)**2/width_sq)
1042# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1043 q_prim_vf(momxb)%sf(i, 0, 0) = 0.0_wp
1044# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1045 q_prim_vf(e_idx)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5
1046# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1047 q_prim_vf(advxb)%sf(i, 0, 0) = 1.0_wp
1048# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1049
1050# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1051 y1 = (0.195_wp - 0.142_wp)*profile_shape + 0.142_wp
1052# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1053 y2 = (0.0_wp - 0.1_wp)*profile_shape + 0.1_wp
1054# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1055 y3 = (0.214_wp - 0.0_wp)*profile_shape + 0.0_wp
1056# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1057 y4 = (0.591_wp - 0.758_wp)*profile_shape + 0.758_wp
1058# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1059
1060# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1061 q_prim_vf(chemxb)%sf(i, 0, 0) = y1
1062# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1063 q_prim_vf(chemxb + 1)%sf(i, 0, 0) = y2
1064# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1065 q_prim_vf(chemxb + 2)%sf(i, 0, 0) = y3
1066# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1067 q_prim_vf(chemxb + 3)%sf(i, 0, 0) = y4
1068# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1069
1070# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1071 temp = (320.0_wp - 1350.0_wp)*profile_shape + 1350.0_wp
1072# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1073
1074# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1075 molar_mass_inv = y1/31.998_wp + &
1076# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1077 y2/18.01508_wp + &
1078# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1079 y3/16.04256_wp + &
1080# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1081 y4/28.0134_wp
1082# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1083
1084# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1085 q_prim_vf(contxb)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5/(temp*8.3144626_wp*1000.0_wp*molar_mass_inv)
1086# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1087
1088# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1089 case default
1090# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1091 call s_int_to_str(patch_id, istr)
1092# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1093 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
1094# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1095 end select
1096# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1097
1098 end if
1099
1100 ! Updating the patch identities bookkeeping variable
1101 if (1._wp - eta < sgm_eps) patch_id_fp(i, 0, 0) = patch_id
1102
1103 end if
1104 end do
1105 if (allocated(stored_values)) then
1106# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1107#ifdef MFC_DEBUG
1108# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1109 block
1110# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1111 use iso_fortran_env, only: output_unit
1112# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1113
1114# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1115 print *, 'm_icpp_patches.fpp:258: ', '@:DEALLOCATE(stored_values)'
1116# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1117
1118# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1119 call flush (output_unit)
1120# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1121 end block
1122# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1123#endif
1124# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1125
1126# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1127#if defined(MFC_OpenACC)
1128# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1129!$acc exit data delete(stored_values)
1130# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1131#elif defined(MFC_OpenMP)
1132# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1133!$omp target exit data map(release:stored_values)
1134# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1135#endif
1136# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1137 deallocate (stored_values)
1138# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1139#ifdef MFC_DEBUG
1140# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1141 block
1142# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1143 use iso_fortran_env, only: output_unit
1144# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1145
1146# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1147 print *, 'm_icpp_patches.fpp:258: ', '@:DEALLOCATE(x_coords)'
1148# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1149
1150# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1151 call flush (output_unit)
1152# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1153 end block
1154# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1155#endif
1156# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1157
1158# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1159#if defined(MFC_OpenACC)
1160# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1161!$acc exit data delete(x_coords)
1162# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1163#elif defined(MFC_OpenMP)
1164# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1165!$omp target exit data map(release:x_coords)
1166# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1167#endif
1168# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1169 deallocate (x_coords)
1170# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1171 end if
1172# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1173
1174# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1175 if (allocated(y_coords)) then
1176# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1177#ifdef MFC_DEBUG
1178# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1179 block
1180# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1181 use iso_fortran_env, only: output_unit
1182# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1183
1184# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1185 print *, 'm_icpp_patches.fpp:258: ', '@:DEALLOCATE(y_coords)'
1186# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1187
1188# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1189 call flush (output_unit)
1190# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1191 end block
1192# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1193#endif
1194# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1195
1196# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1197#if defined(MFC_OpenACC)
1198# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1199!$acc exit data delete(y_coords)
1200# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1201#elif defined(MFC_OpenMP)
1202# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1203!$omp target exit data map(release:y_coords)
1204# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1205#endif
1206# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1207 deallocate (y_coords)
1208# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1209 end if
1210
1211 end subroutine s_icpp_line_segment
1212
1213 !> The spiral patch is a 2D geometry that may be used, The geometry
1214 !! of the patch is well-defined when its centroid and radius
1215 !! are provided. Note that the circular patch DOES allow for
1216 !! the smoothing of its boundary.
1217 !! @param patch_id patch identifier
1218 !! @param patch_id_fp Array to track patch ids
1219 !! @param q_prim_vf Array of primitive variables
1220 impure subroutine s_icpp_spiral(patch_id, patch_id_fp, q_prim_vf)
1221
1222 integer, intent(in) :: patch_id
1223#ifdef MFC_MIXED_PRECISION
1224 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
1225#else
1226 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
1227#endif
1228 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
1229
1230 integer :: i, j, k !< Generic loop iterators
1231 real(wp) :: th, thickness, nturns, mya
1232 real(wp) :: spiral_x_min, spiral_x_max, spiral_y_min, spiral_y_max
1233 integer :: xrows, yrows, nrows, iix, iiy, max_files
1234# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1235 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
1236# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1237 real(wp) :: x_len, x_step, y_len, y_step
1238# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1239 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
1240# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1241 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
1242# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1243 real(wp) :: delta_x, delta_y
1244# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1245 character(len=100), dimension(sys_size) :: filenames ! Arrays to store all data from files
1246# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1247 character(len=200) :: errmsg
1248# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1249 real(wp), allocatable :: stored_values(:, :, :)
1250# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1251 real(wp), allocatable :: x_coords(:), y_coords(:)
1252# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1253 logical :: files_loaded = .false.
1254# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1255 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
1256# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1257 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
1258# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1259 character(len=20) :: file_num_str ! For storing the file number as a string
1260# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1261 character(len=20) :: zeros_part ! For the trailing zeros part
1262# 282 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1263 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
1264 ! Place any declaration of intermediate variables here
1265# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1266 real(wp) :: eps, eps_mhd, c_mhd
1267# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1268 real(wp) :: r, rmax, gam, umax, p0
1269# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1270 real(wp) :: rhoh, rhol, pref, pint, h, lam, wl, amp, inth, intl, alph
1271# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1272 real(wp) :: factor
1273# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1274 real(wp) :: r0, alpha, r2
1275# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1276 real(wp) :: sina, cosa
1277# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1278
1279# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1280 real(wp) :: r_sq
1281# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1282
1283# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1284 ! # 207
1285# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1286 real(wp) :: sigma, gauss1, gauss2
1287# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1288 ! # 208
1289# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1290 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
1291# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1292
1293# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1294 eps = 1.e-9_wp
1295
1296 ! Transferring the circular patch's radius, centroid, smearing patch
1297 ! identity and smearing coefficient information
1298 x_centroid = patch_icpp(patch_id)%x_centroid
1299 y_centroid = patch_icpp(patch_id)%y_centroid
1300 mya = patch_icpp(patch_id)%radius
1301 thickness = patch_icpp(patch_id)%length_x
1302 nturns = patch_icpp(patch_id)%length_y
1303
1304 !
1305 logic_grid = 0
1306 do k = 0, int(m*91*nturns)
1307 th = k/real(int(m*91._wp*nturns))*nturns*2._wp*pi
1308
1309 spiral_x_min = minval((/f_r(th, 0.0_wp, mya)*cos(th), &
1310 f_r(th, thickness, mya)*cos(th)/))
1311 spiral_y_min = minval((/f_r(th, 0.0_wp, mya)*sin(th), &
1312 f_r(th, thickness, mya)*sin(th)/))
1313
1314 spiral_x_max = maxval((/f_r(th, 0.0_wp, mya)*cos(th), &
1315 f_r(th, thickness, mya)*cos(th)/))
1316 spiral_y_max = maxval((/f_r(th, 0.0_wp, mya)*sin(th), &
1317 f_r(th, thickness, mya)*sin(th)/))
1318
1319 do j = 0, n; do i = 0, m;
1320 if ((x_cc(i) > spiral_x_min) .and. (x_cc(i) < spiral_x_max) .and. &
1321 (y_cc(j) > spiral_y_min) .and. (y_cc(j) < spiral_y_max)) then
1322 logic_grid(i, j, 0) = 1
1323 end if
1324 end do; end do
1325 end do
1326
1327 do j = 0, n
1328 do i = 0, m
1329 if ((logic_grid(i, j, 0) == 1)) then
1330 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
1331 eta, q_prim_vf, patch_id_fp)
1332
1333
1334 if (patch_icpp(patch_id)%hcid /= dflt_int) then
1335
1336# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1337 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
1338# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1339
1340# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1341 case (200)
1342# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1343 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
1344# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1345 ! Volume Fractions
1346# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1347 q_prim_vf(advxb)%sf(i, j, 0) = eps
1348# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1349 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
1350# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1351 ! Denssities
1352# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1353 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
1354# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1355 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
1356# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1357 ! Pressure
1358# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1359 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
1360# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1361 end if
1362# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1363 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
1364# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1365 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
1366# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1367 rmax = 0.2_wp
1368# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1369
1370# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1371 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
1372# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1373 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
1374# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1375 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
1376# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1377
1378# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1379 if (r < rmax) then
1380# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1381 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
1382# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1383 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
1384# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1385 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
1386# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1387 else if (r < 2*rmax) then
1388# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1389 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
1390# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1391 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
1392# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1393 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
1394# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1395 else
1396# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1397 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
1398# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1399 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
1400# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1401 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
1402# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1403 end if
1404# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1405 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
1406# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1407 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
1408# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1409 rmax = 0.2_wp
1410# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1411
1412# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1413 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
1414# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1415 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
1416# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1417 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
1418# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1419
1420# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1421 if (r < rmax) then
1422# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1423 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
1424# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1425 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
1426# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1427 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
1428# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1429 else if (r < 2*rmax) then
1430# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1431 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
1432# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1433 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
1434# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1435 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
1436# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1437 else
1438# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1439 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
1440# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1441 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
1442# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1443 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
1444# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1445 end if
1446# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1447
1448# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1449 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
1450# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1451 case (204) ! Rayleigh-Taylor instability
1452# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1453 rhoh = 3._wp
1454# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1455 rhol = 1._wp
1456# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1457 pref = 1.e5_wp
1458# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1459 pint = pref
1460# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1461 h = 0.7_wp
1462# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1463 lam = 0.2_wp
1464# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1465 wl = 2._wp*pi/lam
1466# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1467 amp = 0.05_wp/wl
1468# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1469
1470# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1471 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
1472# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1473
1474# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1475 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
1476# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1477
1478# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1479 if (alph < eps) alph = eps
1480# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1481 if (alph > 1._wp - eps) alph = 1._wp - eps
1482# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1483
1484# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1485 if (y_cc(j) > inth) then
1486# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1487 q_prim_vf(advxb)%sf(i, j, 0) = alph
1488# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1489 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
1490# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1491 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
1492# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1493 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
1494# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1495 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
1496# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1497 else
1498# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1499 q_prim_vf(advxb)%sf(i, j, 0) = alph
1500# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1501 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
1502# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1503 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
1504# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1505 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
1506# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1507 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
1508# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1509 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
1510# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1511 end if
1512# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1513
1514# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1515 case (205) ! 2D lung wave interaction problem
1516# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1517 h = 0.0_wp !non dim origin y
1518# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1519 lam = 1.0_wp !non dim lambda
1520# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1521 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
1522# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1523
1524# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1525 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
1526# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1527
1528# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1529 if (y_cc(j) > inth) then
1530# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1531 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
1532# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1533 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
1534# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1535 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
1536# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1537 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
1538# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1539 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
1540# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1541 end if
1542# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1543
1544# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1545 case (206) ! 2D lung wave interaction problem - horizontal domain
1546# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1547 h = 0.0_wp !non dim origin y
1548# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1549 lam = 1.0_wp !non dim lambda
1550# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1551 amp = patch_icpp(patch_id)%a(2)
1552# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1553
1554# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1555 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
1556# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1557
1558# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1559 if (x_cc(i) > intl) then !this is the liquid
1560# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1561 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
1562# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1563 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
1564# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1565 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
1566# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1567 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
1568# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1569 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
1570# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1571 end if
1572# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1573
1574# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1575 case (207) ! Kelvin Helmholtz Instability
1576# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1577 sigma = 0.05_wp/sqrt(2.0_wp)
1578# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1579 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
1580# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1581 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
1582# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1583 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
1584# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1585 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
1586# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1587
1588# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1589 case (208) ! Richtmeyer Meshkov Instability
1590# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1591 lam = 1.0_wp
1592# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1593 eps = 1.0e-6_wp
1594# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1595 ei = 5.0_wp
1596# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1597 ! Smoothening function to smooth out sharp discontinuity in the interface
1598# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1599 if (x_cc(i) <= 0.7_wp*lam) then
1600# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1601 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
1602# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1603 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
1604# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1605 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
1606# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1607 alpha_sf6 = 1.0_wp - alpha_air
1608# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1609 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
1610# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1611 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
1612# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1613 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
1614# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1615 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
1616# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1617 end if
1618# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1619
1620# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1621 case (250) ! MHD Orszag-Tang vortex
1622# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1623 ! gamma = 5/3
1624# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1625 ! rho = 25/(36*pi)
1626# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1627 ! p = 5/(12*pi)
1628# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1629 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
1630# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1631 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
1632# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1633
1634# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1635 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
1636# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1637 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
1638# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1639
1640# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1641 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
1642# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1643 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
1644# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1645
1646# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1647 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
1648# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1649 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
1650# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1651 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
1652# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1653 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
1654# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1655 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
1656# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1657 ! Linear interpolation between r=0.08 and r=1.0
1658# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1659 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
1660# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1661 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
1662# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1663 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
1664# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1665 else
1666# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1667 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
1668# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1669 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
1670# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1671 end if
1672# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1673
1674# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1675 ! case 252 is for the 2D MHD Rotor problem
1676# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1677 case (252) ! 2D MHD Rotor Problem
1678# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1679 ! Ambient conditions are set in the JSON file.
1680# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1681 ! This case imposes the dense, rotating cylinder.
1682# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1683 !
1684# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1685 ! gamma = 1.4
1686# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1687 ! Ambient medium (r > 0.1):
1688# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1689 ! rho = 1, p = 1, v = 0, B = (1,0,0)
1690# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1691 ! Rotor (r <= 0.1):
1692# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1693 ! rho = 10, p = 1
1694# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1695 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
1696# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1697
1698# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1699 ! Calculate distance squared from the center
1700# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1701 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
1702# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1703
1704# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1705 ! inner radius of 0.1
1706# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1707 if (r_sq <= 0.1**2) then
1708# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1709 ! -- Inside the rotor --
1710# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1711 ! Set density uniformly to 10
1712# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1713 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
1714# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1715
1716# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1717 ! Set vup constant rotation of rate v=2
1718# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1719 ! v_x = -omega * (y - y_c)
1720# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1721 ! v_y = omega * (x - x_c)
1722# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1723 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
1724# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1725 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
1726# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1727
1728# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1729 ! taper width of 0.015
1730# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1731 else if (r_sq <= 0.115**2) then
1732# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1733 ! linearly smooth the function between r = 0.1 and 0.115
1734# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1735 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
1736# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1737
1738# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1739 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
1740# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1741 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
1742# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1743 end if
1744# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1745
1746# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1747 case (253) ! MHD Smooth Magnetic Vortex
1748# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1749 ! Section 5.2 of
1750# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1751 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
1752# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1753 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
1754# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1755
1756# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1757 ! velocity
1758# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1759 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
1760# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1761 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
1762# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1763
1764# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1765 ! magnetic field
1766# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1767 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
1768# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1769 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
1770# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1771
1772# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1773 ! pressure
1774# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1775 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
1776# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1777
1778# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1779 case (260) ! Gaussian Divergence Pulse
1780# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1781 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
1782# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1783 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
1784# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1785 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
1786# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1787 ! ψ is initialized to zero everywhere.
1788# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1789
1790# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1791 eps_mhd = patch_icpp(patch_id)%a(2)
1792# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1793 sigma = patch_icpp(patch_id)%a(3)
1794# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1795 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
1796# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1797
1798# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1799 ! B-field
1800# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1801 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
1802# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1803
1804# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1805 case (261) ! Blob
1806# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1807 r0 = 1._wp/sqrt(8._wp)
1808# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1809 r2 = x_cc(i)**2 + y_cc(j)**2
1810# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1811 r = sqrt(r2)
1812# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1813 alpha = r/r0
1814# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1815 if (alpha < 1) then
1816# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1817 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
1818# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1819 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
1820# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1821 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
1822# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1823 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
1824# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1825 end if
1826# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1827
1828# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1829 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
1830# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1831 ! rotate by α = atan(2)
1832# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1833 alpha = atan(2._wp)
1834# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1835 cosa = cos(alpha)
1836# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1837 sina = sin(alpha)
1838# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1839 ! projection along shock normal
1840# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1841 r = x_cc(i)*cosa + y_cc(j)*sina
1842# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1843
1844# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1845 if (r <= 0.5_wp) then
1846# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1847 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
1848# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1849 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
1850# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1851 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
1852# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1853 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
1854# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1855 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
1856# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1857 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
1858# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1859 - (5._wp/sqrt(4._wp*pi))*sina
1860# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1861 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
1862# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1863 + (5._wp/sqrt(4._wp*pi))*cosa
1864# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1865 else
1866# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1867 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
1868# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1869 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
1870# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1871 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
1872# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1873 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
1874# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1875 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
1876# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1877 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
1878# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1879 - (5._wp/sqrt(4._wp*pi))*sina
1880# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1881 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
1882# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1883 + (5._wp/sqrt(4._wp*pi))*cosa
1884# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1885 end if
1886# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1887 ! v^z and B^z remain zero by default
1888# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1889
1890# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1891 case (270)
1892# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1893 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
1894# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1895
1896# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1897 if (.not. files_loaded) then
1898# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1899 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
1900# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1901 do f = 1, max_files
1902# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1903 write (file_num_str, '(I0)') f
1904# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1905 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
1906# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1907 end do
1908# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1909
1910# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1911 ! Common file reading setup
1912# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1913 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
1914# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1915 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
1916# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1917
1918# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1919 select case (num_dims)
1920# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1921 case (1, 2) ! 1D and 2D cases are similar
1922# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1923 ! Count lines
1924# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1925 line_count = 0
1926# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1927 do
1928# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1929 read (unit2, *, iostat=ios2) dummy_x, dummy_y
1930# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1931 if (ios2 /= 0) exit
1932# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1933 line_count = line_count + 1
1934# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1935 end do
1936# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1937 close (unit2)
1938# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1939
1940# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1941 xrows = line_count
1942# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1943 yrows = 1
1944# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1945 index_x = 0
1946# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1947 if (num_dims == 2) index_x = i
1948# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1949#ifdef MFC_DEBUG
1950# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1951 block
1952# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1953 use iso_fortran_env, only: output_unit
1954# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1955
1956# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1957 print *, 'm_icpp_patches.fpp:324: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
1958# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1959
1960# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1961 call flush (output_unit)
1962# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1963 end block
1964# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1965#endif
1966# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1967 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
1968# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1969
1970# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1971
1972# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1973
1974# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1975#if defined(MFC_OpenACC)
1976# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1977!$acc enter data create(x_coords, stored_values)
1978# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1979#elif defined(MFC_OpenMP)
1980# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1981!$omp target enter data map(always,alloc:x_coords, stored_values)
1982# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1983#endif
1984# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1985
1986# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1987 ! Read data from all files
1988# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1989 do f = 1, max_files
1990# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1991 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
1992# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1993 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
1994# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1995
1996# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1997 do iter = 1, xrows
1998# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
1999 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
2000# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2001 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
2002# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2003 end do
2004# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2005 close (unit)
2006# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2007 end do
2008# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2009
2010# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2011 ! Calculate offsets
2012# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2013 domain_xstart = x_coords(1)
2014# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2015 x_step = x_cc(1) - x_cc(0)
2016# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2017 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
2018# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2019 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
2020# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2021 global_offset_x = nint(abs(delta_x)/x_step)
2022# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2023
2024# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2025 case (3) ! 3D case - determine grid structure
2026# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2027 ! Find yRows by counting rows with same x
2028# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2029 read (unit2, *, iostat=ios2) x0, y0, dummy_z
2030# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2031 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
2032# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2033
2034# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2035 yrows = 1
2036# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2037 do
2038# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2039 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
2040# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2041 if (ios2 /= 0) exit
2042# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2043 if (dummy_x == x0 .and. dummy_y /= y0) then
2044# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2045 yrows = yrows + 1
2046# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2047 else
2048# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2049 exit
2050# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2051 end if
2052# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2053 end do
2054# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2055 close (unit2)
2056# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2057
2058# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2059 ! Count total rows
2060# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2061 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
2062# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2063 nrows = 0
2064# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2065 do
2066# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2067 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
2068# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2069 if (ios2 /= 0) exit
2070# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2071 nrows = nrows + 1
2072# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2073 end do
2074# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2075 close (unit2)
2076# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2077
2078# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2079 xrows = nrows/yrows
2080# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2081#ifdef MFC_DEBUG
2082# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2083 block
2084# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2085 use iso_fortran_env, only: output_unit
2086# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2087
2088# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2089 print *, 'm_icpp_patches.fpp:324: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
2090# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2091
2092# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2093 call flush (output_unit)
2094# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2095 end block
2096# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2097#endif
2098# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2099 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
2100# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2101
2102# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2103
2104# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2105
2106# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2107
2108# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2109#if defined(MFC_OpenACC)
2110# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2111!$acc enter data create(x_coords, y_coords, stored_values)
2112# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2113#elif defined(MFC_OpenMP)
2114# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2115!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
2116# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2117#endif
2118# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2119 index_x = i
2120# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2121 index_y = j
2122# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2123
2124# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2125 ! Read all files
2126# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2127 do f = 1, max_files
2128# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2129 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
2130# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2131 if (ios /= 0) then
2132# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2133 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
2134# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2135 cycle
2136# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2137 end if
2138# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2139
2140# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2141 iter = 0
2142# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2143 do iix = 1, xrows
2144# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2145 do iiy = 1, yrows
2146# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2147 iter = iter + 1
2148# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2149 if (f == 1) then
2150# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2151 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
2152# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2153 else
2154# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2155 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
2156# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2157 end if
2158# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2159 if (ios /= 0) call s_mpi_abort("Error reading data")
2160# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2161 end do
2162# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2163 end do
2164# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2165 close (unit)
2166# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2167 end do
2168# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2169
2170# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2171 ! Calculate offsets
2172# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2173 x_step = x_cc(1) - x_cc(0)
2174# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2175 y_step = y_cc(1) - y_cc(0)
2176# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2177 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
2178# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2179 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
2180# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2181 global_offset_x = nint(abs(delta_x)/x_step)
2182# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2183 global_offset_y = nint(abs(delta_y)/y_step)
2184# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2185 end select
2186# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2187
2188# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2189 files_loaded = .true.
2190# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2191 end if
2192# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2193
2194# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2195 ! Data assignment
2196# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2197 select case (num_dims)
2198# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2199 case (1)
2200# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2201 idx = i + 1 + global_offset_x
2202# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2203 do f = 1, sys_size
2204# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2205 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
2206# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2207 end do
2208# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2209
2210# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2211 case (2)
2212# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2213 idx = i + 1 + global_offset_x - index_x
2214# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2215 do f = 1, sys_size - 1
2216# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2217 jump = merge(1, 0, f >= momxe)
2218# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2219 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
2220# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2221 end do
2222# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2223 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
2224# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2225
2226# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2227 case (3)
2228# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2229 idx = i + 1 + global_offset_x - index_x
2230# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2231 idy = j + 1 + global_offset_y - index_y
2232# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2233 do f = 1, sys_size - 1
2234# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2235 jump = merge(1, 0, f >= momxe)
2236# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2237 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
2238# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2239 end do
2240# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2241 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
2242# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2243 end select
2244# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2245
2246# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2247 case (280)
2248# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2249 ! This is patch is hard-coded for test suite optimization used in the
2250# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2251 ! 2D_isentropicvortex case:
2252# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2253 ! This analytic patch uses geometry 2
2254# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2255 if (patch_id == 1) then
2256# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2257 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
2258# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2259 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
2260# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2261 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
2262# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2263 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
2264# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2265 end if
2266# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2267
2268# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2269 case (281)
2270# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2271 ! This is patch is hard-coded for test suite optimization used in the
2272# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2273 ! 2D_acoustic_pulse case:
2274# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2275 ! This analytic patch uses geometry 2
2276# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2277 if (patch_id == 2) then
2278# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2279 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
2280# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2281 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
2282# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2283 end if
2284# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2285
2286# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2287 case (282)
2288# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2289 ! This is patch is hard-coded for test suite optimization used in the
2290# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2291 ! 2D_zero_circ_vortex case:
2292# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2293 ! This analytic patch uses geometry 2
2294# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2295 if (patch_id == 2) then
2296# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2297 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
2298# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2299 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
2300# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2301 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
2302# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2303 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
2304# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2305 end if
2306# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2307
2308# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2309 case default
2310# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2311 if (proc_rank == 0) then
2312# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2313 call s_int_to_str(patch_id, istr)
2314# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2315 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
2316# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2317 end if
2318# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2319
2320# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2321 end select
2322# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2323
2324 end if
2325
2326 ! Updating the patch identities bookkeeping variable
2327 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
2328 end if
2329 end do
2330 end do
2331 if (allocated(stored_values)) then
2332# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2333#ifdef MFC_DEBUG
2334# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2335 block
2336# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2337 use iso_fortran_env, only: output_unit
2338# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2339
2340# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2341 print *, 'm_icpp_patches.fpp:332: ', '@:DEALLOCATE(stored_values)'
2342# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2343
2344# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2345 call flush (output_unit)
2346# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2347 end block
2348# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2349#endif
2350# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2351
2352# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2353#if defined(MFC_OpenACC)
2354# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2355!$acc exit data delete(stored_values)
2356# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2357#elif defined(MFC_OpenMP)
2358# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2359!$omp target exit data map(release:stored_values)
2360# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2361#endif
2362# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2363 deallocate (stored_values)
2364# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2365#ifdef MFC_DEBUG
2366# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2367 block
2368# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2369 use iso_fortran_env, only: output_unit
2370# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2371
2372# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2373 print *, 'm_icpp_patches.fpp:332: ', '@:DEALLOCATE(x_coords)'
2374# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2375
2376# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2377 call flush (output_unit)
2378# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2379 end block
2380# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2381#endif
2382# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2383
2384# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2385#if defined(MFC_OpenACC)
2386# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2387!$acc exit data delete(x_coords)
2388# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2389#elif defined(MFC_OpenMP)
2390# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2391!$omp target exit data map(release:x_coords)
2392# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2393#endif
2394# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2395 deallocate (x_coords)
2396# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2397 end if
2398# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2399
2400# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2401 if (allocated(y_coords)) then
2402# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2403#ifdef MFC_DEBUG
2404# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2405 block
2406# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2407 use iso_fortran_env, only: output_unit
2408# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2409
2410# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2411 print *, 'm_icpp_patches.fpp:332: ', '@:DEALLOCATE(y_coords)'
2412# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2413
2414# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2415 call flush (output_unit)
2416# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2417 end block
2418# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2419#endif
2420# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2421
2422# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2423#if defined(MFC_OpenACC)
2424# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2425!$acc exit data delete(y_coords)
2426# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2427#elif defined(MFC_OpenMP)
2428# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2429!$omp target exit data map(release:y_coords)
2430# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2431#endif
2432# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2433 deallocate (y_coords)
2434# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2435 end if
2436
2437 end subroutine s_icpp_spiral
2438
2439 !> The circular patch is a 2D geometry that may be used, for
2440 !! example, in creating a bubble or a droplet. The geometry
2441 !! of the patch is well-defined when its centroid and radius
2442 !! are provided. Note that the circular patch DOES allow for
2443 !! the smoothing of its boundary.
2444 !! @param patch_id is the patch identifier
2445 !! @param patch_id_fp Array to track patch ids
2446 !! @param q_prim_vf Array of primitive variables
2447 subroutine s_icpp_circle(patch_id, patch_id_fp, q_prim_vf)
2448
2449 integer, intent(in) :: patch_id
2450#ifdef MFC_MIXED_PRECISION
2451 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
2452#else
2453 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
2454#endif
2455 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
2456
2457 real(wp) :: radius
2458
2459 integer :: i, j, k !< Generic loop iterators
2460 integer :: xRows, yRows, nRows, iix, iiy, max_files
2461# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2462 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
2463# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2464 real(wp) :: x_len, x_step, y_len, y_step
2465# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2466 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
2467# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2468 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
2469# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2470 real(wp) :: delta_x, delta_y
2471# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2472 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
2473# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2474 character(len=200) :: errmsg
2475# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2476 real(wp), allocatable :: stored_values(:, :, :)
2477# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2478 real(wp), allocatable :: x_coords(:), y_coords(:)
2479# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2480 logical :: files_loaded = .false.
2481# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2482 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
2483# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2484 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
2485# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2486 character(len=20) :: file_num_str ! For storing the file number as a string
2487# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2488 character(len=20) :: zeros_part ! For the trailing zeros part
2489# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2490 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
2491 ! Place any declaration of intermediate variables here
2492# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2493 real(wp) :: eps, eps_mhd, C_mhd
2494# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2495 real(wp) :: r, rmax, gam, umax, p0
2496# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2497 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, intL, alph
2498# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2499 real(wp) :: factor
2500# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2501 real(wp) :: r0, alpha, r2
2502# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2503 real(wp) :: sinA, cosA
2504# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2505
2506# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2507 real(wp) :: r_sq
2508# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2509
2510# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2511 ! # 207
2512# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2513 real(wp) :: sigma, gauss1, gauss2
2514# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2515 ! # 208
2516# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2517 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
2518# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2519
2520# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2521 eps = 1.e-9_wp
2522
2523 ! Transferring the circular patch's radius, centroid, smearing patch
2524 ! identity and smearing coefficient information
2525
2526 x_centroid = patch_icpp(patch_id)%x_centroid
2527 y_centroid = patch_icpp(patch_id)%y_centroid
2528 radius = patch_icpp(patch_id)%radius
2529 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
2530 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
2531
2532 ! Initializing the pseudo volume fraction value to 1. The value will
2533 ! be modified as the patch is laid out on the grid, but only in the
2534 ! case that smoothing of the circular patch's boundary is enabled.
2535 eta = 1._wp
2536
2537 ! Checking whether the circle covers a particular cell in the domain
2538 ! and verifying whether the current patch has permission to write to
2539 ! that cell. If both queries check out, the primitive variables of
2540 ! the current patch are assigned to this cell.
2541
2542 do j = 0, n
2543 do i = 0, m
2544
2545 if (patch_icpp(patch_id)%smoothen) then
2546
2547 eta = tanh(smooth_coeff/min(dx, dy)* &
2548 (sqrt((x_cc(i) - x_centroid)**2 &
2549 + (y_cc(j) - y_centroid)**2) &
2550 - radius))*(-0.5_wp) + 0.5_wp
2551
2552 end if
2553
2554 if (((x_cc(i) - x_centroid)**2 &
2555 + (y_cc(j) - y_centroid)**2 <= radius**2 &
2556 .and. &
2557 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
2558 .or. &
2559 patch_id_fp(i, j, 0) == smooth_patch_id) &
2560 then
2561
2562 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
2563 eta, q_prim_vf, patch_id_fp)
2564
2565
2566 if (patch_icpp(patch_id)%hcid /= dflt_int) then
2567
2568# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2569 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
2570# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2571
2572# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2573 case (200)
2574# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2575 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
2576# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2577 ! Volume Fractions
2578# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2579 q_prim_vf(advxb)%sf(i, j, 0) = eps
2580# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2581 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
2582# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2583 ! Denssities
2584# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2585 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
2586# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2587 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
2588# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2589 ! Pressure
2590# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2591 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
2592# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2593 end if
2594# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2595 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
2596# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2597 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
2598# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2599 rmax = 0.2_wp
2600# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2601
2602# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2603 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
2604# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2605 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
2606# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2607 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
2608# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2609
2610# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2611 if (r < rmax) then
2612# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2613 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
2614# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2615 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
2616# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2617 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
2618# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2619 else if (r < 2*rmax) then
2620# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2621 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
2622# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2623 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
2624# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2625 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
2626# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2627 else
2628# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2629 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
2630# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2631 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
2632# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2633 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
2634# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2635 end if
2636# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2637 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
2638# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2639 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
2640# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2641 rmax = 0.2_wp
2642# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2643
2644# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2645 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
2646# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2647 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
2648# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2649 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
2650# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2651
2652# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2653 if (r < rmax) then
2654# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2655 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
2656# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2657 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
2658# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2659 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
2660# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2661 else if (r < 2*rmax) then
2662# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2663 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
2664# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2665 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
2666# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2667 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
2668# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2669 else
2670# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2671 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
2672# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2673 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
2674# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2675 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
2676# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2677 end if
2678# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2679
2680# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2681 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
2682# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2683 case (204) ! Rayleigh-Taylor instability
2684# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2685 rhoh = 3._wp
2686# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2687 rhol = 1._wp
2688# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2689 pref = 1.e5_wp
2690# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2691 pint = pref
2692# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2693 h = 0.7_wp
2694# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2695 lam = 0.2_wp
2696# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2697 wl = 2._wp*pi/lam
2698# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2699 amp = 0.05_wp/wl
2700# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2701
2702# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2703 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
2704# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2705
2706# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2707 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
2708# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2709
2710# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2711 if (alph < eps) alph = eps
2712# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2713 if (alph > 1._wp - eps) alph = 1._wp - eps
2714# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2715
2716# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2717 if (y_cc(j) > inth) then
2718# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2719 q_prim_vf(advxb)%sf(i, j, 0) = alph
2720# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2721 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
2722# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2723 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
2724# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2725 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
2726# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2727 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
2728# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2729 else
2730# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2731 q_prim_vf(advxb)%sf(i, j, 0) = alph
2732# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2733 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
2734# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2735 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
2736# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2737 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
2738# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2739 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
2740# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2741 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
2742# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2743 end if
2744# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2745
2746# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2747 case (205) ! 2D lung wave interaction problem
2748# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2749 h = 0.0_wp !non dim origin y
2750# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2751 lam = 1.0_wp !non dim lambda
2752# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2753 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
2754# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2755
2756# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2757 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
2758# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2759
2760# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2761 if (y_cc(j) > inth) then
2762# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2763 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
2764# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2765 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
2766# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2767 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
2768# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2769 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
2770# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2771 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
2772# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2773 end if
2774# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2775
2776# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2777 case (206) ! 2D lung wave interaction problem - horizontal domain
2778# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2779 h = 0.0_wp !non dim origin y
2780# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2781 lam = 1.0_wp !non dim lambda
2782# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2783 amp = patch_icpp(patch_id)%a(2)
2784# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2785
2786# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2787 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
2788# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2789
2790# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2791 if (x_cc(i) > intl) then !this is the liquid
2792# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2793 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
2794# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2795 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
2796# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2797 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
2798# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2799 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
2800# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2801 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
2802# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2803 end if
2804# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2805
2806# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2807 case (207) ! Kelvin Helmholtz Instability
2808# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2809 sigma = 0.05_wp/sqrt(2.0_wp)
2810# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2811 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
2812# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2813 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
2814# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2815 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
2816# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2817 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
2818# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2819
2820# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2821 case (208) ! Richtmeyer Meshkov Instability
2822# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2823 lam = 1.0_wp
2824# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2825 eps = 1.0e-6_wp
2826# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2827 ei = 5.0_wp
2828# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2829 ! Smoothening function to smooth out sharp discontinuity in the interface
2830# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2831 if (x_cc(i) <= 0.7_wp*lam) then
2832# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2833 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
2834# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2835 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
2836# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2837 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
2838# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2839 alpha_sf6 = 1.0_wp - alpha_air
2840# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2841 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
2842# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2843 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
2844# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2845 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
2846# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2847 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
2848# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2849 end if
2850# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2851
2852# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2853 case (250) ! MHD Orszag-Tang vortex
2854# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2855 ! gamma = 5/3
2856# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2857 ! rho = 25/(36*pi)
2858# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2859 ! p = 5/(12*pi)
2860# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2861 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
2862# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2863 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
2864# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2865
2866# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2867 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
2868# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2869 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
2870# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2871
2872# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2873 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
2874# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2875 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
2876# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2877
2878# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2879 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
2880# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2881 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
2882# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2883 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
2884# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2885 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
2886# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2887 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
2888# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2889 ! Linear interpolation between r=0.08 and r=1.0
2890# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2891 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
2892# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2893 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
2894# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2895 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
2896# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2897 else
2898# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2899 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
2900# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2901 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
2902# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2903 end if
2904# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2905
2906# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2907 ! case 252 is for the 2D MHD Rotor problem
2908# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2909 case (252) ! 2D MHD Rotor Problem
2910# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2911 ! Ambient conditions are set in the JSON file.
2912# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2913 ! This case imposes the dense, rotating cylinder.
2914# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2915 !
2916# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2917 ! gamma = 1.4
2918# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2919 ! Ambient medium (r > 0.1):
2920# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2921 ! rho = 1, p = 1, v = 0, B = (1,0,0)
2922# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2923 ! Rotor (r <= 0.1):
2924# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2925 ! rho = 10, p = 1
2926# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2927 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
2928# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2929
2930# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2931 ! Calculate distance squared from the center
2932# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2933 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
2934# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2935
2936# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2937 ! inner radius of 0.1
2938# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2939 if (r_sq <= 0.1**2) then
2940# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2941 ! -- Inside the rotor --
2942# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2943 ! Set density uniformly to 10
2944# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2945 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
2946# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2947
2948# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2949 ! Set vup constant rotation of rate v=2
2950# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2951 ! v_x = -omega * (y - y_c)
2952# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2953 ! v_y = omega * (x - x_c)
2954# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2955 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
2956# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2957 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
2958# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2959
2960# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2961 ! taper width of 0.015
2962# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2963 else if (r_sq <= 0.115**2) then
2964# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2965 ! linearly smooth the function between r = 0.1 and 0.115
2966# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2967 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
2968# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2969
2970# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2971 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
2972# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2973 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
2974# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2975 end if
2976# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2977
2978# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2979 case (253) ! MHD Smooth Magnetic Vortex
2980# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2981 ! Section 5.2 of
2982# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2983 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
2984# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2985 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
2986# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2987
2988# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2989 ! velocity
2990# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2991 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
2992# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2993 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
2994# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2995
2996# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2997 ! magnetic field
2998# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
2999 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
3000# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3001 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
3002# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3003
3004# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3005 ! pressure
3006# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3007 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
3008# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3009
3010# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3011 case (260) ! Gaussian Divergence Pulse
3012# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3013 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
3014# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3015 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
3016# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3017 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
3018# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3019 ! ψ is initialized to zero everywhere.
3020# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3021
3022# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3023 eps_mhd = patch_icpp(patch_id)%a(2)
3024# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3025 sigma = patch_icpp(patch_id)%a(3)
3026# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3027 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
3028# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3029
3030# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3031 ! B-field
3032# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3033 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
3034# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3035
3036# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3037 case (261) ! Blob
3038# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3039 r0 = 1._wp/sqrt(8._wp)
3040# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3041 r2 = x_cc(i)**2 + y_cc(j)**2
3042# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3043 r = sqrt(r2)
3044# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3045 alpha = r/r0
3046# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3047 if (alpha < 1) then
3048# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3049 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
3050# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3051 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
3052# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3053 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
3054# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3055 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
3056# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3057 end if
3058# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3059
3060# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3061 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
3062# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3063 ! rotate by α = atan(2)
3064# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3065 alpha = atan(2._wp)
3066# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3067 cosa = cos(alpha)
3068# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3069 sina = sin(alpha)
3070# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3071 ! projection along shock normal
3072# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3073 r = x_cc(i)*cosa + y_cc(j)*sina
3074# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3075
3076# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3077 if (r <= 0.5_wp) then
3078# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3079 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
3080# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3081 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
3082# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3083 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
3084# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3085 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
3086# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3087 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
3088# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3089 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
3090# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3091 - (5._wp/sqrt(4._wp*pi))*sina
3092# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3093 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
3094# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3095 + (5._wp/sqrt(4._wp*pi))*cosa
3096# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3097 else
3098# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3099 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
3100# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3101 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
3102# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3103 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
3104# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3105 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
3106# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3107 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
3108# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3109 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
3110# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3111 - (5._wp/sqrt(4._wp*pi))*sina
3112# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3113 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
3114# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3115 + (5._wp/sqrt(4._wp*pi))*cosa
3116# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3117 end if
3118# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3119 ! v^z and B^z remain zero by default
3120# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3121
3122# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3123 case (270)
3124# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3125 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
3126# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3127
3128# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3129 if (.not. files_loaded) then
3130# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3131 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
3132# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3133 do f = 1, max_files
3134# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3135 write (file_num_str, '(I0)') f
3136# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3137 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
3138# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3139 end do
3140# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3141
3142# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3143 ! Common file reading setup
3144# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3145 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
3146# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3147 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
3148# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3149
3150# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3151 select case (num_dims)
3152# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3153 case (1, 2) ! 1D and 2D cases are similar
3154# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3155 ! Count lines
3156# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3157 line_count = 0
3158# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3159 do
3160# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3161 read (unit2, *, iostat=ios2) dummy_x, dummy_y
3162# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3163 if (ios2 /= 0) exit
3164# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3165 line_count = line_count + 1
3166# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3167 end do
3168# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3169 close (unit2)
3170# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3171
3172# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3173 xrows = line_count
3174# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3175 yrows = 1
3176# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3177 index_x = 0
3178# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3179 if (num_dims == 2) index_x = i
3180# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3181#ifdef MFC_DEBUG
3182# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3183 block
3184# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3185 use iso_fortran_env, only: output_unit
3186# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3187
3188# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3189 print *, 'm_icpp_patches.fpp:404: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
3190# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3191
3192# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3193 call flush (output_unit)
3194# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3195 end block
3196# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3197#endif
3198# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3199 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
3200# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3201
3202# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3203
3204# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3205
3206# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3207#if defined(MFC_OpenACC)
3208# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3209!$acc enter data create(x_coords, stored_values)
3210# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3211#elif defined(MFC_OpenMP)
3212# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3213!$omp target enter data map(always,alloc:x_coords, stored_values)
3214# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3215#endif
3216# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3217
3218# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3219 ! Read data from all files
3220# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3221 do f = 1, max_files
3222# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3223 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
3224# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3225 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
3226# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3227
3228# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3229 do iter = 1, xrows
3230# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3231 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
3232# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3233 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
3234# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3235 end do
3236# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3237 close (unit)
3238# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3239 end do
3240# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3241
3242# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3243 ! Calculate offsets
3244# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3245 domain_xstart = x_coords(1)
3246# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3247 x_step = x_cc(1) - x_cc(0)
3248# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3249 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
3250# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3251 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
3252# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3253 global_offset_x = nint(abs(delta_x)/x_step)
3254# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3255
3256# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3257 case (3) ! 3D case - determine grid structure
3258# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3259 ! Find yRows by counting rows with same x
3260# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3261 read (unit2, *, iostat=ios2) x0, y0, dummy_z
3262# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3263 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
3264# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3265
3266# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3267 yrows = 1
3268# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3269 do
3270# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3271 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
3272# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3273 if (ios2 /= 0) exit
3274# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3275 if (dummy_x == x0 .and. dummy_y /= y0) then
3276# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3277 yrows = yrows + 1
3278# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3279 else
3280# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3281 exit
3282# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3283 end if
3284# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3285 end do
3286# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3287 close (unit2)
3288# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3289
3290# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3291 ! Count total rows
3292# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3293 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
3294# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3295 nrows = 0
3296# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3297 do
3298# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3299 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
3300# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3301 if (ios2 /= 0) exit
3302# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3303 nrows = nrows + 1
3304# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3305 end do
3306# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3307 close (unit2)
3308# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3309
3310# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3311 xrows = nrows/yrows
3312# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3313#ifdef MFC_DEBUG
3314# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3315 block
3316# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3317 use iso_fortran_env, only: output_unit
3318# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3319
3320# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3321 print *, 'm_icpp_patches.fpp:404: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
3322# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3323
3324# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3325 call flush (output_unit)
3326# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3327 end block
3328# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3329#endif
3330# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3331 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
3332# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3333
3334# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3335
3336# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3337
3338# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3339
3340# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3341#if defined(MFC_OpenACC)
3342# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3343!$acc enter data create(x_coords, y_coords, stored_values)
3344# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3345#elif defined(MFC_OpenMP)
3346# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3347!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
3348# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3349#endif
3350# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3351 index_x = i
3352# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3353 index_y = j
3354# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3355
3356# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3357 ! Read all files
3358# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3359 do f = 1, max_files
3360# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3361 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
3362# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3363 if (ios /= 0) then
3364# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3365 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
3366# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3367 cycle
3368# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3369 end if
3370# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3371
3372# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3373 iter = 0
3374# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3375 do iix = 1, xrows
3376# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3377 do iiy = 1, yrows
3378# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3379 iter = iter + 1
3380# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3381 if (f == 1) then
3382# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3383 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
3384# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3385 else
3386# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3387 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
3388# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3389 end if
3390# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3391 if (ios /= 0) call s_mpi_abort("Error reading data")
3392# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3393 end do
3394# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3395 end do
3396# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3397 close (unit)
3398# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3399 end do
3400# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3401
3402# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3403 ! Calculate offsets
3404# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3405 x_step = x_cc(1) - x_cc(0)
3406# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3407 y_step = y_cc(1) - y_cc(0)
3408# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3409 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
3410# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3411 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
3412# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3413 global_offset_x = nint(abs(delta_x)/x_step)
3414# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3415 global_offset_y = nint(abs(delta_y)/y_step)
3416# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3417 end select
3418# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3419
3420# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3421 files_loaded = .true.
3422# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3423 end if
3424# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3425
3426# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3427 ! Data assignment
3428# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3429 select case (num_dims)
3430# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3431 case (1)
3432# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3433 idx = i + 1 + global_offset_x
3434# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3435 do f = 1, sys_size
3436# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3437 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
3438# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3439 end do
3440# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3441
3442# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3443 case (2)
3444# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3445 idx = i + 1 + global_offset_x - index_x
3446# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3447 do f = 1, sys_size - 1
3448# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3449 jump = merge(1, 0, f >= momxe)
3450# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3451 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
3452# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3453 end do
3454# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3455 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
3456# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3457
3458# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3459 case (3)
3460# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3461 idx = i + 1 + global_offset_x - index_x
3462# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3463 idy = j + 1 + global_offset_y - index_y
3464# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3465 do f = 1, sys_size - 1
3466# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3467 jump = merge(1, 0, f >= momxe)
3468# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3469 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
3470# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3471 end do
3472# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3473 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
3474# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3475 end select
3476# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3477
3478# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3479 case (280)
3480# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3481 ! This is patch is hard-coded for test suite optimization used in the
3482# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3483 ! 2D_isentropicvortex case:
3484# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3485 ! This analytic patch uses geometry 2
3486# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3487 if (patch_id == 1) then
3488# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3489 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
3490# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3491 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
3492# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3493 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
3494# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3495 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
3496# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3497 end if
3498# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3499
3500# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3501 case (281)
3502# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3503 ! This is patch is hard-coded for test suite optimization used in the
3504# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3505 ! 2D_acoustic_pulse case:
3506# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3507 ! This analytic patch uses geometry 2
3508# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3509 if (patch_id == 2) then
3510# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3511 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
3512# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3513 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
3514# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3515 end if
3516# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3517
3518# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3519 case (282)
3520# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3521 ! This is patch is hard-coded for test suite optimization used in the
3522# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3523 ! 2D_zero_circ_vortex case:
3524# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3525 ! This analytic patch uses geometry 2
3526# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3527 if (patch_id == 2) then
3528# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3529 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
3530# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3531 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
3532# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3533 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
3534# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3535 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
3536# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3537 end if
3538# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3539
3540# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3541 case default
3542# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3543 if (proc_rank == 0) then
3544# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3545 call s_int_to_str(patch_id, istr)
3546# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3547 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
3548# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3549 end if
3550# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3551
3552# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3553 end select
3554# 404 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3555
3556 end if
3557
3558 end if
3559 end do
3560 end do
3561 if (allocated(stored_values)) then
3562# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3563#ifdef MFC_DEBUG
3564# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3565 block
3566# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3567 use iso_fortran_env, only: output_unit
3568# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3569
3570# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3571 print *, 'm_icpp_patches.fpp:410: ', '@:DEALLOCATE(stored_values)'
3572# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3573
3574# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3575 call flush (output_unit)
3576# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3577 end block
3578# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3579#endif
3580# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3581
3582# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3583#if defined(MFC_OpenACC)
3584# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3585!$acc exit data delete(stored_values)
3586# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3587#elif defined(MFC_OpenMP)
3588# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3589!$omp target exit data map(release:stored_values)
3590# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3591#endif
3592# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3593 deallocate (stored_values)
3594# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3595#ifdef MFC_DEBUG
3596# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3597 block
3598# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3599 use iso_fortran_env, only: output_unit
3600# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3601
3602# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3603 print *, 'm_icpp_patches.fpp:410: ', '@:DEALLOCATE(x_coords)'
3604# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3605
3606# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3607 call flush (output_unit)
3608# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3609 end block
3610# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3611#endif
3612# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3613
3614# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3615#if defined(MFC_OpenACC)
3616# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3617!$acc exit data delete(x_coords)
3618# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3619#elif defined(MFC_OpenMP)
3620# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3621!$omp target exit data map(release:x_coords)
3622# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3623#endif
3624# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3625 deallocate (x_coords)
3626# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3627 end if
3628# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3629
3630# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3631 if (allocated(y_coords)) then
3632# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3633#ifdef MFC_DEBUG
3634# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3635 block
3636# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3637 use iso_fortran_env, only: output_unit
3638# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3639
3640# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3641 print *, 'm_icpp_patches.fpp:410: ', '@:DEALLOCATE(y_coords)'
3642# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3643
3644# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3645 call flush (output_unit)
3646# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3647 end block
3648# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3649#endif
3650# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3651
3652# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3653#if defined(MFC_OpenACC)
3654# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3655!$acc exit data delete(y_coords)
3656# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3657#elif defined(MFC_OpenMP)
3658# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3659!$omp target exit data map(release:y_coords)
3660# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3661#endif
3662# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3663 deallocate (y_coords)
3664# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3665 end if
3666
3667 end subroutine s_icpp_circle
3668
3669 !> The varcircle patch is a 2D geometry that may be used
3670 !! . It generatres an annulus
3671 !! @param patch_id is the patch identifier
3672 !! @param patch_id_fp Array to track patch ids
3673 !! @param q_prim_vf Array of primitive variables
3674 subroutine s_icpp_varcircle(patch_id, patch_id_fp, q_prim_vf)
3675
3676 ! Patch identifier
3677 integer, intent(in) :: patch_id
3678#ifdef MFC_MIXED_PRECISION
3679 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
3680#else
3681 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
3682#endif
3683 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
3684
3685 ! Generic loop iterators
3686 integer :: i, j, k
3687 real(wp) :: radius, myr, thickness
3688 integer :: xRows, yRows, nRows, iix, iiy, max_files
3689# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3690 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
3691# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3692 real(wp) :: x_len, x_step, y_len, y_step
3693# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3694 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
3695# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3696 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
3697# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3698 real(wp) :: delta_x, delta_y
3699# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3700 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
3701# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3702 character(len=200) :: errmsg
3703# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3704 real(wp), allocatable :: stored_values(:, :, :)
3705# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3706 real(wp), allocatable :: x_coords(:), y_coords(:)
3707# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3708 logical :: files_loaded = .false.
3709# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3710 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
3711# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3712 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
3713# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3714 character(len=20) :: file_num_str ! For storing the file number as a string
3715# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3716 character(len=20) :: zeros_part ! For the trailing zeros part
3717# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3718 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
3719 ! Place any declaration of intermediate variables here
3720# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3721 real(wp) :: eps, eps_mhd, C_mhd
3722# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3723 real(wp) :: r, rmax, gam, umax, p0
3724# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3725 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, intL, alph
3726# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3727 real(wp) :: factor
3728# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3729 real(wp) :: r0, alpha, r2
3730# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3731 real(wp) :: sinA, cosA
3732# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3733
3734# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3735 real(wp) :: r_sq
3736# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3737
3738# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3739 ! # 207
3740# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3741 real(wp) :: sigma, gauss1, gauss2
3742# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3743 ! # 208
3744# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3745 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
3746# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3747
3748# 434 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3749 eps = 1.e-9_wp
3750
3751 ! Transferring the circular patch's radius, centroid, smearing patch
3752 ! identity and smearing coefficient information
3753 x_centroid = patch_icpp(patch_id)%x_centroid
3754 y_centroid = patch_icpp(patch_id)%y_centroid
3755 radius = patch_icpp(patch_id)%radius
3756 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
3757 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
3758 thickness = patch_icpp(patch_id)%epsilon
3759
3760 ! Initializing the pseudo volume fraction value to 1. The value will
3761 ! be modified as the patch is laid out on the grid, but only in the
3762 ! case that smoothing of the circular patch's boundary is enabled.
3763 eta = 1._wp
3764
3765 ! Checking whether the circle covers a particular cell in the domain
3766 ! and verifying whether the current patch has permission to write to
3767 ! that cell. If both queries check out, the primitive variables of
3768 ! the current patch are assigned to this cell.
3769 do j = 0, n
3770 do i = 0, m
3771 myr = sqrt((x_cc(i) - x_centroid)**2 &
3772 + (y_cc(j) - y_centroid)**2)
3773
3774 if (myr <= radius + thickness/2._wp .and. &
3775 myr >= radius - thickness/2._wp .and. &
3776 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) then
3777
3778 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
3779 eta, q_prim_vf, patch_id_fp)
3780
3781
3782 if (patch_icpp(patch_id)%hcid /= dflt_int) then
3783
3784# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3785 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
3786# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3787
3788# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3789 case (200)
3790# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3791 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
3792# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3793 ! Volume Fractions
3794# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3795 q_prim_vf(advxb)%sf(i, j, 0) = eps
3796# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3797 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
3798# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3799 ! Denssities
3800# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3801 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
3802# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3803 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
3804# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3805 ! Pressure
3806# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3807 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
3808# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3809 end if
3810# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3811 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
3812# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3813 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
3814# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3815 rmax = 0.2_wp
3816# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3817
3818# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3819 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
3820# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3821 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
3822# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3823 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
3824# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3825
3826# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3827 if (r < rmax) then
3828# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3829 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
3830# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3831 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
3832# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3833 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
3834# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3835 else if (r < 2*rmax) then
3836# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3837 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
3838# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3839 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
3840# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3841 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
3842# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3843 else
3844# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3845 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
3846# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3847 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
3848# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3849 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
3850# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3851 end if
3852# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3853 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
3854# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3855 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
3856# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3857 rmax = 0.2_wp
3858# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3859
3860# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3861 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
3862# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3863 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
3864# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3865 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
3866# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3867
3868# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3869 if (r < rmax) then
3870# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3871 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
3872# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3873 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
3874# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3875 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
3876# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3877 else if (r < 2*rmax) then
3878# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3879 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
3880# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3881 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
3882# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3883 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
3884# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3885 else
3886# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3887 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
3888# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3889 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
3890# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3891 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
3892# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3893 end if
3894# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3895
3896# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3897 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
3898# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3899 case (204) ! Rayleigh-Taylor instability
3900# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3901 rhoh = 3._wp
3902# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3903 rhol = 1._wp
3904# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3905 pref = 1.e5_wp
3906# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3907 pint = pref
3908# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3909 h = 0.7_wp
3910# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3911 lam = 0.2_wp
3912# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3913 wl = 2._wp*pi/lam
3914# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3915 amp = 0.05_wp/wl
3916# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3917
3918# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3919 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
3920# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3921
3922# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3923 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
3924# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3925
3926# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3927 if (alph < eps) alph = eps
3928# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3929 if (alph > 1._wp - eps) alph = 1._wp - eps
3930# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3931
3932# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3933 if (y_cc(j) > inth) then
3934# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3935 q_prim_vf(advxb)%sf(i, j, 0) = alph
3936# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3937 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
3938# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3939 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
3940# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3941 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
3942# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3943 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
3944# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3945 else
3946# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3947 q_prim_vf(advxb)%sf(i, j, 0) = alph
3948# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3949 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
3950# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3951 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
3952# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3953 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
3954# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3955 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
3956# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3957 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
3958# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3959 end if
3960# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3961
3962# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3963 case (205) ! 2D lung wave interaction problem
3964# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3965 h = 0.0_wp !non dim origin y
3966# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3967 lam = 1.0_wp !non dim lambda
3968# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3969 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
3970# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3971
3972# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3973 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
3974# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3975
3976# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3977 if (y_cc(j) > inth) then
3978# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3979 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
3980# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3981 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
3982# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3983 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
3984# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3985 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
3986# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3987 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
3988# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3989 end if
3990# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3991
3992# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3993 case (206) ! 2D lung wave interaction problem - horizontal domain
3994# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3995 h = 0.0_wp !non dim origin y
3996# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3997 lam = 1.0_wp !non dim lambda
3998# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
3999 amp = patch_icpp(patch_id)%a(2)
4000# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4001
4002# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4003 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
4004# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4005
4006# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4007 if (x_cc(i) > intl) then !this is the liquid
4008# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4009 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
4010# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4011 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
4012# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4013 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
4014# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4015 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
4016# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4017 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
4018# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4019 end if
4020# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4021
4022# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4023 case (207) ! Kelvin Helmholtz Instability
4024# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4025 sigma = 0.05_wp/sqrt(2.0_wp)
4026# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4027 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
4028# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4029 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
4030# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4031 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
4032# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4033 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
4034# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4035
4036# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4037 case (208) ! Richtmeyer Meshkov Instability
4038# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4039 lam = 1.0_wp
4040# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4041 eps = 1.0e-6_wp
4042# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4043 ei = 5.0_wp
4044# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4045 ! Smoothening function to smooth out sharp discontinuity in the interface
4046# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4047 if (x_cc(i) <= 0.7_wp*lam) then
4048# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4049 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
4050# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4051 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
4052# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4053 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
4054# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4055 alpha_sf6 = 1.0_wp - alpha_air
4056# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4057 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
4058# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4059 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
4060# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4061 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
4062# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4063 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
4064# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4065 end if
4066# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4067
4068# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4069 case (250) ! MHD Orszag-Tang vortex
4070# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4071 ! gamma = 5/3
4072# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4073 ! rho = 25/(36*pi)
4074# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4075 ! p = 5/(12*pi)
4076# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4077 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
4078# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4079 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
4080# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4081
4082# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4083 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
4084# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4085 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
4086# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4087
4088# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4089 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
4090# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4091 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
4092# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4093
4094# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4095 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
4096# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4097 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
4098# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4099 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
4100# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4101 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
4102# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4103 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
4104# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4105 ! Linear interpolation between r=0.08 and r=1.0
4106# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4107 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
4108# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4109 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
4110# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4111 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
4112# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4113 else
4114# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4115 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
4116# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4117 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
4118# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4119 end if
4120# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4121
4122# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4123 ! case 252 is for the 2D MHD Rotor problem
4124# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4125 case (252) ! 2D MHD Rotor Problem
4126# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4127 ! Ambient conditions are set in the JSON file.
4128# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4129 ! This case imposes the dense, rotating cylinder.
4130# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4131 !
4132# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4133 ! gamma = 1.4
4134# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4135 ! Ambient medium (r > 0.1):
4136# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4137 ! rho = 1, p = 1, v = 0, B = (1,0,0)
4138# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4139 ! Rotor (r <= 0.1):
4140# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4141 ! rho = 10, p = 1
4142# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4143 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
4144# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4145
4146# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4147 ! Calculate distance squared from the center
4148# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4149 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
4150# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4151
4152# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4153 ! inner radius of 0.1
4154# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4155 if (r_sq <= 0.1**2) then
4156# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4157 ! -- Inside the rotor --
4158# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4159 ! Set density uniformly to 10
4160# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4161 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
4162# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4163
4164# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4165 ! Set vup constant rotation of rate v=2
4166# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4167 ! v_x = -omega * (y - y_c)
4168# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4169 ! v_y = omega * (x - x_c)
4170# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4171 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
4172# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4173 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
4174# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4175
4176# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4177 ! taper width of 0.015
4178# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4179 else if (r_sq <= 0.115**2) then
4180# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4181 ! linearly smooth the function between r = 0.1 and 0.115
4182# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4183 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
4184# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4185
4186# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4187 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
4188# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4189 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
4190# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4191 end if
4192# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4193
4194# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4195 case (253) ! MHD Smooth Magnetic Vortex
4196# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4197 ! Section 5.2 of
4198# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4199 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
4200# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4201 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
4202# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4203
4204# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4205 ! velocity
4206# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4207 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
4208# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4209 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
4210# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4211
4212# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4213 ! magnetic field
4214# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4215 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
4216# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4217 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
4218# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4219
4220# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4221 ! pressure
4222# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4223 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
4224# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4225
4226# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4227 case (260) ! Gaussian Divergence Pulse
4228# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4229 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
4230# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4231 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
4232# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4233 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
4234# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4235 ! ψ is initialized to zero everywhere.
4236# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4237
4238# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4239 eps_mhd = patch_icpp(patch_id)%a(2)
4240# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4241 sigma = patch_icpp(patch_id)%a(3)
4242# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4243 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
4244# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4245
4246# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4247 ! B-field
4248# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4249 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
4250# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4251
4252# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4253 case (261) ! Blob
4254# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4255 r0 = 1._wp/sqrt(8._wp)
4256# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4257 r2 = x_cc(i)**2 + y_cc(j)**2
4258# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4259 r = sqrt(r2)
4260# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4261 alpha = r/r0
4262# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4263 if (alpha < 1) then
4264# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4265 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
4266# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4267 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
4268# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4269 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
4270# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4271 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
4272# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4273 end if
4274# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4275
4276# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4277 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
4278# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4279 ! rotate by α = atan(2)
4280# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4281 alpha = atan(2._wp)
4282# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4283 cosa = cos(alpha)
4284# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4285 sina = sin(alpha)
4286# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4287 ! projection along shock normal
4288# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4289 r = x_cc(i)*cosa + y_cc(j)*sina
4290# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4291
4292# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4293 if (r <= 0.5_wp) then
4294# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4295 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
4296# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4297 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
4298# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4299 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
4300# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4301 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
4302# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4303 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
4304# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4305 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
4306# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4307 - (5._wp/sqrt(4._wp*pi))*sina
4308# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4309 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
4310# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4311 + (5._wp/sqrt(4._wp*pi))*cosa
4312# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4313 else
4314# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4315 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
4316# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4317 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
4318# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4319 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
4320# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4321 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
4322# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4323 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
4324# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4325 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
4326# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4327 - (5._wp/sqrt(4._wp*pi))*sina
4328# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4329 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
4330# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4331 + (5._wp/sqrt(4._wp*pi))*cosa
4332# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4333 end if
4334# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4335 ! v^z and B^z remain zero by default
4336# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4337
4338# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4339 case (270)
4340# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4341 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
4342# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4343
4344# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4345 if (.not. files_loaded) then
4346# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4347 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
4348# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4349 do f = 1, max_files
4350# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4351 write (file_num_str, '(I0)') f
4352# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4353 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
4354# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4355 end do
4356# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4357
4358# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4359 ! Common file reading setup
4360# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4361 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
4362# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4363 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
4364# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4365
4366# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4367 select case (num_dims)
4368# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4369 case (1, 2) ! 1D and 2D cases are similar
4370# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4371 ! Count lines
4372# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4373 line_count = 0
4374# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4375 do
4376# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4377 read (unit2, *, iostat=ios2) dummy_x, dummy_y
4378# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4379 if (ios2 /= 0) exit
4380# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4381 line_count = line_count + 1
4382# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4383 end do
4384# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4385 close (unit2)
4386# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4387
4388# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4389 xrows = line_count
4390# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4391 yrows = 1
4392# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4393 index_x = 0
4394# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4395 if (num_dims == 2) index_x = i
4396# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4397#ifdef MFC_DEBUG
4398# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4399 block
4400# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4401 use iso_fortran_env, only: output_unit
4402# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4403
4404# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4405 print *, 'm_icpp_patches.fpp:468: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
4406# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4407
4408# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4409 call flush (output_unit)
4410# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4411 end block
4412# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4413#endif
4414# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4415 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
4416# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4417
4418# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4419
4420# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4421
4422# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4423#if defined(MFC_OpenACC)
4424# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4425!$acc enter data create(x_coords, stored_values)
4426# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4427#elif defined(MFC_OpenMP)
4428# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4429!$omp target enter data map(always,alloc:x_coords, stored_values)
4430# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4431#endif
4432# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4433
4434# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4435 ! Read data from all files
4436# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4437 do f = 1, max_files
4438# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4439 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
4440# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4441 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
4442# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4443
4444# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4445 do iter = 1, xrows
4446# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4447 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
4448# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4449 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
4450# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4451 end do
4452# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4453 close (unit)
4454# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4455 end do
4456# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4457
4458# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4459 ! Calculate offsets
4460# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4461 domain_xstart = x_coords(1)
4462# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4463 x_step = x_cc(1) - x_cc(0)
4464# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4465 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
4466# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4467 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
4468# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4469 global_offset_x = nint(abs(delta_x)/x_step)
4470# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4471
4472# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4473 case (3) ! 3D case - determine grid structure
4474# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4475 ! Find yRows by counting rows with same x
4476# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4477 read (unit2, *, iostat=ios2) x0, y0, dummy_z
4478# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4479 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
4480# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4481
4482# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4483 yrows = 1
4484# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4485 do
4486# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4487 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
4488# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4489 if (ios2 /= 0) exit
4490# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4491 if (dummy_x == x0 .and. dummy_y /= y0) then
4492# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4493 yrows = yrows + 1
4494# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4495 else
4496# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4497 exit
4498# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4499 end if
4500# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4501 end do
4502# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4503 close (unit2)
4504# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4505
4506# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4507 ! Count total rows
4508# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4509 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
4510# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4511 nrows = 0
4512# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4513 do
4514# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4515 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
4516# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4517 if (ios2 /= 0) exit
4518# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4519 nrows = nrows + 1
4520# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4521 end do
4522# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4523 close (unit2)
4524# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4525
4526# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4527 xrows = nrows/yrows
4528# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4529#ifdef MFC_DEBUG
4530# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4531 block
4532# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4533 use iso_fortran_env, only: output_unit
4534# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4535
4536# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4537 print *, 'm_icpp_patches.fpp:468: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
4538# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4539
4540# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4541 call flush (output_unit)
4542# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4543 end block
4544# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4545#endif
4546# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4547 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
4548# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4549
4550# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4551
4552# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4553
4554# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4555
4556# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4557#if defined(MFC_OpenACC)
4558# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4559!$acc enter data create(x_coords, y_coords, stored_values)
4560# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4561#elif defined(MFC_OpenMP)
4562# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4563!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
4564# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4565#endif
4566# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4567 index_x = i
4568# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4569 index_y = j
4570# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4571
4572# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4573 ! Read all files
4574# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4575 do f = 1, max_files
4576# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4577 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
4578# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4579 if (ios /= 0) then
4580# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4581 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
4582# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4583 cycle
4584# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4585 end if
4586# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4587
4588# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4589 iter = 0
4590# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4591 do iix = 1, xrows
4592# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4593 do iiy = 1, yrows
4594# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4595 iter = iter + 1
4596# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4597 if (f == 1) then
4598# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4599 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
4600# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4601 else
4602# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4603 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
4604# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4605 end if
4606# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4607 if (ios /= 0) call s_mpi_abort("Error reading data")
4608# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4609 end do
4610# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4611 end do
4612# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4613 close (unit)
4614# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4615 end do
4616# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4617
4618# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4619 ! Calculate offsets
4620# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4621 x_step = x_cc(1) - x_cc(0)
4622# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4623 y_step = y_cc(1) - y_cc(0)
4624# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4625 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
4626# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4627 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
4628# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4629 global_offset_x = nint(abs(delta_x)/x_step)
4630# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4631 global_offset_y = nint(abs(delta_y)/y_step)
4632# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4633 end select
4634# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4635
4636# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4637 files_loaded = .true.
4638# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4639 end if
4640# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4641
4642# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4643 ! Data assignment
4644# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4645 select case (num_dims)
4646# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4647 case (1)
4648# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4649 idx = i + 1 + global_offset_x
4650# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4651 do f = 1, sys_size
4652# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4653 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
4654# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4655 end do
4656# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4657
4658# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4659 case (2)
4660# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4661 idx = i + 1 + global_offset_x - index_x
4662# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4663 do f = 1, sys_size - 1
4664# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4665 jump = merge(1, 0, f >= momxe)
4666# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4667 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
4668# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4669 end do
4670# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4671 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
4672# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4673
4674# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4675 case (3)
4676# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4677 idx = i + 1 + global_offset_x - index_x
4678# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4679 idy = j + 1 + global_offset_y - index_y
4680# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4681 do f = 1, sys_size - 1
4682# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4683 jump = merge(1, 0, f >= momxe)
4684# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4685 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
4686# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4687 end do
4688# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4689 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
4690# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4691 end select
4692# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4693
4694# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4695 case (280)
4696# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4697 ! This is patch is hard-coded for test suite optimization used in the
4698# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4699 ! 2D_isentropicvortex case:
4700# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4701 ! This analytic patch uses geometry 2
4702# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4703 if (patch_id == 1) then
4704# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4705 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
4706# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4707 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
4708# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4709 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
4710# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4711 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
4712# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4713 end if
4714# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4715
4716# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4717 case (281)
4718# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4719 ! This is patch is hard-coded for test suite optimization used in the
4720# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4721 ! 2D_acoustic_pulse case:
4722# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4723 ! This analytic patch uses geometry 2
4724# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4725 if (patch_id == 2) then
4726# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4727 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
4728# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4729 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
4730# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4731 end if
4732# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4733
4734# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4735 case (282)
4736# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4737 ! This is patch is hard-coded for test suite optimization used in the
4738# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4739 ! 2D_zero_circ_vortex case:
4740# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4741 ! This analytic patch uses geometry 2
4742# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4743 if (patch_id == 2) then
4744# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4745 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
4746# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4747 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
4748# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4749 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
4750# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4751 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
4752# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4753 end if
4754# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4755
4756# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4757 case default
4758# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4759 if (proc_rank == 0) then
4760# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4761 call s_int_to_str(patch_id, istr)
4762# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4763 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
4764# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4765 end if
4766# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4767
4768# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4769 end select
4770# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4771
4772 end if
4773
4774 ! Updating the patch identities bookkeeping variable
4775 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
4776
4777 q_prim_vf(alf_idx)%sf(i, j, 0) = patch_icpp(patch_id)%alpha(1)* &
4778 exp(-0.5_wp*((myr - radius)**2._wp)/(thickness/3._wp)**2._wp)
4779 end if
4780
4781 end do
4782 end do
4783 if (allocated(stored_values)) then
4784# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4785#ifdef MFC_DEBUG
4786# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4787 block
4788# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4789 use iso_fortran_env, only: output_unit
4790# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4791
4792# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4793 print *, 'm_icpp_patches.fpp:480: ', '@:DEALLOCATE(stored_values)'
4794# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4795
4796# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4797 call flush (output_unit)
4798# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4799 end block
4800# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4801#endif
4802# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4803
4804# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4805#if defined(MFC_OpenACC)
4806# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4807!$acc exit data delete(stored_values)
4808# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4809#elif defined(MFC_OpenMP)
4810# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4811!$omp target exit data map(release:stored_values)
4812# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4813#endif
4814# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4815 deallocate (stored_values)
4816# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4817#ifdef MFC_DEBUG
4818# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4819 block
4820# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4821 use iso_fortran_env, only: output_unit
4822# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4823
4824# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4825 print *, 'm_icpp_patches.fpp:480: ', '@:DEALLOCATE(x_coords)'
4826# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4827
4828# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4829 call flush (output_unit)
4830# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4831 end block
4832# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4833#endif
4834# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4835
4836# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4837#if defined(MFC_OpenACC)
4838# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4839!$acc exit data delete(x_coords)
4840# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4841#elif defined(MFC_OpenMP)
4842# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4843!$omp target exit data map(release:x_coords)
4844# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4845#endif
4846# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4847 deallocate (x_coords)
4848# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4849 end if
4850# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4851
4852# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4853 if (allocated(y_coords)) then
4854# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4855#ifdef MFC_DEBUG
4856# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4857 block
4858# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4859 use iso_fortran_env, only: output_unit
4860# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4861
4862# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4863 print *, 'm_icpp_patches.fpp:480: ', '@:DEALLOCATE(y_coords)'
4864# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4865
4866# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4867 call flush (output_unit)
4868# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4869 end block
4870# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4871#endif
4872# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4873
4874# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4875#if defined(MFC_OpenACC)
4876# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4877!$acc exit data delete(y_coords)
4878# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4879#elif defined(MFC_OpenMP)
4880# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4881!$omp target exit data map(release:y_coords)
4882# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4883#endif
4884# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4885 deallocate (y_coords)
4886# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4887 end if
4888
4889 end subroutine s_icpp_varcircle
4890
4891 !> @brief Initializes a 3D variable-thickness circular annulus patch extruded along the z-axis.
4892 !! @param patch_id is the patch identifier
4893 !! @param patch_id_fp Array to track patch ids
4894 !! @param q_prim_vf Array of primitive variables
4895 subroutine s_icpp_3dvarcircle(patch_id, patch_id_fp, q_prim_vf)
4896
4897 ! Patch identifier
4898 integer, intent(in) :: patch_id
4899#ifdef MFC_MIXED_PRECISION
4900 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
4901#else
4902 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
4903#endif
4904 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
4905
4906 ! Generic loop iterators
4907 integer :: i, j, k
4908 real(wp) :: radius, myr, thickness
4909 integer :: xRows, yRows, nRows, iix, iiy, max_files
4910# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4911 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
4912# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4913 real(wp) :: x_len, x_step, y_len, y_step
4914# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4915 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
4916# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4917 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
4918# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4919 real(wp) :: delta_x, delta_y
4920# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4921 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
4922# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4923 character(len=200) :: errmsg
4924# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4925 real(wp), allocatable :: stored_values(:, :, :)
4926# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4927 real(wp), allocatable :: x_coords(:), y_coords(:)
4928# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4929 logical :: files_loaded = .false.
4930# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4931 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
4932# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4933 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
4934# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4935 character(len=20) :: file_num_str ! For storing the file number as a string
4936# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4937 character(len=20) :: zeros_part ! For the trailing zeros part
4938# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4939 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
4940 ! Place any declaration of intermediate variables here
4941# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4942 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
4943# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4944 real(wp) :: eps
4945# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4946
4947# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4948 ! IGR Jets
4949# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4950 ! Arrays to stor position and radii of jets from input file
4951# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4952 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
4953# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4954 ! Variables to describe initial condition of jet
4955# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4956 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
4957# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4958 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
4959# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4960
4961# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4962 real(wp), dimension(0:n, 0:p) :: rcut_arr
4963# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4964 integer :: l, q, s ! Iterators for reading input files
4965# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4966 integer :: start, end ! Ints to keep track of position in file
4967# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4968 character(len=1000) :: line ! String to store line in ile
4969# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4970 character(len=25) :: value ! String to store value in line
4971# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4972 integer :: NJet ! Number of jets
4973# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4974
4975# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4976 eps = 1e-9_wp
4977# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4978
4979# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4980 if (patch_icpp(patch_id)%hcid == 303) then
4981# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4982 eps_smooth = 3._wp
4983# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4984 open (unit=10, file="njet.txt", status="old", action="read")
4985# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4986 read (10, *) njet
4987# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4988 close (10)
4989# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4990
4991# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4992 allocate (y_th_arr(0:njet - 1))
4993# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4994 allocate (z_th_arr(0:njet - 1))
4995# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4996 allocate (r_th_arr(0:njet - 1))
4997# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
4998
4999# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5000 open (unit=10, file="jets.csv", status="old", action="read")
5001# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5002 do q = 0, njet - 1
5003# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5004 read (10, '(A)') line ! Read a full line as a string
5005# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5006 start = 1
5007# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5008
5009# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5010 do l = 0, 2
5011# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5012 end = index(line(start:), ',') ! Find the next comma
5013# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5014 if (end == 0) then
5015# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5016 value = trim(adjustl(line(start:))) ! Last value in the line
5017# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5018 else
5019# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5020 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
5021# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5022 start = start + end ! Move to next value
5023# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5024 end if
5025# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5026 if (l == 0) then
5027# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5028 read (value, *) y_th_arr(q) ! Convert string to numeric value
5029# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5030 elseif (l == 1) then
5031# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5032 read (value, *) z_th_arr(q)
5033# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5034 else
5035# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5036 read (value, *) r_th_arr(q)
5037# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5038 end if
5039# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5040 end do
5041# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5042 end do
5043# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5044 close (10)
5045# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5046
5047# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5048 do q = 0, p
5049# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5050 do l = 0, n
5051# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5052 rcut = 0._wp
5053# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5054 do s = 0, njet - 1
5055# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5056 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
5057# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5058 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
5059# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5060 end do
5061# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5062 rcut_arr(l, q) = rcut
5063# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5064 end do
5065# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5066 end do
5067# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5068 end if
5069# 503 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5070
5071
5072 ! Transferring the circular patch's radius, centroid, smearing patch
5073 ! identity and smearing coefficient information
5074 x_centroid = patch_icpp(patch_id)%x_centroid
5075 y_centroid = patch_icpp(patch_id)%y_centroid
5076 z_centroid = patch_icpp(patch_id)%z_centroid
5077 length_z = patch_icpp(patch_id)%length_z
5078 radius = patch_icpp(patch_id)%radius
5079 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
5080 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
5081 thickness = patch_icpp(patch_id)%epsilon
5082
5083 ! Initializing the pseudo volume fraction value to 1. The value will
5084 ! be modified as the patch is laid out on the grid, but only in the
5085 ! case that smoothing of the circular patch's boundary is enabled.
5086 eta = 1._wp
5087
5088 ! write for all z
5089
5090 ! Checking whether the circle covers a particular cell in the domain
5091 ! and verifying whether the current patch has permission to write to
5092 ! that cell. If both queries check out, the primitive variables of
5093 ! the current patch are assigned to this cell.
5094 do k = 0, p
5095 do j = 0, n
5096 do i = 0, m
5097 myr = sqrt((x_cc(i) - x_centroid)**2 &
5098 + (y_cc(j) - y_centroid)**2)
5099
5100 if (myr <= radius + thickness/2._wp .and. &
5101 myr >= radius - thickness/2._wp .and. &
5102 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) then
5103
5104 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
5105 eta, q_prim_vf, patch_id_fp)
5106
5107
5108 if (patch_icpp(patch_id)%hcid /= dflt_int) then
5109
5110# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5111 select case (patch_icpp(patch_id)%hcid)
5112# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5113 case (300) ! Rayleigh-Taylor instability
5114# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5115 rhoh = 3._wp
5116# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5117 rhol = 1._wp
5118# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5119 pref = 1.e5_wp
5120# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5121 pint = pref
5122# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5123 h = 0.7_wp
5124# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5125 lam = 0.2_wp
5126# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5127 wl = 2._wp*pi/lam
5128# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5129 amp = 0.025_wp/wl
5130# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5131
5132# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5133 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
5134# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5135
5136# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5137 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
5138# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5139
5140# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5141 if (alph < eps) alph = eps
5142# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5143 if (alph > 1._wp - eps) alph = 1._wp - eps
5144# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5145
5146# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5147 if (y_cc(j) > inth) then
5148# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5149 q_prim_vf(advxb)%sf(i, j, k) = alph
5150# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5151 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
5152# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5153 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
5154# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5155 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
5156# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5157 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
5158# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5159 else
5160# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5161 q_prim_vf(advxb)%sf(i, j, k) = alph
5162# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5163 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
5164# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5165 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
5166# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5167 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
5168# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5169 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
5170# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5171 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
5172# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5173 end if
5174# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5175
5176# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5177 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
5178# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5179 h = 0.0_wp
5180# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5181 lam = 1.0_wp
5182# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5183 amp = patch_icpp(patch_id)%a(2)
5184# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5185 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
5186# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5187 if (x_cc(i) > inth) then
5188# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5189 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
5190# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5191 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
5192# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5193 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
5194# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5195 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
5196# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5197 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
5198# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5199 end if
5200# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5201
5202# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5203 case (302) ! 3D Jet with IGR
5204# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5205 ux_th = 10*sqrt(1.4*0.4)
5206# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5207 ux_am = 0.0*sqrt(1.4)
5208# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5209 p_th = 2.0_wp
5210# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5211 p_am = 1.0_wp
5212# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5213 rho_th = 1._wp
5214# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5215 rho_am = 1._wp
5216# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5217 y_th = 0.0_wp
5218# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5219 z_th = 0.0_wp
5220# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5221 r_th = 1._wp
5222# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5223 eps_smooth = 1._wp
5224# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5225 eps = 1e-6
5226# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5227
5228# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5229 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
5230# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5231 rcut = f_cut_on(r - r_th, eps_smooth)
5232# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5233 xcut = f_cut_on(x_cc(i), eps_smooth)
5234# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5235
5236# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5237 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
5238# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5239 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
5240# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5241 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
5242# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5243
5244# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5245 if (num_fluids == 1) then
5246# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5247 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
5248# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5249 else
5250# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5251 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
5252# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5253 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
5254# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5255 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
5256# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5257 end if
5258# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5259
5260# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5261 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
5262# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5263
5264# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5265 case (303) ! 3D Multijet
5266# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5267
5268# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5269 eps_smooth = 3.0_wp
5270# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5271 ux_th = 10*sqrt(1.4*0.4)
5272# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5273 ux_am = 2.5*sqrt(1.4*0.4)
5274# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5275 p_th = 0.8_wp
5276# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5277 p_am = 0.4_wp
5278# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5279 rho_th = 1._wp
5280# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5281 rho_am = 1._wp
5282# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5283 eps = 1e-6
5284# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5285
5286# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5287 rcut = rcut_arr(j, k)
5288# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5289 xcut = f_cut_on(x_cc(i), eps_smooth)
5290# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5291
5292# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5293 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
5294# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5295 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
5296# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5297 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
5298# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5299
5300# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5301 if (num_fluids == 1) then
5302# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5303 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
5304# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5305 else
5306# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5307 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
5308# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5309 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
5310# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5311 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
5312# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5313 end if
5314# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5315
5316# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5317 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
5318# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5319
5320# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5321 case (370)
5322# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5323 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
5324# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5325
5326# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5327 if (.not. files_loaded) then
5328# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5329 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
5330# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5331 do f = 1, max_files
5332# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5333 write (file_num_str, '(I0)') f
5334# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5335 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
5336# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5337 end do
5338# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5339
5340# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5341 ! Common file reading setup
5342# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5343 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
5344# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5345 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
5346# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5347
5348# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5349 select case (num_dims)
5350# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5351 case (1, 2) ! 1D and 2D cases are similar
5352# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5353 ! Count lines
5354# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5355 line_count = 0
5356# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5357 do
5358# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5359 read (unit2, *, iostat=ios2) dummy_x, dummy_y
5360# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5361 if (ios2 /= 0) exit
5362# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5363 line_count = line_count + 1
5364# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5365 end do
5366# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5367 close (unit2)
5368# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5369
5370# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5371 xrows = line_count
5372# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5373 yrows = 1
5374# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5375 index_x = 0
5376# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5377 if (num_dims == 2) index_x = i
5378# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5379#ifdef MFC_DEBUG
5380# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5381 block
5382# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5383 use iso_fortran_env, only: output_unit
5384# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5385
5386# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5387 print *, 'm_icpp_patches.fpp:542: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
5388# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5389
5390# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5391 call flush (output_unit)
5392# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5393 end block
5394# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5395#endif
5396# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5397 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
5398# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5399
5400# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5401
5402# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5403
5404# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5405#if defined(MFC_OpenACC)
5406# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5407!$acc enter data create(x_coords, stored_values)
5408# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5409#elif defined(MFC_OpenMP)
5410# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5411!$omp target enter data map(always,alloc:x_coords, stored_values)
5412# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5413#endif
5414# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5415
5416# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5417 ! Read data from all files
5418# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5419 do f = 1, max_files
5420# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5421 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
5422# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5423 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
5424# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5425
5426# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5427 do iter = 1, xrows
5428# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5429 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
5430# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5431 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
5432# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5433 end do
5434# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5435 close (unit)
5436# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5437 end do
5438# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5439
5440# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5441 ! Calculate offsets
5442# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5443 domain_xstart = x_coords(1)
5444# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5445 x_step = x_cc(1) - x_cc(0)
5446# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5447 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
5448# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5449 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
5450# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5451 global_offset_x = nint(abs(delta_x)/x_step)
5452# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5453
5454# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5455 case (3) ! 3D case - determine grid structure
5456# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5457 ! Find yRows by counting rows with same x
5458# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5459 read (unit2, *, iostat=ios2) x0, y0, dummy_z
5460# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5461 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
5462# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5463
5464# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5465 yrows = 1
5466# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5467 do
5468# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5469 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
5470# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5471 if (ios2 /= 0) exit
5472# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5473 if (dummy_x == x0 .and. dummy_y /= y0) then
5474# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5475 yrows = yrows + 1
5476# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5477 else
5478# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5479 exit
5480# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5481 end if
5482# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5483 end do
5484# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5485 close (unit2)
5486# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5487
5488# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5489 ! Count total rows
5490# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5491 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
5492# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5493 nrows = 0
5494# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5495 do
5496# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5497 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
5498# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5499 if (ios2 /= 0) exit
5500# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5501 nrows = nrows + 1
5502# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5503 end do
5504# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5505 close (unit2)
5506# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5507
5508# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5509 xrows = nrows/yrows
5510# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5511#ifdef MFC_DEBUG
5512# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5513 block
5514# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5515 use iso_fortran_env, only: output_unit
5516# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5517
5518# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5519 print *, 'm_icpp_patches.fpp:542: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
5520# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5521
5522# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5523 call flush (output_unit)
5524# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5525 end block
5526# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5527#endif
5528# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5529 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
5530# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5531
5532# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5533
5534# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5535
5536# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5537
5538# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5539#if defined(MFC_OpenACC)
5540# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5541!$acc enter data create(x_coords, y_coords, stored_values)
5542# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5543#elif defined(MFC_OpenMP)
5544# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5545!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
5546# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5547#endif
5548# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5549 index_x = i
5550# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5551 index_y = j
5552# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5553
5554# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5555 ! Read all files
5556# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5557 do f = 1, max_files
5558# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5559 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
5560# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5561 if (ios /= 0) then
5562# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5563 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
5564# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5565 cycle
5566# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5567 end if
5568# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5569
5570# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5571 iter = 0
5572# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5573 do iix = 1, xrows
5574# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5575 do iiy = 1, yrows
5576# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5577 iter = iter + 1
5578# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5579 if (f == 1) then
5580# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5581 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
5582# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5583 else
5584# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5585 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
5586# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5587 end if
5588# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5589 if (ios /= 0) call s_mpi_abort("Error reading data")
5590# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5591 end do
5592# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5593 end do
5594# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5595 close (unit)
5596# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5597 end do
5598# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5599
5600# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5601 ! Calculate offsets
5602# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5603 x_step = x_cc(1) - x_cc(0)
5604# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5605 y_step = y_cc(1) - y_cc(0)
5606# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5607 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
5608# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5609 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
5610# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5611 global_offset_x = nint(abs(delta_x)/x_step)
5612# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5613 global_offset_y = nint(abs(delta_y)/y_step)
5614# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5615 end select
5616# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5617
5618# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5619 files_loaded = .true.
5620# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5621 end if
5622# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5623
5624# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5625 ! Data assignment
5626# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5627 select case (num_dims)
5628# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5629 case (1)
5630# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5631 idx = i + 1 + global_offset_x
5632# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5633 do f = 1, sys_size
5634# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5635 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
5636# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5637 end do
5638# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5639
5640# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5641 case (2)
5642# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5643 idx = i + 1 + global_offset_x - index_x
5644# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5645 do f = 1, sys_size - 1
5646# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5647 jump = merge(1, 0, f >= momxe)
5648# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5649 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
5650# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5651 end do
5652# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5653 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
5654# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5655
5656# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5657 case (3)
5658# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5659 idx = i + 1 + global_offset_x - index_x
5660# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5661 idy = j + 1 + global_offset_y - index_y
5662# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5663 do f = 1, sys_size - 1
5664# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5665 jump = merge(1, 0, f >= momxe)
5666# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5667 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
5668# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5669 end do
5670# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5671 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
5672# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5673 end select
5674# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5675
5676# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5677 case (380)
5678# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5679 ! This is patch is hard-coded for test suite optimization used in the
5680# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5681 ! 3D_TaylorGreenVortex case:
5682# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5683 ! This analytic patch used geometry 9
5684# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5685 mach = 0.1
5686# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5687 if (patch_id == 1) then
5688# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5689 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
5690# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5691 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
5692# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5693 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
5694# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5695 end if
5696# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5697
5698# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5699 case default
5700# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5701 call s_int_to_str(patch_id, istr)
5702# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5703 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
5704# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5705 end select
5706# 542 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5707
5708 end if
5709
5710 ! Updating the patch identities bookkeeping variable
5711 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, k) = patch_id
5712
5713 q_prim_vf(alf_idx)%sf(i, j, k) = patch_icpp(patch_id)%alpha(1)* &
5714 exp(-0.5_wp*((myr - radius)**2._wp)/(thickness/3._wp)**2._wp)
5715 end if
5716
5717 end do
5718 end do
5719 end do
5720 if (allocated(stored_values)) then
5721# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5722#ifdef MFC_DEBUG
5723# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5724 block
5725# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5726 use iso_fortran_env, only: output_unit
5727# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5728
5729# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5730 print *, 'm_icpp_patches.fpp:555: ', '@:DEALLOCATE(stored_values)'
5731# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5732
5733# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5734 call flush (output_unit)
5735# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5736 end block
5737# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5738#endif
5739# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5740
5741# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5742#if defined(MFC_OpenACC)
5743# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5744!$acc exit data delete(stored_values)
5745# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5746#elif defined(MFC_OpenMP)
5747# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5748!$omp target exit data map(release:stored_values)
5749# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5750#endif
5751# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5752 deallocate (stored_values)
5753# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5754#ifdef MFC_DEBUG
5755# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5756 block
5757# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5758 use iso_fortran_env, only: output_unit
5759# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5760
5761# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5762 print *, 'm_icpp_patches.fpp:555: ', '@:DEALLOCATE(x_coords)'
5763# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5764
5765# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5766 call flush (output_unit)
5767# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5768 end block
5769# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5770#endif
5771# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5772
5773# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5774#if defined(MFC_OpenACC)
5775# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5776!$acc exit data delete(x_coords)
5777# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5778#elif defined(MFC_OpenMP)
5779# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5780!$omp target exit data map(release:x_coords)
5781# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5782#endif
5783# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5784 deallocate (x_coords)
5785# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5786 end if
5787# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5788
5789# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5790 if (allocated(y_coords)) then
5791# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5792#ifdef MFC_DEBUG
5793# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5794 block
5795# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5796 use iso_fortran_env, only: output_unit
5797# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5798
5799# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5800 print *, 'm_icpp_patches.fpp:555: ', '@:DEALLOCATE(y_coords)'
5801# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5802
5803# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5804 call flush (output_unit)
5805# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5806 end block
5807# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5808#endif
5809# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5810
5811# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5812#if defined(MFC_OpenACC)
5813# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5814!$acc exit data delete(y_coords)
5815# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5816#elif defined(MFC_OpenMP)
5817# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5818!$omp target exit data map(release:y_coords)
5819# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5820#endif
5821# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5822 deallocate (y_coords)
5823# 555 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5824 end if
5825
5826 end subroutine s_icpp_3dvarcircle
5827
5828 !> The elliptical patch is a 2D geometry. The geometry of
5829 !! the patch is well-defined when its centroid and radii
5830 !! are provided. Note that the elliptical patch DOES allow
5831 !! for the smoothing of its boundary
5832 !! @param patch_id is the patch identifier
5833 !! @param patch_id_fp Array to track patch ids
5834 !! @param q_prim_vf Array of primitive variables
5835 subroutine s_icpp_ellipse(patch_id, patch_id_fp, q_prim_vf)
5836
5837 integer, intent(in) :: patch_id
5838#ifdef MFC_MIXED_PRECISION
5839 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
5840#else
5841 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
5842#endif
5843 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
5844
5845 integer :: i, j, k !< Generic loop operators
5846 real(wp) :: a, b
5847 integer :: xRows, yRows, nRows, iix, iiy, max_files
5848# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5849 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
5850# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5851 real(wp) :: x_len, x_step, y_len, y_step
5852# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5853 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
5854# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5855 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
5856# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5857 real(wp) :: delta_x, delta_y
5858# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5859 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
5860# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5861 character(len=200) :: errmsg
5862# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5863 real(wp), allocatable :: stored_values(:, :, :)
5864# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5865 real(wp), allocatable :: x_coords(:), y_coords(:)
5866# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5867 logical :: files_loaded = .false.
5868# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5869 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
5870# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5871 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
5872# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5873 character(len=20) :: file_num_str ! For storing the file number as a string
5874# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5875 character(len=20) :: zeros_part ! For the trailing zeros part
5876# 578 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5877 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
5878 ! Place any declaration of intermediate variables here
5879# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5880 real(wp) :: eps, eps_mhd, C_mhd
5881# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5882 real(wp) :: r, rmax, gam, umax, p0
5883# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5884 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, intL, alph
5885# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5886 real(wp) :: factor
5887# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5888 real(wp) :: r0, alpha, r2
5889# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5890 real(wp) :: sinA, cosA
5891# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5892
5893# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5894 real(wp) :: r_sq
5895# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5896
5897# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5898 ! # 207
5899# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5900 real(wp) :: sigma, gauss1, gauss2
5901# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5902 ! # 208
5903# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5904 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
5905# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5906
5907# 579 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5908 eps = 1.e-9_wp
5909
5910 ! Transferring the elliptical patch's radii, centroid, smearing
5911 ! patch identity, and smearing coefficient information
5912 x_centroid = patch_icpp(patch_id)%x_centroid
5913 y_centroid = patch_icpp(patch_id)%y_centroid
5914 a = patch_icpp(patch_id)%radii(1)
5915 b = patch_icpp(patch_id)%radii(2)
5916 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
5917 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
5918
5919 ! Initializing the pseudo volume fraction value to 1. The value
5920 ! be modified as the patch is laid out on the grid, but only in
5921 ! the case that smoothing of the elliptical patch's boundary is
5922 ! enabled.
5923 eta = 1._wp
5924
5925 ! Checking whether the ellipse covers a particular cell in the
5926 ! domain and verifying whether the current patch has permission
5927 ! to write to that cell. If both queries check out, the primitive
5928 ! variables of the current patch are assigned to this cell.
5929 do j = 0, n
5930 do i = 0, m
5931
5932 if (patch_icpp(patch_id)%smoothen) then
5933 eta = tanh(smooth_coeff/min(dx, dy)* &
5934 (sqrt(((x_cc(i) - x_centroid)/a)**2 + &
5935 ((y_cc(j) - y_centroid)/b)**2) &
5936 - 1._wp))*(-0.5_wp) + 0.5_wp
5937 end if
5938
5939 if ((((x_cc(i) - x_centroid)/a)**2 + &
5940 ((y_cc(j) - y_centroid)/b)**2 <= 1._wp &
5941 .and. &
5942 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
5943 .or. &
5944 patch_id_fp(i, j, 0) == smooth_patch_id) &
5945 then
5946
5947 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
5948 eta, q_prim_vf, patch_id_fp)
5949
5950
5951 if (patch_icpp(patch_id)%hcid /= dflt_int) then
5952
5953# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5954 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
5955# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5956
5957# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5958 case (200)
5959# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5960 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
5961# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5962 ! Volume Fractions
5963# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5964 q_prim_vf(advxb)%sf(i, j, 0) = eps
5965# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5966 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
5967# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5968 ! Denssities
5969# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5970 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
5971# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5972 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
5973# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5974 ! Pressure
5975# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5976 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
5977# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5978 end if
5979# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5980 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
5981# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5982 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
5983# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5984 rmax = 0.2_wp
5985# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5986
5987# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5988 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
5989# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5990 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
5991# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5992 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
5993# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5994
5995# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5996 if (r < rmax) then
5997# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
5998 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
5999# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6000 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
6001# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6002 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
6003# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6004 else if (r < 2*rmax) then
6005# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6006 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
6007# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6008 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
6009# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6010 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
6011# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6012 else
6013# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6014 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
6015# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6016 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
6017# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6018 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
6019# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6020 end if
6021# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6022 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
6023# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6024 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
6025# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6026 rmax = 0.2_wp
6027# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6028
6029# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6030 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
6031# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6032 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
6033# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6034 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
6035# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6036
6037# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6038 if (r < rmax) then
6039# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6040 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
6041# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6042 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
6043# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6044 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
6045# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6046 else if (r < 2*rmax) then
6047# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6048 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
6049# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6050 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
6051# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6052 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
6053# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6054 else
6055# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6056 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
6057# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6058 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
6059# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6060 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
6061# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6062 end if
6063# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6064
6065# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6066 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
6067# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6068 case (204) ! Rayleigh-Taylor instability
6069# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6070 rhoh = 3._wp
6071# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6072 rhol = 1._wp
6073# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6074 pref = 1.e5_wp
6075# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6076 pint = pref
6077# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6078 h = 0.7_wp
6079# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6080 lam = 0.2_wp
6081# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6082 wl = 2._wp*pi/lam
6083# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6084 amp = 0.05_wp/wl
6085# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6086
6087# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6088 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
6089# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6090
6091# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6092 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
6093# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6094
6095# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6096 if (alph < eps) alph = eps
6097# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6098 if (alph > 1._wp - eps) alph = 1._wp - eps
6099# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6100
6101# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6102 if (y_cc(j) > inth) then
6103# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6104 q_prim_vf(advxb)%sf(i, j, 0) = alph
6105# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6106 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
6107# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6108 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
6109# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6110 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
6111# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6112 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
6113# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6114 else
6115# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6116 q_prim_vf(advxb)%sf(i, j, 0) = alph
6117# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6118 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
6119# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6120 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
6121# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6122 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
6123# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6124 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
6125# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6126 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
6127# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6128 end if
6129# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6130
6131# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6132 case (205) ! 2D lung wave interaction problem
6133# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6134 h = 0.0_wp !non dim origin y
6135# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6136 lam = 1.0_wp !non dim lambda
6137# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6138 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
6139# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6140
6141# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6142 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
6143# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6144
6145# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6146 if (y_cc(j) > inth) then
6147# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6148 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
6149# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6150 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
6151# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6152 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
6153# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6154 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
6155# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6156 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
6157# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6158 end if
6159# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6160
6161# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6162 case (206) ! 2D lung wave interaction problem - horizontal domain
6163# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6164 h = 0.0_wp !non dim origin y
6165# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6166 lam = 1.0_wp !non dim lambda
6167# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6168 amp = patch_icpp(patch_id)%a(2)
6169# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6170
6171# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6172 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
6173# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6174
6175# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6176 if (x_cc(i) > intl) then !this is the liquid
6177# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6178 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
6179# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6180 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
6181# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6182 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
6183# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6184 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
6185# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6186 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
6187# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6188 end if
6189# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6190
6191# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6192 case (207) ! Kelvin Helmholtz Instability
6193# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6194 sigma = 0.05_wp/sqrt(2.0_wp)
6195# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6196 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
6197# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6198 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
6199# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6200 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
6201# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6202 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
6203# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6204
6205# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6206 case (208) ! Richtmeyer Meshkov Instability
6207# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6208 lam = 1.0_wp
6209# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6210 eps = 1.0e-6_wp
6211# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6212 ei = 5.0_wp
6213# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6214 ! Smoothening function to smooth out sharp discontinuity in the interface
6215# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6216 if (x_cc(i) <= 0.7_wp*lam) then
6217# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6218 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
6219# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6220 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
6221# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6222 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
6223# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6224 alpha_sf6 = 1.0_wp - alpha_air
6225# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6226 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
6227# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6228 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
6229# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6230 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
6231# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6232 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
6233# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6234 end if
6235# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6236
6237# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6238 case (250) ! MHD Orszag-Tang vortex
6239# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6240 ! gamma = 5/3
6241# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6242 ! rho = 25/(36*pi)
6243# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6244 ! p = 5/(12*pi)
6245# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6246 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
6247# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6248 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
6249# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6250
6251# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6252 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
6253# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6254 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
6255# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6256
6257# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6258 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
6259# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6260 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
6261# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6262
6263# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6264 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
6265# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6266 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
6267# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6268 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
6269# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6270 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
6271# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6272 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
6273# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6274 ! Linear interpolation between r=0.08 and r=1.0
6275# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6276 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
6277# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6278 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
6279# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6280 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
6281# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6282 else
6283# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6284 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
6285# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6286 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
6287# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6288 end if
6289# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6290
6291# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6292 ! case 252 is for the 2D MHD Rotor problem
6293# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6294 case (252) ! 2D MHD Rotor Problem
6295# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6296 ! Ambient conditions are set in the JSON file.
6297# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6298 ! This case imposes the dense, rotating cylinder.
6299# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6300 !
6301# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6302 ! gamma = 1.4
6303# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6304 ! Ambient medium (r > 0.1):
6305# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6306 ! rho = 1, p = 1, v = 0, B = (1,0,0)
6307# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6308 ! Rotor (r <= 0.1):
6309# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6310 ! rho = 10, p = 1
6311# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6312 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
6313# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6314
6315# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6316 ! Calculate distance squared from the center
6317# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6318 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
6319# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6320
6321# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6322 ! inner radius of 0.1
6323# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6324 if (r_sq <= 0.1**2) then
6325# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6326 ! -- Inside the rotor --
6327# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6328 ! Set density uniformly to 10
6329# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6330 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
6331# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6332
6333# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6334 ! Set vup constant rotation of rate v=2
6335# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6336 ! v_x = -omega * (y - y_c)
6337# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6338 ! v_y = omega * (x - x_c)
6339# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6340 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
6341# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6342 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
6343# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6344
6345# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6346 ! taper width of 0.015
6347# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6348 else if (r_sq <= 0.115**2) then
6349# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6350 ! linearly smooth the function between r = 0.1 and 0.115
6351# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6352 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
6353# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6354
6355# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6356 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
6357# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6358 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
6359# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6360 end if
6361# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6362
6363# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6364 case (253) ! MHD Smooth Magnetic Vortex
6365# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6366 ! Section 5.2 of
6367# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6368 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
6369# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6370 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
6371# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6372
6373# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6374 ! velocity
6375# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6376 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
6377# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6378 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
6379# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6380
6381# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6382 ! magnetic field
6383# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6384 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
6385# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6386 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
6387# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6388
6389# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6390 ! pressure
6391# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6392 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
6393# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6394
6395# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6396 case (260) ! Gaussian Divergence Pulse
6397# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6398 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
6399# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6400 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
6401# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6402 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
6403# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6404 ! ψ is initialized to zero everywhere.
6405# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6406
6407# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6408 eps_mhd = patch_icpp(patch_id)%a(2)
6409# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6410 sigma = patch_icpp(patch_id)%a(3)
6411# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6412 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
6413# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6414
6415# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6416 ! B-field
6417# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6418 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
6419# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6420
6421# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6422 case (261) ! Blob
6423# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6424 r0 = 1._wp/sqrt(8._wp)
6425# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6426 r2 = x_cc(i)**2 + y_cc(j)**2
6427# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6428 r = sqrt(r2)
6429# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6430 alpha = r/r0
6431# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6432 if (alpha < 1) then
6433# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6434 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
6435# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6436 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
6437# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6438 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
6439# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6440 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
6441# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6442 end if
6443# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6444
6445# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6446 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
6447# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6448 ! rotate by α = atan(2)
6449# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6450 alpha = atan(2._wp)
6451# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6452 cosa = cos(alpha)
6453# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6454 sina = sin(alpha)
6455# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6456 ! projection along shock normal
6457# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6458 r = x_cc(i)*cosa + y_cc(j)*sina
6459# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6460
6461# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6462 if (r <= 0.5_wp) then
6463# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6464 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
6465# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6466 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
6467# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6468 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
6469# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6470 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
6471# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6472 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
6473# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6474 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
6475# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6476 - (5._wp/sqrt(4._wp*pi))*sina
6477# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6478 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
6479# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6480 + (5._wp/sqrt(4._wp*pi))*cosa
6481# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6482 else
6483# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6484 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
6485# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6486 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
6487# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6488 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
6489# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6490 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
6491# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6492 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
6493# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6494 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
6495# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6496 - (5._wp/sqrt(4._wp*pi))*sina
6497# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6498 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
6499# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6500 + (5._wp/sqrt(4._wp*pi))*cosa
6501# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6502 end if
6503# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6504 ! v^z and B^z remain zero by default
6505# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6506
6507# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6508 case (270)
6509# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6510 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
6511# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6512
6513# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6514 if (.not. files_loaded) then
6515# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6516 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
6517# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6518 do f = 1, max_files
6519# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6520 write (file_num_str, '(I0)') f
6521# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6522 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
6523# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6524 end do
6525# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6526
6527# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6528 ! Common file reading setup
6529# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6530 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
6531# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6532 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
6533# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6534
6535# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6536 select case (num_dims)
6537# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6538 case (1, 2) ! 1D and 2D cases are similar
6539# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6540 ! Count lines
6541# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6542 line_count = 0
6543# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6544 do
6545# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6546 read (unit2, *, iostat=ios2) dummy_x, dummy_y
6547# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6548 if (ios2 /= 0) exit
6549# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6550 line_count = line_count + 1
6551# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6552 end do
6553# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6554 close (unit2)
6555# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6556
6557# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6558 xrows = line_count
6559# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6560 yrows = 1
6561# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6562 index_x = 0
6563# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6564 if (num_dims == 2) index_x = i
6565# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6566#ifdef MFC_DEBUG
6567# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6568 block
6569# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6570 use iso_fortran_env, only: output_unit
6571# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6572
6573# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6574 print *, 'm_icpp_patches.fpp:623: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
6575# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6576
6577# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6578 call flush (output_unit)
6579# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6580 end block
6581# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6582#endif
6583# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6584 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
6585# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6586
6587# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6588
6589# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6590
6591# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6592#if defined(MFC_OpenACC)
6593# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6594!$acc enter data create(x_coords, stored_values)
6595# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6596#elif defined(MFC_OpenMP)
6597# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6598!$omp target enter data map(always,alloc:x_coords, stored_values)
6599# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6600#endif
6601# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6602
6603# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6604 ! Read data from all files
6605# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6606 do f = 1, max_files
6607# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6608 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
6609# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6610 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
6611# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6612
6613# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6614 do iter = 1, xrows
6615# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6616 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
6617# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6618 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
6619# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6620 end do
6621# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6622 close (unit)
6623# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6624 end do
6625# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6626
6627# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6628 ! Calculate offsets
6629# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6630 domain_xstart = x_coords(1)
6631# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6632 x_step = x_cc(1) - x_cc(0)
6633# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6634 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
6635# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6636 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
6637# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6638 global_offset_x = nint(abs(delta_x)/x_step)
6639# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6640
6641# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6642 case (3) ! 3D case - determine grid structure
6643# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6644 ! Find yRows by counting rows with same x
6645# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6646 read (unit2, *, iostat=ios2) x0, y0, dummy_z
6647# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6648 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
6649# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6650
6651# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6652 yrows = 1
6653# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6654 do
6655# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6656 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
6657# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6658 if (ios2 /= 0) exit
6659# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6660 if (dummy_x == x0 .and. dummy_y /= y0) then
6661# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6662 yrows = yrows + 1
6663# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6664 else
6665# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6666 exit
6667# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6668 end if
6669# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6670 end do
6671# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6672 close (unit2)
6673# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6674
6675# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6676 ! Count total rows
6677# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6678 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
6679# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6680 nrows = 0
6681# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6682 do
6683# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6684 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
6685# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6686 if (ios2 /= 0) exit
6687# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6688 nrows = nrows + 1
6689# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6690 end do
6691# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6692 close (unit2)
6693# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6694
6695# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6696 xrows = nrows/yrows
6697# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6698#ifdef MFC_DEBUG
6699# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6700 block
6701# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6702 use iso_fortran_env, only: output_unit
6703# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6704
6705# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6706 print *, 'm_icpp_patches.fpp:623: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
6707# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6708
6709# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6710 call flush (output_unit)
6711# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6712 end block
6713# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6714#endif
6715# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6716 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
6717# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6718
6719# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6720
6721# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6722
6723# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6724
6725# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6726#if defined(MFC_OpenACC)
6727# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6728!$acc enter data create(x_coords, y_coords, stored_values)
6729# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6730#elif defined(MFC_OpenMP)
6731# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6732!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
6733# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6734#endif
6735# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6736 index_x = i
6737# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6738 index_y = j
6739# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6740
6741# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6742 ! Read all files
6743# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6744 do f = 1, max_files
6745# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6746 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
6747# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6748 if (ios /= 0) then
6749# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6750 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
6751# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6752 cycle
6753# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6754 end if
6755# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6756
6757# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6758 iter = 0
6759# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6760 do iix = 1, xrows
6761# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6762 do iiy = 1, yrows
6763# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6764 iter = iter + 1
6765# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6766 if (f == 1) then
6767# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6768 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
6769# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6770 else
6771# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6772 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
6773# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6774 end if
6775# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6776 if (ios /= 0) call s_mpi_abort("Error reading data")
6777# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6778 end do
6779# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6780 end do
6781# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6782 close (unit)
6783# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6784 end do
6785# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6786
6787# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6788 ! Calculate offsets
6789# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6790 x_step = x_cc(1) - x_cc(0)
6791# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6792 y_step = y_cc(1) - y_cc(0)
6793# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6794 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
6795# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6796 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
6797# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6798 global_offset_x = nint(abs(delta_x)/x_step)
6799# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6800 global_offset_y = nint(abs(delta_y)/y_step)
6801# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6802 end select
6803# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6804
6805# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6806 files_loaded = .true.
6807# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6808 end if
6809# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6810
6811# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6812 ! Data assignment
6813# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6814 select case (num_dims)
6815# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6816 case (1)
6817# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6818 idx = i + 1 + global_offset_x
6819# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6820 do f = 1, sys_size
6821# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6822 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
6823# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6824 end do
6825# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6826
6827# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6828 case (2)
6829# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6830 idx = i + 1 + global_offset_x - index_x
6831# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6832 do f = 1, sys_size - 1
6833# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6834 jump = merge(1, 0, f >= momxe)
6835# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6836 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
6837# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6838 end do
6839# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6840 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
6841# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6842
6843# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6844 case (3)
6845# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6846 idx = i + 1 + global_offset_x - index_x
6847# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6848 idy = j + 1 + global_offset_y - index_y
6849# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6850 do f = 1, sys_size - 1
6851# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6852 jump = merge(1, 0, f >= momxe)
6853# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6854 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
6855# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6856 end do
6857# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6858 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
6859# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6860 end select
6861# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6862
6863# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6864 case (280)
6865# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6866 ! This is patch is hard-coded for test suite optimization used in the
6867# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6868 ! 2D_isentropicvortex case:
6869# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6870 ! This analytic patch uses geometry 2
6871# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6872 if (patch_id == 1) then
6873# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6874 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
6875# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6876 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
6877# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6878 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
6879# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6880 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
6881# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6882 end if
6883# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6884
6885# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6886 case (281)
6887# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6888 ! This is patch is hard-coded for test suite optimization used in the
6889# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6890 ! 2D_acoustic_pulse case:
6891# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6892 ! This analytic patch uses geometry 2
6893# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6894 if (patch_id == 2) then
6895# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6896 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
6897# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6898 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
6899# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6900 end if
6901# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6902
6903# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6904 case (282)
6905# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6906 ! This is patch is hard-coded for test suite optimization used in the
6907# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6908 ! 2D_zero_circ_vortex case:
6909# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6910 ! This analytic patch uses geometry 2
6911# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6912 if (patch_id == 2) then
6913# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6914 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
6915# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6916 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
6917# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6918 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
6919# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6920 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
6921# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6922 end if
6923# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6924
6925# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6926 case default
6927# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6928 if (proc_rank == 0) then
6929# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6930 call s_int_to_str(patch_id, istr)
6931# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6932 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
6933# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6934 end if
6935# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6936
6937# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6938 end select
6939# 623 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6940
6941 end if
6942
6943 ! Updating the patch identities bookkeeping variable
6944 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
6945 end if
6946 end do
6947 end do
6948 if (allocated(stored_values)) then
6949# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6950#ifdef MFC_DEBUG
6951# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6952 block
6953# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6954 use iso_fortran_env, only: output_unit
6955# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6956
6957# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6958 print *, 'm_icpp_patches.fpp:631: ', '@:DEALLOCATE(stored_values)'
6959# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6960
6961# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6962 call flush (output_unit)
6963# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6964 end block
6965# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6966#endif
6967# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6968
6969# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6970#if defined(MFC_OpenACC)
6971# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6972!$acc exit data delete(stored_values)
6973# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6974#elif defined(MFC_OpenMP)
6975# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6976!$omp target exit data map(release:stored_values)
6977# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6978#endif
6979# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6980 deallocate (stored_values)
6981# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6982#ifdef MFC_DEBUG
6983# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6984 block
6985# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6986 use iso_fortran_env, only: output_unit
6987# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6988
6989# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6990 print *, 'm_icpp_patches.fpp:631: ', '@:DEALLOCATE(x_coords)'
6991# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6992
6993# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6994 call flush (output_unit)
6995# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6996 end block
6997# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
6998#endif
6999# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7000
7001# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7002#if defined(MFC_OpenACC)
7003# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7004!$acc exit data delete(x_coords)
7005# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7006#elif defined(MFC_OpenMP)
7007# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7008!$omp target exit data map(release:x_coords)
7009# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7010#endif
7011# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7012 deallocate (x_coords)
7013# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7014 end if
7015# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7016
7017# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7018 if (allocated(y_coords)) then
7019# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7020#ifdef MFC_DEBUG
7021# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7022 block
7023# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7024 use iso_fortran_env, only: output_unit
7025# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7026
7027# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7028 print *, 'm_icpp_patches.fpp:631: ', '@:DEALLOCATE(y_coords)'
7029# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7030
7031# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7032 call flush (output_unit)
7033# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7034 end block
7035# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7036#endif
7037# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7038
7039# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7040#if defined(MFC_OpenACC)
7041# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7042!$acc exit data delete(y_coords)
7043# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7044#elif defined(MFC_OpenMP)
7045# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7046!$omp target exit data map(release:y_coords)
7047# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7048#endif
7049# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7050 deallocate (y_coords)
7051# 631 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7052 end if
7053
7054 end subroutine s_icpp_ellipse
7055
7056 !> The ellipsoidal patch is a 3D geometry. The geometry of
7057 !! the patch is well-defined when its centroid and radii
7058 !! are provided. Note that the ellipsoidal patch DOES allow
7059 !! for the smoothing of its boundary
7060 !! @param patch_id is the patch identifier
7061 !! @param patch_id_fp Array to track patch ids
7062 !! @param q_prim_vf Array of primitive variables
7063 subroutine s_icpp_ellipsoid(patch_id, patch_id_fp, q_prim_vf)
7064
7065 ! Patch identifier
7066 integer, intent(in) :: patch_id
7067#ifdef MFC_MIXED_PRECISION
7068 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
7069#else
7070 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
7071#endif
7072 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
7073
7074 ! Generic loop iterators
7075 integer :: i, j, k
7076 real(wp) :: a, b, c
7077 integer :: xRows, yRows, nRows, iix, iiy, max_files
7078# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7079 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
7080# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7081 real(wp) :: x_len, x_step, y_len, y_step
7082# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7083 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
7084# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7085 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
7086# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7087 real(wp) :: delta_x, delta_y
7088# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7089 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
7090# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7091 character(len=200) :: errmsg
7092# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7093 real(wp), allocatable :: stored_values(:, :, :)
7094# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7095 real(wp), allocatable :: x_coords(:), y_coords(:)
7096# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7097 logical :: files_loaded = .false.
7098# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7099 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
7100# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7101 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
7102# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7103 character(len=20) :: file_num_str ! For storing the file number as a string
7104# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7105 character(len=20) :: zeros_part ! For the trailing zeros part
7106# 656 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7107 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
7108 ! Place any declaration of intermediate variables here
7109# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7110 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
7111# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7112 real(wp) :: eps
7113# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7114
7115# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7116 ! IGR Jets
7117# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7118 ! Arrays to stor position and radii of jets from input file
7119# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7120 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
7121# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7122 ! Variables to describe initial condition of jet
7123# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7124 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
7125# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7126 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
7127# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7128
7129# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7130 real(wp), dimension(0:n, 0:p) :: rcut_arr
7131# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7132 integer :: l, q, s ! Iterators for reading input files
7133# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7134 integer :: start, end ! Ints to keep track of position in file
7135# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7136 character(len=1000) :: line ! String to store line in ile
7137# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7138 character(len=25) :: value ! String to store value in line
7139# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7140 integer :: NJet ! Number of jets
7141# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7142
7143# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7144 eps = 1e-9_wp
7145# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7146
7147# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7148 if (patch_icpp(patch_id)%hcid == 303) then
7149# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7150 eps_smooth = 3._wp
7151# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7152 open (unit=10, file="njet.txt", status="old", action="read")
7153# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7154 read (10, *) njet
7155# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7156 close (10)
7157# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7158
7159# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7160 allocate (y_th_arr(0:njet - 1))
7161# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7162 allocate (z_th_arr(0:njet - 1))
7163# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7164 allocate (r_th_arr(0:njet - 1))
7165# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7166
7167# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7168 open (unit=10, file="jets.csv", status="old", action="read")
7169# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7170 do q = 0, njet - 1
7171# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7172 read (10, '(A)') line ! Read a full line as a string
7173# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7174 start = 1
7175# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7176
7177# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7178 do l = 0, 2
7179# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7180 end = index(line(start:), ',') ! Find the next comma
7181# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7182 if (end == 0) then
7183# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7184 value = trim(adjustl(line(start:))) ! Last value in the line
7185# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7186 else
7187# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7188 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
7189# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7190 start = start + end ! Move to next value
7191# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7192 end if
7193# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7194 if (l == 0) then
7195# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7196 read (value, *) y_th_arr(q) ! Convert string to numeric value
7197# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7198 elseif (l == 1) then
7199# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7200 read (value, *) z_th_arr(q)
7201# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7202 else
7203# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7204 read (value, *) r_th_arr(q)
7205# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7206 end if
7207# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7208 end do
7209# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7210 end do
7211# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7212 close (10)
7213# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7214
7215# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7216 do q = 0, p
7217# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7218 do l = 0, n
7219# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7220 rcut = 0._wp
7221# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7222 do s = 0, njet - 1
7223# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7224 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
7225# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7226 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
7227# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7228 end do
7229# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7230 rcut_arr(l, q) = rcut
7231# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7232 end do
7233# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7234 end do
7235# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7236 end if
7237# 657 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7238
7239
7240 ! Transferring the ellipsoidal patch's radii, centroid, smearing
7241 ! patch identity, and smearing coefficient information
7242 x_centroid = patch_icpp(patch_id)%x_centroid
7243 y_centroid = patch_icpp(patch_id)%y_centroid
7244 z_centroid = patch_icpp(patch_id)%z_centroid
7245 a = patch_icpp(patch_id)%radii(1)
7246 b = patch_icpp(patch_id)%radii(2)
7247 c = patch_icpp(patch_id)%radii(3)
7248 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
7249 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
7250
7251 ! Initializing the pseudo volume fraction value to 1. The value
7252 ! be modified as the patch is laid out on the grid, but only in
7253 ! the case that smoothing of the ellipsoidal patch's boundary is
7254 ! enabled.
7255 eta = 1._wp
7256
7257 ! Checking whether the ellipsoid covers a particular cell in the
7258 ! domain and verifying whether the current patch has permission
7259 ! to write to that cell. If both queries check out, the primitive
7260 ! variables of the current patch are assigned to this cell.
7261 do k = 0, p
7262 do j = 0, n
7263 do i = 0, m
7264
7265 if (grid_geometry == 3) then
7267 else
7268 cart_y = y_cc(j)
7269 cart_z = z_cc(k)
7270 end if
7271
7272 if (patch_icpp(patch_id)%smoothen) then
7273 eta = tanh(smooth_coeff/min(dx, dy, dz)* &
7274 (sqrt(((x_cc(i) - x_centroid)/a)**2 + &
7275 ((cart_y - y_centroid)/b)**2 + &
7276 ((cart_z - z_centroid)/c)**2) &
7277 - 1._wp))*(-0.5_wp) + 0.5_wp
7278 end if
7279
7280 if ((((x_cc(i) - x_centroid)/a)**2 + &
7281 ((cart_y - y_centroid)/b)**2 + &
7282 ((cart_z - z_centroid)/c)**2 <= 1._wp &
7283 .and. &
7284 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) &
7285 .or. &
7286 patch_id_fp(i, j, k) == smooth_patch_id) &
7287 then
7288
7289 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
7290 eta, q_prim_vf, patch_id_fp)
7291
7292
7293 if (patch_icpp(patch_id)%hcid /= dflt_int) then
7294
7295# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7296 select case (patch_icpp(patch_id)%hcid)
7297# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7298 case (300) ! Rayleigh-Taylor instability
7299# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7300 rhoh = 3._wp
7301# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7302 rhol = 1._wp
7303# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7304 pref = 1.e5_wp
7305# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7306 pint = pref
7307# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7308 h = 0.7_wp
7309# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7310 lam = 0.2_wp
7311# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7312 wl = 2._wp*pi/lam
7313# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7314 amp = 0.025_wp/wl
7315# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7316
7317# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7318 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
7319# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7320
7321# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7322 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
7323# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7324
7325# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7326 if (alph < eps) alph = eps
7327# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7328 if (alph > 1._wp - eps) alph = 1._wp - eps
7329# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7330
7331# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7332 if (y_cc(j) > inth) then
7333# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7334 q_prim_vf(advxb)%sf(i, j, k) = alph
7335# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7336 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
7337# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7338 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
7339# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7340 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
7341# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7342 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
7343# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7344 else
7345# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7346 q_prim_vf(advxb)%sf(i, j, k) = alph
7347# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7348 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
7349# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7350 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
7351# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7352 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
7353# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7354 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
7355# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7356 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
7357# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7358 end if
7359# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7360
7361# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7362 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
7363# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7364 h = 0.0_wp
7365# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7366 lam = 1.0_wp
7367# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7368 amp = patch_icpp(patch_id)%a(2)
7369# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7370 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
7371# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7372 if (x_cc(i) > inth) then
7373# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7374 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
7375# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7376 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
7377# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7378 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
7379# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7380 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
7381# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7382 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
7383# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7384 end if
7385# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7386
7387# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7388 case (302) ! 3D Jet with IGR
7389# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7390 ux_th = 10*sqrt(1.4*0.4)
7391# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7392 ux_am = 0.0*sqrt(1.4)
7393# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7394 p_th = 2.0_wp
7395# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7396 p_am = 1.0_wp
7397# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7398 rho_th = 1._wp
7399# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7400 rho_am = 1._wp
7401# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7402 y_th = 0.0_wp
7403# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7404 z_th = 0.0_wp
7405# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7406 r_th = 1._wp
7407# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7408 eps_smooth = 1._wp
7409# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7410 eps = 1e-6
7411# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7412
7413# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7414 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
7415# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7416 rcut = f_cut_on(r - r_th, eps_smooth)
7417# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7418 xcut = f_cut_on(x_cc(i), eps_smooth)
7419# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7420
7421# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7422 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
7423# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7424 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
7425# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7426 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
7427# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7428
7429# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7430 if (num_fluids == 1) then
7431# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7432 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
7433# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7434 else
7435# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7436 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
7437# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7438 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
7439# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7440 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
7441# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7442 end if
7443# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7444
7445# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7446 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
7447# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7448
7449# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7450 case (303) ! 3D Multijet
7451# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7452
7453# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7454 eps_smooth = 3.0_wp
7455# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7456 ux_th = 10*sqrt(1.4*0.4)
7457# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7458 ux_am = 2.5*sqrt(1.4*0.4)
7459# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7460 p_th = 0.8_wp
7461# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7462 p_am = 0.4_wp
7463# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7464 rho_th = 1._wp
7465# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7466 rho_am = 1._wp
7467# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7468 eps = 1e-6
7469# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7470
7471# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7472 rcut = rcut_arr(j, k)
7473# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7474 xcut = f_cut_on(x_cc(i), eps_smooth)
7475# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7476
7477# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7478 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
7479# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7480 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
7481# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7482 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
7483# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7484
7485# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7486 if (num_fluids == 1) then
7487# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7488 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
7489# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7490 else
7491# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7492 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
7493# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7494 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
7495# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7496 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
7497# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7498 end if
7499# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7500
7501# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7502 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
7503# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7504
7505# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7506 case (370)
7507# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7508 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
7509# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7510
7511# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7512 if (.not. files_loaded) then
7513# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7514 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
7515# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7516 do f = 1, max_files
7517# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7518 write (file_num_str, '(I0)') f
7519# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7520 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
7521# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7522 end do
7523# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7524
7525# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7526 ! Common file reading setup
7527# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7528 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
7529# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7530 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
7531# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7532
7533# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7534 select case (num_dims)
7535# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7536 case (1, 2) ! 1D and 2D cases are similar
7537# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7538 ! Count lines
7539# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7540 line_count = 0
7541# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7542 do
7543# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7544 read (unit2, *, iostat=ios2) dummy_x, dummy_y
7545# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7546 if (ios2 /= 0) exit
7547# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7548 line_count = line_count + 1
7549# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7550 end do
7551# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7552 close (unit2)
7553# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7554
7555# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7556 xrows = line_count
7557# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7558 yrows = 1
7559# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7560 index_x = 0
7561# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7562 if (num_dims == 2) index_x = i
7563# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7564#ifdef MFC_DEBUG
7565# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7566 block
7567# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7568 use iso_fortran_env, only: output_unit
7569# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7570
7571# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7572 print *, 'm_icpp_patches.fpp:713: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
7573# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7574
7575# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7576 call flush (output_unit)
7577# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7578 end block
7579# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7580#endif
7581# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7582 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
7583# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7584
7585# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7586
7587# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7588
7589# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7590#if defined(MFC_OpenACC)
7591# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7592!$acc enter data create(x_coords, stored_values)
7593# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7594#elif defined(MFC_OpenMP)
7595# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7596!$omp target enter data map(always,alloc:x_coords, stored_values)
7597# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7598#endif
7599# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7600
7601# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7602 ! Read data from all files
7603# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7604 do f = 1, max_files
7605# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7606 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
7607# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7608 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
7609# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7610
7611# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7612 do iter = 1, xrows
7613# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7614 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
7615# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7616 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
7617# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7618 end do
7619# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7620 close (unit)
7621# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7622 end do
7623# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7624
7625# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7626 ! Calculate offsets
7627# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7628 domain_xstart = x_coords(1)
7629# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7630 x_step = x_cc(1) - x_cc(0)
7631# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7632 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
7633# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7634 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
7635# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7636 global_offset_x = nint(abs(delta_x)/x_step)
7637# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7638
7639# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7640 case (3) ! 3D case - determine grid structure
7641# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7642 ! Find yRows by counting rows with same x
7643# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7644 read (unit2, *, iostat=ios2) x0, y0, dummy_z
7645# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7646 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
7647# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7648
7649# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7650 yrows = 1
7651# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7652 do
7653# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7654 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
7655# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7656 if (ios2 /= 0) exit
7657# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7658 if (dummy_x == x0 .and. dummy_y /= y0) then
7659# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7660 yrows = yrows + 1
7661# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7662 else
7663# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7664 exit
7665# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7666 end if
7667# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7668 end do
7669# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7670 close (unit2)
7671# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7672
7673# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7674 ! Count total rows
7675# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7676 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
7677# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7678 nrows = 0
7679# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7680 do
7681# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7682 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
7683# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7684 if (ios2 /= 0) exit
7685# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7686 nrows = nrows + 1
7687# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7688 end do
7689# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7690 close (unit2)
7691# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7692
7693# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7694 xrows = nrows/yrows
7695# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7696#ifdef MFC_DEBUG
7697# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7698 block
7699# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7700 use iso_fortran_env, only: output_unit
7701# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7702
7703# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7704 print *, 'm_icpp_patches.fpp:713: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
7705# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7706
7707# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7708 call flush (output_unit)
7709# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7710 end block
7711# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7712#endif
7713# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7714 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
7715# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7716
7717# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7718
7719# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7720
7721# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7722
7723# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7724#if defined(MFC_OpenACC)
7725# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7726!$acc enter data create(x_coords, y_coords, stored_values)
7727# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7728#elif defined(MFC_OpenMP)
7729# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7730!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
7731# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7732#endif
7733# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7734 index_x = i
7735# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7736 index_y = j
7737# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7738
7739# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7740 ! Read all files
7741# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7742 do f = 1, max_files
7743# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7744 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
7745# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7746 if (ios /= 0) then
7747# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7748 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
7749# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7750 cycle
7751# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7752 end if
7753# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7754
7755# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7756 iter = 0
7757# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7758 do iix = 1, xrows
7759# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7760 do iiy = 1, yrows
7761# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7762 iter = iter + 1
7763# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7764 if (f == 1) then
7765# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7766 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
7767# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7768 else
7769# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7770 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
7771# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7772 end if
7773# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7774 if (ios /= 0) call s_mpi_abort("Error reading data")
7775# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7776 end do
7777# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7778 end do
7779# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7780 close (unit)
7781# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7782 end do
7783# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7784
7785# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7786 ! Calculate offsets
7787# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7788 x_step = x_cc(1) - x_cc(0)
7789# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7790 y_step = y_cc(1) - y_cc(0)
7791# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7792 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
7793# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7794 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
7795# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7796 global_offset_x = nint(abs(delta_x)/x_step)
7797# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7798 global_offset_y = nint(abs(delta_y)/y_step)
7799# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7800 end select
7801# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7802
7803# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7804 files_loaded = .true.
7805# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7806 end if
7807# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7808
7809# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7810 ! Data assignment
7811# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7812 select case (num_dims)
7813# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7814 case (1)
7815# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7816 idx = i + 1 + global_offset_x
7817# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7818 do f = 1, sys_size
7819# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7820 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
7821# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7822 end do
7823# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7824
7825# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7826 case (2)
7827# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7828 idx = i + 1 + global_offset_x - index_x
7829# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7830 do f = 1, sys_size - 1
7831# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7832 jump = merge(1, 0, f >= momxe)
7833# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7834 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
7835# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7836 end do
7837# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7838 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
7839# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7840
7841# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7842 case (3)
7843# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7844 idx = i + 1 + global_offset_x - index_x
7845# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7846 idy = j + 1 + global_offset_y - index_y
7847# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7848 do f = 1, sys_size - 1
7849# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7850 jump = merge(1, 0, f >= momxe)
7851# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7852 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
7853# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7854 end do
7855# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7856 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
7857# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7858 end select
7859# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7860
7861# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7862 case (380)
7863# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7864 ! This is patch is hard-coded for test suite optimization used in the
7865# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7866 ! 3D_TaylorGreenVortex case:
7867# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7868 ! This analytic patch used geometry 9
7869# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7870 mach = 0.1
7871# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7872 if (patch_id == 1) then
7873# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7874 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
7875# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7876 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
7877# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7878 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
7879# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7880 end if
7881# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7882
7883# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7884 case default
7885# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7886 call s_int_to_str(patch_id, istr)
7887# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7888 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
7889# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7890 end select
7891# 713 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7892
7893 end if
7894
7895 ! Updating the patch identities bookkeeping variable
7896 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, k) = patch_id
7897 end if
7898 end do
7899 end do
7900 end do
7901 if (allocated(stored_values)) then
7902# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7903#ifdef MFC_DEBUG
7904# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7905 block
7906# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7907 use iso_fortran_env, only: output_unit
7908# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7909
7910# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7911 print *, 'm_icpp_patches.fpp:722: ', '@:DEALLOCATE(stored_values)'
7912# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7913
7914# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7915 call flush (output_unit)
7916# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7917 end block
7918# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7919#endif
7920# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7921
7922# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7923#if defined(MFC_OpenACC)
7924# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7925!$acc exit data delete(stored_values)
7926# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7927#elif defined(MFC_OpenMP)
7928# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7929!$omp target exit data map(release:stored_values)
7930# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7931#endif
7932# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7933 deallocate (stored_values)
7934# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7935#ifdef MFC_DEBUG
7936# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7937 block
7938# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7939 use iso_fortran_env, only: output_unit
7940# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7941
7942# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7943 print *, 'm_icpp_patches.fpp:722: ', '@:DEALLOCATE(x_coords)'
7944# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7945
7946# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7947 call flush (output_unit)
7948# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7949 end block
7950# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7951#endif
7952# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7953
7954# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7955#if defined(MFC_OpenACC)
7956# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7957!$acc exit data delete(x_coords)
7958# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7959#elif defined(MFC_OpenMP)
7960# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7961!$omp target exit data map(release:x_coords)
7962# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7963#endif
7964# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7965 deallocate (x_coords)
7966# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7967 end if
7968# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7969
7970# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7971 if (allocated(y_coords)) then
7972# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7973#ifdef MFC_DEBUG
7974# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7975 block
7976# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7977 use iso_fortran_env, only: output_unit
7978# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7979
7980# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7981 print *, 'm_icpp_patches.fpp:722: ', '@:DEALLOCATE(y_coords)'
7982# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7983
7984# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7985 call flush (output_unit)
7986# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7987 end block
7988# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7989#endif
7990# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7991
7992# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7993#if defined(MFC_OpenACC)
7994# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7995!$acc exit data delete(y_coords)
7996# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7997#elif defined(MFC_OpenMP)
7998# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
7999!$omp target exit data map(release:y_coords)
8000# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8001#endif
8002# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8003 deallocate (y_coords)
8004# 722 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8005 end if
8006
8007 end subroutine s_icpp_ellipsoid
8008
8009 !> The rectangular patch is a 2D geometry that may be used,
8010 !! for example, in creating a solid boundary, or pre-/post-
8011 !! shock region, in alignment with the axes of the Cartesian
8012 !! coordinate system. The geometry of such a patch is well-
8013 !! defined when its centroid and lengths in the x- and y-
8014 !! coordinate directions are provided. Please note that the
8015 !! rectangular patch DOES NOT allow for the smoothing of its
8016 !! boundaries.
8017 !! @param patch_id is the patch identifier
8018 !! @param patch_id_fp Array to track patch ids
8019 !! @param q_prim_vf Array of primitive variables
8020 subroutine s_icpp_rectangle(patch_id, patch_id_fp, q_prim_vf)
8021
8022 integer, intent(in) :: patch_id
8023#ifdef MFC_MIXED_PRECISION
8024 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
8025#else
8026 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
8027#endif
8028 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
8029
8030 integer :: i, j, k !< generic loop iterators
8031 real(wp) :: pi_inf, gamma, lit_gamma !< Equation of state parameters
8032 integer :: xRows, yRows, nRows, iix, iiy, max_files
8033# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8034 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
8035# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8036 real(wp) :: x_len, x_step, y_len, y_step
8037# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8038 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
8039# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8040 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
8041# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8042 real(wp) :: delta_x, delta_y
8043# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8044 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
8045# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8046 character(len=200) :: errmsg
8047# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8048 real(wp), allocatable :: stored_values(:, :, :)
8049# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8050 real(wp), allocatable :: x_coords(:), y_coords(:)
8051# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8052 logical :: files_loaded = .false.
8053# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8054 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
8055# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8056 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
8057# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8058 character(len=20) :: file_num_str ! For storing the file number as a string
8059# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8060 character(len=20) :: zeros_part ! For the trailing zeros part
8061# 749 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8062 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
8063 ! Place any declaration of intermediate variables here
8064# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8065 real(wp) :: eps, eps_mhd, C_mhd
8066# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8067 real(wp) :: r, rmax, gam, umax, p0
8068# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8069 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, intL, alph
8070# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8071 real(wp) :: factor
8072# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8073 real(wp) :: r0, alpha, r2
8074# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8075 real(wp) :: sinA, cosA
8076# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8077
8078# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8079 real(wp) :: r_sq
8080# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8081
8082# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8083 ! # 207
8084# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8085 real(wp) :: sigma, gauss1, gauss2
8086# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8087 ! # 208
8088# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8089 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
8090# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8091
8092# 750 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8093 eps = 1.e-9_wp
8094
8095 pi_inf = pi_infs(1)
8096 gamma = gammas(1)
8097 lit_gamma = gs_min(1)
8098
8099 ! Transferring the rectangle's centroid and length information
8100 x_centroid = patch_icpp(patch_id)%x_centroid
8101 y_centroid = patch_icpp(patch_id)%y_centroid
8102 length_x = patch_icpp(patch_id)%length_x
8103 length_y = patch_icpp(patch_id)%length_y
8104
8105 ! Computing the beginning and the end x- and y-coordinates of the
8106 ! rectangle based on its centroid and lengths
8107 x_boundary%beg = x_centroid - 0.5_wp*length_x
8108 x_boundary%end = x_centroid + 0.5_wp*length_x
8109 y_boundary%beg = y_centroid - 0.5_wp*length_y
8110 y_boundary%end = y_centroid + 0.5_wp*length_y
8111
8112 ! Since the rectangular patch does not allow for its boundaries to
8113 ! be smoothed out, the pseudo volume fraction is set to 1 to ensure
8114 ! that only the current patch contributes to the fluid state in the
8115 ! cells that this patch covers.
8116 eta = 1._wp
8117
8118 ! Checking whether the rectangle covers a particular cell in the
8119 ! domain and verifying whether the current patch has the permission
8120 ! to write to that cell. If both queries check out, the primitive
8121 ! variables of the current patch are assigned to this cell.
8122 do j = 0, n
8123 do i = 0, m
8124 if (x_boundary%beg <= x_cc(i) .and. &
8125 x_boundary%end >= x_cc(i) .and. &
8126 y_boundary%beg <= y_cc(j) .and. &
8127 y_boundary%end >= y_cc(j)) then
8128 if (patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
8129 then
8130
8131 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
8132 eta, q_prim_vf, patch_id_fp)
8133
8134
8135
8136 if (patch_icpp(patch_id)%hcid /= dflt_int) then
8137
8138# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8139 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
8140# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8141
8142# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8143 case (200)
8144# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8145 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
8146# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8147 ! Volume Fractions
8148# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8149 q_prim_vf(advxb)%sf(i, j, 0) = eps
8150# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8151 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
8152# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8153 ! Denssities
8154# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8155 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
8156# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8157 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
8158# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8159 ! Pressure
8160# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8161 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
8162# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8163 end if
8164# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8165 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
8166# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8167 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
8168# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8169 rmax = 0.2_wp
8170# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8171
8172# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8173 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
8174# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8175 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
8176# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8177 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
8178# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8179
8180# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8181 if (r < rmax) then
8182# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8183 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
8184# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8185 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
8186# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8187 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
8188# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8189 else if (r < 2*rmax) then
8190# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8191 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
8192# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8193 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
8194# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8195 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
8196# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8197 else
8198# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8199 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
8200# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8201 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
8202# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8203 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
8204# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8205 end if
8206# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8207 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
8208# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8209 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
8210# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8211 rmax = 0.2_wp
8212# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8213
8214# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8215 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
8216# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8217 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
8218# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8219 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
8220# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8221
8222# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8223 if (r < rmax) then
8224# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8225 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
8226# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8227 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
8228# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8229 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
8230# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8231 else if (r < 2*rmax) then
8232# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8233 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
8234# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8235 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
8236# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8237 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
8238# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8239 else
8240# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8241 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
8242# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8243 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
8244# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8245 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
8246# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8247 end if
8248# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8249
8250# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8251 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
8252# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8253 case (204) ! Rayleigh-Taylor instability
8254# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8255 rhoh = 3._wp
8256# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8257 rhol = 1._wp
8258# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8259 pref = 1.e5_wp
8260# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8261 pint = pref
8262# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8263 h = 0.7_wp
8264# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8265 lam = 0.2_wp
8266# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8267 wl = 2._wp*pi/lam
8268# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8269 amp = 0.05_wp/wl
8270# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8271
8272# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8273 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
8274# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8275
8276# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8277 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
8278# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8279
8280# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8281 if (alph < eps) alph = eps
8282# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8283 if (alph > 1._wp - eps) alph = 1._wp - eps
8284# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8285
8286# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8287 if (y_cc(j) > inth) then
8288# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8289 q_prim_vf(advxb)%sf(i, j, 0) = alph
8290# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8291 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
8292# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8293 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
8294# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8295 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
8296# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8297 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
8298# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8299 else
8300# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8301 q_prim_vf(advxb)%sf(i, j, 0) = alph
8302# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8303 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
8304# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8305 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
8306# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8307 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
8308# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8309 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
8310# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8311 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
8312# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8313 end if
8314# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8315
8316# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8317 case (205) ! 2D lung wave interaction problem
8318# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8319 h = 0.0_wp !non dim origin y
8320# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8321 lam = 1.0_wp !non dim lambda
8322# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8323 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
8324# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8325
8326# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8327 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
8328# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8329
8330# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8331 if (y_cc(j) > inth) then
8332# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8333 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
8334# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8335 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
8336# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8337 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
8338# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8339 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
8340# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8341 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
8342# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8343 end if
8344# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8345
8346# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8347 case (206) ! 2D lung wave interaction problem - horizontal domain
8348# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8349 h = 0.0_wp !non dim origin y
8350# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8351 lam = 1.0_wp !non dim lambda
8352# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8353 amp = patch_icpp(patch_id)%a(2)
8354# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8355
8356# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8357 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
8358# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8359
8360# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8361 if (x_cc(i) > intl) then !this is the liquid
8362# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8363 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
8364# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8365 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
8366# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8367 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
8368# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8369 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
8370# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8371 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
8372# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8373 end if
8374# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8375
8376# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8377 case (207) ! Kelvin Helmholtz Instability
8378# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8379 sigma = 0.05_wp/sqrt(2.0_wp)
8380# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8381 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
8382# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8383 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
8384# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8385 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
8386# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8387 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
8388# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8389
8390# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8391 case (208) ! Richtmeyer Meshkov Instability
8392# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8393 lam = 1.0_wp
8394# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8395 eps = 1.0e-6_wp
8396# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8397 ei = 5.0_wp
8398# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8399 ! Smoothening function to smooth out sharp discontinuity in the interface
8400# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8401 if (x_cc(i) <= 0.7_wp*lam) then
8402# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8403 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
8404# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8405 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
8406# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8407 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
8408# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8409 alpha_sf6 = 1.0_wp - alpha_air
8410# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8411 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
8412# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8413 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
8414# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8415 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
8416# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8417 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
8418# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8419 end if
8420# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8421
8422# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8423 case (250) ! MHD Orszag-Tang vortex
8424# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8425 ! gamma = 5/3
8426# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8427 ! rho = 25/(36*pi)
8428# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8429 ! p = 5/(12*pi)
8430# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8431 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
8432# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8433 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
8434# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8435
8436# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8437 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
8438# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8439 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
8440# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8441
8442# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8443 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
8444# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8445 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
8446# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8447
8448# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8449 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
8450# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8451 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
8452# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8453 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
8454# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8455 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
8456# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8457 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
8458# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8459 ! Linear interpolation between r=0.08 and r=1.0
8460# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8461 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
8462# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8463 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
8464# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8465 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
8466# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8467 else
8468# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8469 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
8470# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8471 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
8472# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8473 end if
8474# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8475
8476# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8477 ! case 252 is for the 2D MHD Rotor problem
8478# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8479 case (252) ! 2D MHD Rotor Problem
8480# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8481 ! Ambient conditions are set in the JSON file.
8482# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8483 ! This case imposes the dense, rotating cylinder.
8484# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8485 !
8486# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8487 ! gamma = 1.4
8488# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8489 ! Ambient medium (r > 0.1):
8490# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8491 ! rho = 1, p = 1, v = 0, B = (1,0,0)
8492# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8493 ! Rotor (r <= 0.1):
8494# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8495 ! rho = 10, p = 1
8496# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8497 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
8498# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8499
8500# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8501 ! Calculate distance squared from the center
8502# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8503 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
8504# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8505
8506# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8507 ! inner radius of 0.1
8508# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8509 if (r_sq <= 0.1**2) then
8510# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8511 ! -- Inside the rotor --
8512# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8513 ! Set density uniformly to 10
8514# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8515 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
8516# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8517
8518# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8519 ! Set vup constant rotation of rate v=2
8520# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8521 ! v_x = -omega * (y - y_c)
8522# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8523 ! v_y = omega * (x - x_c)
8524# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8525 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
8526# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8527 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
8528# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8529
8530# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8531 ! taper width of 0.015
8532# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8533 else if (r_sq <= 0.115**2) then
8534# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8535 ! linearly smooth the function between r = 0.1 and 0.115
8536# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8537 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
8538# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8539
8540# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8541 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
8542# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8543 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
8544# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8545 end if
8546# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8547
8548# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8549 case (253) ! MHD Smooth Magnetic Vortex
8550# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8551 ! Section 5.2 of
8552# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8553 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
8554# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8555 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
8556# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8557
8558# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8559 ! velocity
8560# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8561 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
8562# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8563 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
8564# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8565
8566# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8567 ! magnetic field
8568# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8569 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
8570# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8571 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
8572# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8573
8574# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8575 ! pressure
8576# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8577 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
8578# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8579
8580# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8581 case (260) ! Gaussian Divergence Pulse
8582# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8583 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
8584# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8585 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
8586# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8587 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
8588# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8589 ! ψ is initialized to zero everywhere.
8590# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8591
8592# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8593 eps_mhd = patch_icpp(patch_id)%a(2)
8594# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8595 sigma = patch_icpp(patch_id)%a(3)
8596# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8597 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
8598# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8599
8600# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8601 ! B-field
8602# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8603 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
8604# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8605
8606# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8607 case (261) ! Blob
8608# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8609 r0 = 1._wp/sqrt(8._wp)
8610# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8611 r2 = x_cc(i)**2 + y_cc(j)**2
8612# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8613 r = sqrt(r2)
8614# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8615 alpha = r/r0
8616# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8617 if (alpha < 1) then
8618# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8619 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
8620# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8621 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
8622# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8623 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
8624# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8625 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
8626# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8627 end if
8628# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8629
8630# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8631 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
8632# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8633 ! rotate by α = atan(2)
8634# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8635 alpha = atan(2._wp)
8636# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8637 cosa = cos(alpha)
8638# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8639 sina = sin(alpha)
8640# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8641 ! projection along shock normal
8642# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8643 r = x_cc(i)*cosa + y_cc(j)*sina
8644# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8645
8646# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8647 if (r <= 0.5_wp) then
8648# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8649 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
8650# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8651 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
8652# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8653 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
8654# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8655 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
8656# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8657 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
8658# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8659 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
8660# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8661 - (5._wp/sqrt(4._wp*pi))*sina
8662# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8663 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
8664# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8665 + (5._wp/sqrt(4._wp*pi))*cosa
8666# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8667 else
8668# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8669 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
8670# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8671 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
8672# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8673 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
8674# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8675 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
8676# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8677 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
8678# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8679 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
8680# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8681 - (5._wp/sqrt(4._wp*pi))*sina
8682# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8683 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
8684# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8685 + (5._wp/sqrt(4._wp*pi))*cosa
8686# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8687 end if
8688# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8689 ! v^z and B^z remain zero by default
8690# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8691
8692# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8693 case (270)
8694# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8695 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
8696# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8697
8698# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8699 if (.not. files_loaded) then
8700# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8701 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
8702# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8703 do f = 1, max_files
8704# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8705 write (file_num_str, '(I0)') f
8706# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8707 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
8708# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8709 end do
8710# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8711
8712# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8713 ! Common file reading setup
8714# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8715 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
8716# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8717 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
8718# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8719
8720# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8721 select case (num_dims)
8722# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8723 case (1, 2) ! 1D and 2D cases are similar
8724# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8725 ! Count lines
8726# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8727 line_count = 0
8728# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8729 do
8730# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8731 read (unit2, *, iostat=ios2) dummy_x, dummy_y
8732# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8733 if (ios2 /= 0) exit
8734# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8735 line_count = line_count + 1
8736# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8737 end do
8738# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8739 close (unit2)
8740# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8741
8742# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8743 xrows = line_count
8744# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8745 yrows = 1
8746# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8747 index_x = 0
8748# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8749 if (num_dims == 2) index_x = i
8750# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8751#ifdef MFC_DEBUG
8752# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8753 block
8754# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8755 use iso_fortran_env, only: output_unit
8756# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8757
8758# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8759 print *, 'm_icpp_patches.fpp:794: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
8760# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8761
8762# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8763 call flush (output_unit)
8764# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8765 end block
8766# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8767#endif
8768# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8769 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
8770# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8771
8772# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8773
8774# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8775
8776# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8777#if defined(MFC_OpenACC)
8778# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8779!$acc enter data create(x_coords, stored_values)
8780# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8781#elif defined(MFC_OpenMP)
8782# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8783!$omp target enter data map(always,alloc:x_coords, stored_values)
8784# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8785#endif
8786# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8787
8788# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8789 ! Read data from all files
8790# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8791 do f = 1, max_files
8792# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8793 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
8794# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8795 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
8796# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8797
8798# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8799 do iter = 1, xrows
8800# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8801 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
8802# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8803 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
8804# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8805 end do
8806# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8807 close (unit)
8808# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8809 end do
8810# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8811
8812# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8813 ! Calculate offsets
8814# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8815 domain_xstart = x_coords(1)
8816# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8817 x_step = x_cc(1) - x_cc(0)
8818# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8819 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
8820# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8821 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
8822# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8823 global_offset_x = nint(abs(delta_x)/x_step)
8824# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8825
8826# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8827 case (3) ! 3D case - determine grid structure
8828# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8829 ! Find yRows by counting rows with same x
8830# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8831 read (unit2, *, iostat=ios2) x0, y0, dummy_z
8832# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8833 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
8834# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8835
8836# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8837 yrows = 1
8838# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8839 do
8840# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8841 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
8842# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8843 if (ios2 /= 0) exit
8844# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8845 if (dummy_x == x0 .and. dummy_y /= y0) then
8846# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8847 yrows = yrows + 1
8848# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8849 else
8850# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8851 exit
8852# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8853 end if
8854# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8855 end do
8856# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8857 close (unit2)
8858# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8859
8860# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8861 ! Count total rows
8862# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8863 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
8864# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8865 nrows = 0
8866# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8867 do
8868# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8869 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
8870# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8871 if (ios2 /= 0) exit
8872# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8873 nrows = nrows + 1
8874# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8875 end do
8876# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8877 close (unit2)
8878# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8879
8880# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8881 xrows = nrows/yrows
8882# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8883#ifdef MFC_DEBUG
8884# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8885 block
8886# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8887 use iso_fortran_env, only: output_unit
8888# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8889
8890# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8891 print *, 'm_icpp_patches.fpp:794: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
8892# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8893
8894# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8895 call flush (output_unit)
8896# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8897 end block
8898# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8899#endif
8900# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8901 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
8902# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8903
8904# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8905
8906# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8907
8908# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8909
8910# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8911#if defined(MFC_OpenACC)
8912# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8913!$acc enter data create(x_coords, y_coords, stored_values)
8914# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8915#elif defined(MFC_OpenMP)
8916# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8917!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
8918# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8919#endif
8920# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8921 index_x = i
8922# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8923 index_y = j
8924# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8925
8926# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8927 ! Read all files
8928# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8929 do f = 1, max_files
8930# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8931 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
8932# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8933 if (ios /= 0) then
8934# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8935 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
8936# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8937 cycle
8938# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8939 end if
8940# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8941
8942# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8943 iter = 0
8944# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8945 do iix = 1, xrows
8946# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8947 do iiy = 1, yrows
8948# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8949 iter = iter + 1
8950# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8951 if (f == 1) then
8952# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8953 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
8954# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8955 else
8956# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8957 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
8958# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8959 end if
8960# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8961 if (ios /= 0) call s_mpi_abort("Error reading data")
8962# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8963 end do
8964# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8965 end do
8966# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8967 close (unit)
8968# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8969 end do
8970# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8971
8972# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8973 ! Calculate offsets
8974# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8975 x_step = x_cc(1) - x_cc(0)
8976# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8977 y_step = y_cc(1) - y_cc(0)
8978# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8979 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
8980# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8981 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
8982# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8983 global_offset_x = nint(abs(delta_x)/x_step)
8984# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8985 global_offset_y = nint(abs(delta_y)/y_step)
8986# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8987 end select
8988# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8989
8990# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8991 files_loaded = .true.
8992# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8993 end if
8994# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8995
8996# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8997 ! Data assignment
8998# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
8999 select case (num_dims)
9000# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9001 case (1)
9002# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9003 idx = i + 1 + global_offset_x
9004# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9005 do f = 1, sys_size
9006# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9007 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
9008# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9009 end do
9010# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9011
9012# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9013 case (2)
9014# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9015 idx = i + 1 + global_offset_x - index_x
9016# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9017 do f = 1, sys_size - 1
9018# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9019 jump = merge(1, 0, f >= momxe)
9020# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9021 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
9022# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9023 end do
9024# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9025 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
9026# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9027
9028# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9029 case (3)
9030# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9031 idx = i + 1 + global_offset_x - index_x
9032# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9033 idy = j + 1 + global_offset_y - index_y
9034# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9035 do f = 1, sys_size - 1
9036# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9037 jump = merge(1, 0, f >= momxe)
9038# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9039 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
9040# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9041 end do
9042# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9043 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
9044# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9045 end select
9046# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9047
9048# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9049 case (280)
9050# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9051 ! This is patch is hard-coded for test suite optimization used in the
9052# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9053 ! 2D_isentropicvortex case:
9054# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9055 ! This analytic patch uses geometry 2
9056# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9057 if (patch_id == 1) then
9058# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9059 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
9060# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9061 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
9062# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9063 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
9064# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9065 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
9066# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9067 end if
9068# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9069
9070# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9071 case (281)
9072# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9073 ! This is patch is hard-coded for test suite optimization used in the
9074# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9075 ! 2D_acoustic_pulse case:
9076# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9077 ! This analytic patch uses geometry 2
9078# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9079 if (patch_id == 2) then
9080# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9081 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
9082# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9083 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
9084# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9085 end if
9086# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9087
9088# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9089 case (282)
9090# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9091 ! This is patch is hard-coded for test suite optimization used in the
9092# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9093 ! 2D_zero_circ_vortex case:
9094# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9095 ! This analytic patch uses geometry 2
9096# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9097 if (patch_id == 2) then
9098# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9099 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
9100# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9101 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
9102# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9103 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
9104# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9105 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
9106# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9107 end if
9108# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9109
9110# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9111 case default
9112# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9113 if (proc_rank == 0) then
9114# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9115 call s_int_to_str(patch_id, istr)
9116# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9117 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
9118# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9119 end if
9120# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9121
9122# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9123 end select
9124# 794 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9125
9126 end if
9127
9128 if ((q_prim_vf(1)%sf(i, j, 0) < 1.e-10) .and. (model_eqns == 4)) then
9129 !zero density, reassign according to Tait EOS
9130 q_prim_vf(1)%sf(i, j, 0) = &
9131 (((q_prim_vf(e_idx)%sf(i, j, 0) + pi_inf)/(pref + pi_inf))**(1._wp/lit_gamma))* &
9132 rhoref*(1._wp - q_prim_vf(alf_idx)%sf(i, j, 0))
9133 end if
9134
9135 ! Updating the patch identities bookkeeping variable
9136 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
9137 end if
9138 end if
9139 end do
9140 end do
9141 if (allocated(stored_values)) then
9142# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9143#ifdef MFC_DEBUG
9144# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9145 block
9146# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9147 use iso_fortran_env, only: output_unit
9148# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9149
9150# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9151 print *, 'm_icpp_patches.fpp:810: ', '@:DEALLOCATE(stored_values)'
9152# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9153
9154# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9155 call flush (output_unit)
9156# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9157 end block
9158# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9159#endif
9160# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9161
9162# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9163#if defined(MFC_OpenACC)
9164# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9165!$acc exit data delete(stored_values)
9166# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9167#elif defined(MFC_OpenMP)
9168# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9169!$omp target exit data map(release:stored_values)
9170# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9171#endif
9172# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9173 deallocate (stored_values)
9174# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9175#ifdef MFC_DEBUG
9176# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9177 block
9178# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9179 use iso_fortran_env, only: output_unit
9180# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9181
9182# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9183 print *, 'm_icpp_patches.fpp:810: ', '@:DEALLOCATE(x_coords)'
9184# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9185
9186# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9187 call flush (output_unit)
9188# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9189 end block
9190# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9191#endif
9192# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9193
9194# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9195#if defined(MFC_OpenACC)
9196# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9197!$acc exit data delete(x_coords)
9198# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9199#elif defined(MFC_OpenMP)
9200# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9201!$omp target exit data map(release:x_coords)
9202# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9203#endif
9204# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9205 deallocate (x_coords)
9206# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9207 end if
9208# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9209
9210# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9211 if (allocated(y_coords)) then
9212# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9213#ifdef MFC_DEBUG
9214# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9215 block
9216# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9217 use iso_fortran_env, only: output_unit
9218# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9219
9220# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9221 print *, 'm_icpp_patches.fpp:810: ', '@:DEALLOCATE(y_coords)'
9222# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9223
9224# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9225 call flush (output_unit)
9226# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9227 end block
9228# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9229#endif
9230# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9231
9232# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9233#if defined(MFC_OpenACC)
9234# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9235!$acc exit data delete(y_coords)
9236# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9237#elif defined(MFC_OpenMP)
9238# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9239!$omp target exit data map(release:y_coords)
9240# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9241#endif
9242# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9243 deallocate (y_coords)
9244# 810 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9245 end if
9246
9247 end subroutine s_icpp_rectangle
9248
9249 !> The swept line patch is a 2D geometry that may be used,
9250 !! for example, in creating a solid boundary, or pre-/post-
9251 !! shock region, at an angle with respect to the axes of the
9252 !! Cartesian coordinate system. The geometry of the patch is
9253 !! well-defined when its centroid and normal vector, aimed
9254 !! in the sweep direction, are provided. Note that the sweep
9255 !! line patch DOES allow the smoothing of its boundary.
9256 !! @param patch_id is the patch identifier
9257 !! @param patch_id_fp Array to track patch ids
9258 !! @param q_prim_vf Array of primitive variables
9259 subroutine s_icpp_sweep_line(patch_id, patch_id_fp, q_prim_vf)
9260
9261 integer, intent(in) :: patch_id
9262#ifdef MFC_MIXED_PRECISION
9263 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
9264#else
9265 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
9266#endif
9267 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
9268
9269 integer :: i, j, k !< Generic loop operators
9270 real(wp) :: a, b, c
9271 integer :: xRows, yRows, nRows, iix, iiy, max_files
9272# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9273 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
9274# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9275 real(wp) :: x_len, x_step, y_len, y_step
9276# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9277 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
9278# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9279 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
9280# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9281 real(wp) :: delta_x, delta_y
9282# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9283 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
9284# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9285 character(len=200) :: errmsg
9286# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9287 real(wp), allocatable :: stored_values(:, :, :)
9288# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9289 real(wp), allocatable :: x_coords(:), y_coords(:)
9290# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9291 logical :: files_loaded = .false.
9292# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9293 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
9294# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9295 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
9296# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9297 character(len=20) :: file_num_str ! For storing the file number as a string
9298# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9299 character(len=20) :: zeros_part ! For the trailing zeros part
9300# 836 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9301 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
9302 ! Place any declaration of intermediate variables here
9303# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9304 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
9305# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9306 real(wp) :: eps
9307# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9308
9309# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9310 ! IGR Jets
9311# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9312 ! Arrays to stor position and radii of jets from input file
9313# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9314 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
9315# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9316 ! Variables to describe initial condition of jet
9317# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9318 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
9319# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9320 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
9321# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9322
9323# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9324 real(wp), dimension(0:n, 0:p) :: rcut_arr
9325# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9326 integer :: l, q, s ! Iterators for reading input files
9327# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9328 integer :: start, end ! Ints to keep track of position in file
9329# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9330 character(len=1000) :: line ! String to store line in ile
9331# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9332 character(len=25) :: value ! String to store value in line
9333# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9334 integer :: NJet ! Number of jets
9335# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9336
9337# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9338 eps = 1e-9_wp
9339# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9340
9341# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9342 if (patch_icpp(patch_id)%hcid == 303) then
9343# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9344 eps_smooth = 3._wp
9345# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9346 open (unit=10, file="njet.txt", status="old", action="read")
9347# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9348 read (10, *) njet
9349# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9350 close (10)
9351# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9352
9353# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9354 allocate (y_th_arr(0:njet - 1))
9355# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9356 allocate (z_th_arr(0:njet - 1))
9357# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9358 allocate (r_th_arr(0:njet - 1))
9359# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9360
9361# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9362 open (unit=10, file="jets.csv", status="old", action="read")
9363# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9364 do q = 0, njet - 1
9365# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9366 read (10, '(A)') line ! Read a full line as a string
9367# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9368 start = 1
9369# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9370
9371# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9372 do l = 0, 2
9373# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9374 end = index(line(start:), ',') ! Find the next comma
9375# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9376 if (end == 0) then
9377# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9378 value = trim(adjustl(line(start:))) ! Last value in the line
9379# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9380 else
9381# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9382 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
9383# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9384 start = start + end ! Move to next value
9385# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9386 end if
9387# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9388 if (l == 0) then
9389# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9390 read (value, *) y_th_arr(q) ! Convert string to numeric value
9391# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9392 elseif (l == 1) then
9393# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9394 read (value, *) z_th_arr(q)
9395# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9396 else
9397# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9398 read (value, *) r_th_arr(q)
9399# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9400 end if
9401# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9402 end do
9403# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9404 end do
9405# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9406 close (10)
9407# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9408
9409# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9410 do q = 0, p
9411# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9412 do l = 0, n
9413# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9414 rcut = 0._wp
9415# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9416 do s = 0, njet - 1
9417# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9418 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
9419# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9420 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
9421# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9422 end do
9423# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9424 rcut_arr(l, q) = rcut
9425# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9426 end do
9427# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9428 end do
9429# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9430 end if
9431# 837 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9432
9433
9434 ! Transferring the centroid information of the line to be swept
9435 x_centroid = patch_icpp(patch_id)%x_centroid
9436 y_centroid = patch_icpp(patch_id)%y_centroid
9437 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
9438 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
9439
9440 ! Obtaining coefficients of the equation describing the sweep line
9441 a = patch_icpp(patch_id)%normal(1)
9442 b = patch_icpp(patch_id)%normal(2)
9443 c = -a*x_centroid - b*y_centroid
9444
9445 ! Initializing the pseudo volume fraction value to 1. The value will
9446 ! be modified as the patch is laid out on the grid, but only in the
9447 ! case that smoothing of the sweep line patch's boundary is enabled.
9448 eta = 1._wp
9449
9450 ! Checking whether the region swept by the line covers a particular
9451 ! cell in the domain and verifying whether the current patch has the
9452 ! permission to write to that cell. If both queries check out, the
9453 ! primitive variables of the current patch are written to this cell.
9454 do j = 0, n
9455 do i = 0, m
9456
9457 if (patch_icpp(patch_id)%smoothen) then
9458 eta = 5.e-1_wp + 5.e-1_wp*tanh(smooth_coeff/min(dx, dy) &
9459 *(a*x_cc(i) + b*y_cc(j) + c) &
9460 /sqrt(a**2 + b**2))
9461 end if
9462
9463 if ((a*x_cc(i) + b*y_cc(j) + c >= 0._wp &
9464 .and. &
9465 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
9466 .or. &
9467 patch_id_fp(i, j, 0) == smooth_patch_id) &
9468 then
9469 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
9470 eta, q_prim_vf, patch_id_fp)
9471
9472
9473 if (patch_icpp(patch_id)%hcid /= dflt_int) then
9474
9475# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9476 select case (patch_icpp(patch_id)%hcid)
9477# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9478 case (300) ! Rayleigh-Taylor instability
9479# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9480 rhoh = 3._wp
9481# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9482 rhol = 1._wp
9483# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9484 pref = 1.e5_wp
9485# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9486 pint = pref
9487# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9488 h = 0.7_wp
9489# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9490 lam = 0.2_wp
9491# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9492 wl = 2._wp*pi/lam
9493# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9494 amp = 0.025_wp/wl
9495# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9496
9497# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9498 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
9499# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9500
9501# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9502 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
9503# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9504
9505# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9506 if (alph < eps) alph = eps
9507# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9508 if (alph > 1._wp - eps) alph = 1._wp - eps
9509# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9510
9511# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9512 if (y_cc(j) > inth) then
9513# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9514 q_prim_vf(advxb)%sf(i, j, k) = alph
9515# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9516 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
9517# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9518 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
9519# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9520 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
9521# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9522 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
9523# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9524 else
9525# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9526 q_prim_vf(advxb)%sf(i, j, k) = alph
9527# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9528 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
9529# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9530 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
9531# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9532 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
9533# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9534 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
9535# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9536 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
9537# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9538 end if
9539# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9540
9541# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9542 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
9543# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9544 h = 0.0_wp
9545# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9546 lam = 1.0_wp
9547# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9548 amp = patch_icpp(patch_id)%a(2)
9549# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9550 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
9551# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9552 if (x_cc(i) > inth) then
9553# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9554 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
9555# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9556 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
9557# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9558 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
9559# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9560 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
9561# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9562 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
9563# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9564 end if
9565# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9566
9567# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9568 case (302) ! 3D Jet with IGR
9569# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9570 ux_th = 10*sqrt(1.4*0.4)
9571# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9572 ux_am = 0.0*sqrt(1.4)
9573# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9574 p_th = 2.0_wp
9575# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9576 p_am = 1.0_wp
9577# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9578 rho_th = 1._wp
9579# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9580 rho_am = 1._wp
9581# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9582 y_th = 0.0_wp
9583# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9584 z_th = 0.0_wp
9585# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9586 r_th = 1._wp
9587# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9588 eps_smooth = 1._wp
9589# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9590 eps = 1e-6
9591# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9592
9593# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9594 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
9595# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9596 rcut = f_cut_on(r - r_th, eps_smooth)
9597# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9598 xcut = f_cut_on(x_cc(i), eps_smooth)
9599# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9600
9601# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9602 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
9603# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9604 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
9605# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9606 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
9607# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9608
9609# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9610 if (num_fluids == 1) then
9611# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9612 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
9613# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9614 else
9615# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9616 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
9617# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9618 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
9619# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9620 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
9621# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9622 end if
9623# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9624
9625# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9626 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
9627# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9628
9629# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9630 case (303) ! 3D Multijet
9631# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9632
9633# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9634 eps_smooth = 3.0_wp
9635# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9636 ux_th = 10*sqrt(1.4*0.4)
9637# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9638 ux_am = 2.5*sqrt(1.4*0.4)
9639# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9640 p_th = 0.8_wp
9641# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9642 p_am = 0.4_wp
9643# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9644 rho_th = 1._wp
9645# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9646 rho_am = 1._wp
9647# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9648 eps = 1e-6
9649# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9650
9651# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9652 rcut = rcut_arr(j, k)
9653# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9654 xcut = f_cut_on(x_cc(i), eps_smooth)
9655# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9656
9657# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9658 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
9659# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9660 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
9661# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9662 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
9663# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9664
9665# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9666 if (num_fluids == 1) then
9667# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9668 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
9669# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9670 else
9671# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9672 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
9673# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9674 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
9675# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9676 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
9677# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9678 end if
9679# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9680
9681# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9682 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
9683# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9684
9685# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9686 case (370)
9687# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9688 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
9689# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9690
9691# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9692 if (.not. files_loaded) then
9693# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9694 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
9695# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9696 do f = 1, max_files
9697# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9698 write (file_num_str, '(I0)') f
9699# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9700 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
9701# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9702 end do
9703# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9704
9705# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9706 ! Common file reading setup
9707# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9708 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
9709# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9710 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
9711# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9712
9713# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9714 select case (num_dims)
9715# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9716 case (1, 2) ! 1D and 2D cases are similar
9717# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9718 ! Count lines
9719# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9720 line_count = 0
9721# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9722 do
9723# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9724 read (unit2, *, iostat=ios2) dummy_x, dummy_y
9725# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9726 if (ios2 /= 0) exit
9727# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9728 line_count = line_count + 1
9729# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9730 end do
9731# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9732 close (unit2)
9733# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9734
9735# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9736 xrows = line_count
9737# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9738 yrows = 1
9739# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9740 index_x = 0
9741# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9742 if (num_dims == 2) index_x = i
9743# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9744#ifdef MFC_DEBUG
9745# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9746 block
9747# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9748 use iso_fortran_env, only: output_unit
9749# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9750
9751# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9752 print *, 'm_icpp_patches.fpp:879: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
9753# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9754
9755# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9756 call flush (output_unit)
9757# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9758 end block
9759# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9760#endif
9761# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9762 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
9763# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9764
9765# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9766
9767# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9768
9769# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9770#if defined(MFC_OpenACC)
9771# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9772!$acc enter data create(x_coords, stored_values)
9773# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9774#elif defined(MFC_OpenMP)
9775# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9776!$omp target enter data map(always,alloc:x_coords, stored_values)
9777# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9778#endif
9779# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9780
9781# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9782 ! Read data from all files
9783# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9784 do f = 1, max_files
9785# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9786 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
9787# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9788 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
9789# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9790
9791# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9792 do iter = 1, xrows
9793# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9794 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
9795# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9796 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
9797# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9798 end do
9799# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9800 close (unit)
9801# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9802 end do
9803# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9804
9805# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9806 ! Calculate offsets
9807# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9808 domain_xstart = x_coords(1)
9809# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9810 x_step = x_cc(1) - x_cc(0)
9811# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9812 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
9813# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9814 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
9815# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9816 global_offset_x = nint(abs(delta_x)/x_step)
9817# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9818
9819# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9820 case (3) ! 3D case - determine grid structure
9821# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9822 ! Find yRows by counting rows with same x
9823# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9824 read (unit2, *, iostat=ios2) x0, y0, dummy_z
9825# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9826 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
9827# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9828
9829# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9830 yrows = 1
9831# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9832 do
9833# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9834 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
9835# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9836 if (ios2 /= 0) exit
9837# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9838 if (dummy_x == x0 .and. dummy_y /= y0) then
9839# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9840 yrows = yrows + 1
9841# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9842 else
9843# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9844 exit
9845# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9846 end if
9847# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9848 end do
9849# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9850 close (unit2)
9851# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9852
9853# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9854 ! Count total rows
9855# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9856 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
9857# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9858 nrows = 0
9859# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9860 do
9861# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9862 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
9863# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9864 if (ios2 /= 0) exit
9865# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9866 nrows = nrows + 1
9867# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9868 end do
9869# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9870 close (unit2)
9871# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9872
9873# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9874 xrows = nrows/yrows
9875# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9876#ifdef MFC_DEBUG
9877# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9878 block
9879# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9880 use iso_fortran_env, only: output_unit
9881# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9882
9883# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9884 print *, 'm_icpp_patches.fpp:879: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
9885# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9886
9887# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9888 call flush (output_unit)
9889# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9890 end block
9891# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9892#endif
9893# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9894 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
9895# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9896
9897# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9898
9899# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9900
9901# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9902
9903# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9904#if defined(MFC_OpenACC)
9905# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9906!$acc enter data create(x_coords, y_coords, stored_values)
9907# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9908#elif defined(MFC_OpenMP)
9909# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9910!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
9911# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9912#endif
9913# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9914 index_x = i
9915# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9916 index_y = j
9917# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9918
9919# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9920 ! Read all files
9921# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9922 do f = 1, max_files
9923# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9924 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
9925# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9926 if (ios /= 0) then
9927# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9928 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
9929# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9930 cycle
9931# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9932 end if
9933# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9934
9935# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9936 iter = 0
9937# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9938 do iix = 1, xrows
9939# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9940 do iiy = 1, yrows
9941# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9942 iter = iter + 1
9943# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9944 if (f == 1) then
9945# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9946 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
9947# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9948 else
9949# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9950 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
9951# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9952 end if
9953# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9954 if (ios /= 0) call s_mpi_abort("Error reading data")
9955# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9956 end do
9957# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9958 end do
9959# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9960 close (unit)
9961# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9962 end do
9963# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9964
9965# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9966 ! Calculate offsets
9967# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9968 x_step = x_cc(1) - x_cc(0)
9969# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9970 y_step = y_cc(1) - y_cc(0)
9971# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9972 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
9973# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9974 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
9975# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9976 global_offset_x = nint(abs(delta_x)/x_step)
9977# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9978 global_offset_y = nint(abs(delta_y)/y_step)
9979# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9980 end select
9981# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9982
9983# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9984 files_loaded = .true.
9985# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9986 end if
9987# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9988
9989# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9990 ! Data assignment
9991# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9992 select case (num_dims)
9993# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9994 case (1)
9995# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9996 idx = i + 1 + global_offset_x
9997# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
9998 do f = 1, sys_size
9999# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10000 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
10001# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10002 end do
10003# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10004
10005# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10006 case (2)
10007# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10008 idx = i + 1 + global_offset_x - index_x
10009# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10010 do f = 1, sys_size - 1
10011# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10012 jump = merge(1, 0, f >= momxe)
10013# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10014 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
10015# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10016 end do
10017# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10018 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
10019# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10020
10021# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10022 case (3)
10023# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10024 idx = i + 1 + global_offset_x - index_x
10025# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10026 idy = j + 1 + global_offset_y - index_y
10027# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10028 do f = 1, sys_size - 1
10029# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10030 jump = merge(1, 0, f >= momxe)
10031# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10032 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
10033# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10034 end do
10035# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10036 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
10037# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10038 end select
10039# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10040
10041# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10042 case (380)
10043# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10044 ! This is patch is hard-coded for test suite optimization used in the
10045# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10046 ! 3D_TaylorGreenVortex case:
10047# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10048 ! This analytic patch used geometry 9
10049# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10050 mach = 0.1
10051# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10052 if (patch_id == 1) then
10053# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10054 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
10055# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10056 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
10057# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10058 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
10059# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10060 end if
10061# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10062
10063# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10064 case default
10065# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10066 call s_int_to_str(patch_id, istr)
10067# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10068 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
10069# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10070 end select
10071# 879 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10072
10073 end if
10074
10075 ! Updating the patch identities bookkeeping variable
10076 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
10077 end if
10078
10079 end do
10080 end do
10081 if (allocated(stored_values)) then
10082# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10083#ifdef MFC_DEBUG
10084# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10085 block
10086# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10087 use iso_fortran_env, only: output_unit
10088# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10089
10090# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10091 print *, 'm_icpp_patches.fpp:888: ', '@:DEALLOCATE(stored_values)'
10092# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10093
10094# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10095 call flush (output_unit)
10096# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10097 end block
10098# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10099#endif
10100# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10101
10102# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10103#if defined(MFC_OpenACC)
10104# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10105!$acc exit data delete(stored_values)
10106# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10107#elif defined(MFC_OpenMP)
10108# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10109!$omp target exit data map(release:stored_values)
10110# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10111#endif
10112# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10113 deallocate (stored_values)
10114# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10115#ifdef MFC_DEBUG
10116# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10117 block
10118# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10119 use iso_fortran_env, only: output_unit
10120# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10121
10122# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10123 print *, 'm_icpp_patches.fpp:888: ', '@:DEALLOCATE(x_coords)'
10124# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10125
10126# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10127 call flush (output_unit)
10128# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10129 end block
10130# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10131#endif
10132# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10133
10134# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10135#if defined(MFC_OpenACC)
10136# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10137!$acc exit data delete(x_coords)
10138# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10139#elif defined(MFC_OpenMP)
10140# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10141!$omp target exit data map(release:x_coords)
10142# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10143#endif
10144# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10145 deallocate (x_coords)
10146# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10147 end if
10148# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10149
10150# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10151 if (allocated(y_coords)) then
10152# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10153#ifdef MFC_DEBUG
10154# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10155 block
10156# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10157 use iso_fortran_env, only: output_unit
10158# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10159
10160# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10161 print *, 'm_icpp_patches.fpp:888: ', '@:DEALLOCATE(y_coords)'
10162# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10163
10164# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10165 call flush (output_unit)
10166# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10167 end block
10168# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10169#endif
10170# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10171
10172# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10173#if defined(MFC_OpenACC)
10174# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10175!$acc exit data delete(y_coords)
10176# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10177#elif defined(MFC_OpenMP)
10178# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10179!$omp target exit data map(release:y_coords)
10180# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10181#endif
10182# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10183 deallocate (y_coords)
10184# 888 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10185 end if
10186
10187 end subroutine s_icpp_sweep_line
10188
10189 !> The Taylor Green vortex is 2D decaying vortex that may be used,
10190 !! for example, to verify the effects of viscous attenuation.
10191 !! Geometry of the patch is well-defined when its centroid
10192 !! are provided.
10193 !! @param patch_id is the patch identifier
10194 !! @param patch_id_fp Array to track patch ids
10195 !! @param q_prim_vf Array of primitive variables
10196 subroutine s_icpp_2d_taylorgreen_vortex(patch_id, patch_id_fp, q_prim_vf)
10197
10198 integer, intent(in) :: patch_id
10199#ifdef MFC_MIXED_PRECISION
10200 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
10201#else
10202 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
10203#endif
10204 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
10205
10206 integer :: i, j, k !< generic loop iterators
10207 real(wp) :: pi_inf, gamma, lit_gamma !< equation of state parameters
10208 real(wp) :: L0, U0 !< Taylor Green Vortex parameters
10209 integer :: xRows, yRows, nRows, iix, iiy, max_files
10210# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10211 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
10212# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10213 real(wp) :: x_len, x_step, y_len, y_step
10214# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10215 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
10216# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10217 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
10218# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10219 real(wp) :: delta_x, delta_y
10220# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10221 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
10222# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10223 character(len=200) :: errmsg
10224# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10225 real(wp), allocatable :: stored_values(:, :, :)
10226# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10227 real(wp), allocatable :: x_coords(:), y_coords(:)
10228# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10229 logical :: files_loaded = .false.
10230# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10231 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
10232# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10233 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
10234# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10235 character(len=20) :: file_num_str ! For storing the file number as a string
10236# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10237 character(len=20) :: zeros_part ! For the trailing zeros part
10238# 912 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10239 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
10240 ! Place any declaration of intermediate variables here
10241# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10242 real(wp) :: eps, eps_mhd, C_mhd
10243# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10244 real(wp) :: r, rmax, gam, umax, p0
10245# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10246 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, intL, alph
10247# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10248 real(wp) :: factor
10249# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10250 real(wp) :: r0, alpha, r2
10251# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10252 real(wp) :: sinA, cosA
10253# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10254
10255# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10256 real(wp) :: r_sq
10257# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10258
10259# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10260 ! # 207
10261# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10262 real(wp) :: sigma, gauss1, gauss2
10263# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10264 ! # 208
10265# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10266 real(wp) :: ei, d, fsm, alpha_air, alpha_sf6
10267# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10268
10269# 913 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10270 eps = 1.e-9_wp
10271
10272 pi_inf = pi_infs(1)
10273 gamma = gammas(1)
10274 lit_gamma = gs_min(1)
10275
10276 ! Transferring the patch's centroid and length information
10277 x_centroid = patch_icpp(patch_id)%x_centroid
10278 y_centroid = patch_icpp(patch_id)%y_centroid
10279 length_x = patch_icpp(patch_id)%length_x
10280 length_y = patch_icpp(patch_id)%length_y
10281
10282 ! Computing the beginning and the end x- and y-coordinates
10283 ! of the patch based on its centroid and lengths
10284 x_boundary%beg = x_centroid - 0.5_wp*length_x
10285 x_boundary%end = x_centroid + 0.5_wp*length_x
10286 y_boundary%beg = y_centroid - 0.5_wp*length_y
10287 y_boundary%end = y_centroid + 0.5_wp*length_y
10288
10289 ! Since the patch doesn't allow for its boundaries to be
10290 ! smoothed out, the pseudo volume fraction is set to 1 to
10291 ! ensure that only the current patch contributes to the fluid
10292 ! state in the cells that this patch covers.
10293 eta = 1._wp
10294 ! U0 is the characteristic velocity of the vortex
10295 u0 = patch_icpp(patch_id)%vel(1)
10296 ! L0 is the characteristic length of the vortex
10297 l0 = patch_icpp(patch_id)%vel(2)
10298 ! Checking whether the patch covers a particular cell in the
10299 ! domain and verifying whether the current patch has the
10300 ! permission to write to that cell. If both queries check out,
10301 ! the primitive variables of the current patch are assigned
10302 ! to this cell.
10303 do j = 0, n
10304 do i = 0, m
10305 if (x_boundary%beg <= x_cc(i) .and. &
10306 x_boundary%end >= x_cc(i) .and. &
10307 y_boundary%beg <= y_cc(j) .and. &
10308 y_boundary%end >= y_cc(j) .and. &
10309 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) then
10310
10311 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
10312 eta, q_prim_vf, patch_id_fp)
10313
10314
10315 if (patch_icpp(patch_id)%hcid /= dflt_int) then
10316
10317# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10318 select case (patch_icpp(patch_id)%hcid) ! 2D_hardcoded_ic example case
10319# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10320
10321# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10322 case (200)
10323# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10324 if (y_cc(j) <= (-x_cc(i)**3 + 1)**(1._wp/3._wp)) then
10325# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10326 ! Volume Fractions
10327# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10328 q_prim_vf(advxb)%sf(i, j, 0) = eps
10329# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10330 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - eps
10331# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10332 ! Denssities
10333# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10334 q_prim_vf(contxb)%sf(i, j, 0) = eps*1000._wp
10335# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10336 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - eps)*1._wp
10337# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10338 ! Pressure
10339# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10340 q_prim_vf(e_idx)%sf(i, j, 0) = 1000._wp
10341# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10342 end if
10343# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10344 case (202) ! Gresho vortex (Gouasmi et al 2022 JCP)
10345# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10346 r = ((x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2)**0.5_wp
10347# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10348 rmax = 0.2_wp
10349# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10350
10351# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10352 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
10353# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10354 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
10355# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10356 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
10357# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10358
10359# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10360 if (r < rmax) then
10361# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10362 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
10363# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10364 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
10365# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10366 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
10367# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10368 else if (r < 2*rmax) then
10369# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10370 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
10371# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10372 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
10373# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10374 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4*(1 - (r/rmax) + log(r/rmax)))
10375# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10376 else
10377# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10378 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
10379# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10380 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
10381# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10382 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*(-2 + 4*log(2._wp))
10383# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10384 end if
10385# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10386 case (203) ! Gresho vortex (Gouasmi et al 2022 JCP) with density correction
10387# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10388 r = ((x_cc(i) - 0.5_wp)**2._wp + (y_cc(j) - 0.5_wp)**2)**0.5_wp
10389# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10390 rmax = 0.2_wp
10391# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10392
10393# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10394 gam = 1._wp + 1._wp/fluid_pp(1)%gamma
10395# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10396 umax = 2*pi*rmax*patch_icpp(patch_id)%vel(2)
10397# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10398 p0 = umax**2*(1._wp/(gam*patch_icpp(patch_id)%vel(2)**2) - 0.5_wp)
10399# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10400
10401# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10402 if (r < rmax) then
10403# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10404 q_prim_vf(momxb)%sf(i, j, 0) = -(y_cc(j) - 0.5_wp)*umax/rmax
10405# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10406 q_prim_vf(momxe)%sf(i, j, 0) = (x_cc(i) - 0.5_wp)*umax/rmax
10407# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10408 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2._wp/2._wp)
10409# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10410 else if (r < 2*rmax) then
10411# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10412 q_prim_vf(momxb)%sf(i, j, 0) = -((y_cc(j) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
10413# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10414 q_prim_vf(momxe)%sf(i, j, 0) = ((x_cc(i) - 0.5_wp)/r)*umax*(2._wp - r/rmax)
10415# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10416 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2*((r/rmax)**2/2._wp + 4._wp*(1._wp - (r/rmax) + log(r/rmax)))
10417# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10418 else
10419# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10420 q_prim_vf(momxb)%sf(i, j, 0) = 0._wp
10421# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10422 q_prim_vf(momxe)%sf(i, j, 0) = 0._wp
10423# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10424 q_prim_vf(e_idx)%sf(i, j, 0) = p0 + umax**2._wp*(-2._wp + 4*log(2._wp))
10425# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10426 end if
10427# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10428
10429# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10430 q_prim_vf(contxb)%sf(i, j, 0) = q_prim_vf(e_idx)%sf(i, j, 0)**(1._wp/gam)
10431# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10432 case (204) ! Rayleigh-Taylor instability
10433# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10434 rhoh = 3._wp
10435# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10436 rhol = 1._wp
10437# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10438 pref = 1.e5_wp
10439# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10440 pint = pref
10441# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10442 h = 0.7_wp
10443# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10444 lam = 0.2_wp
10445# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10446 wl = 2._wp*pi/lam
10447# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10448 amp = 0.05_wp/wl
10449# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10450
10451# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10452 inth = amp*sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + h
10453# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10454
10455# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10456 alph = 0.5_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
10457# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10458
10459# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10460 if (alph < eps) alph = eps
10461# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10462 if (alph > 1._wp - eps) alph = 1._wp - eps
10463# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10464
10465# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10466 if (y_cc(j) > inth) then
10467# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10468 q_prim_vf(advxb)%sf(i, j, 0) = alph
10469# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10470 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
10471# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10472 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
10473# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10474 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
10475# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10476 q_prim_vf(e_idx)%sf(i, j, 0) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
10477# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10478 else
10479# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10480 q_prim_vf(advxb)%sf(i, j, 0) = alph
10481# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10482 q_prim_vf(advxe)%sf(i, j, 0) = 1._wp - alph
10483# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10484 q_prim_vf(contxb)%sf(i, j, 0) = alph*rhoh
10485# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10486 q_prim_vf(contxe)%sf(i, j, 0) = (1._wp - alph)*rhol
10487# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10488 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
10489# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10490 q_prim_vf(e_idx)%sf(i, j, 0) = pint + rhol*9.81_wp*(inth - y_cc(j))
10491# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10492 end if
10493# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10494
10495# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10496 case (205) ! 2D lung wave interaction problem
10497# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10498 h = 0.0_wp !non dim origin y
10499# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10500 lam = 1.0_wp !non dim lambda
10501# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10502 amp = patch_icpp(patch_id)%a(2) !to be changed later! !non dim amplitude
10503# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10504
10505# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10506 inth = amp*sin(2*pi*x_cc(i)/lam - pi/2) + h
10507# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10508
10509# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10510 if (y_cc(j) > inth) then
10511# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10512 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
10513# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10514 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
10515# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10516 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
10517# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10518 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
10519# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10520 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
10521# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10522 end if
10523# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10524
10525# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10526 case (206) ! 2D lung wave interaction problem - horizontal domain
10527# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10528 h = 0.0_wp !non dim origin y
10529# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10530 lam = 1.0_wp !non dim lambda
10531# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10532 amp = patch_icpp(patch_id)%a(2)
10533# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10534
10535# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10536 intl = amp*sin(2*pi*y_cc(j)/lam - pi/2) + h
10537# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10538
10539# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10540 if (x_cc(i) > intl) then !this is the liquid
10541# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10542 q_prim_vf(contxb)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(1)
10543# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10544 q_prim_vf(contxe)%sf(i, j, 0) = patch_icpp(1)%alpha_rho(2)
10545# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10546 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(1)%pres
10547# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10548 q_prim_vf(advxb)%sf(i, j, 0) = patch_icpp(1)%alpha(1)
10549# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10550 q_prim_vf(advxe)%sf(i, j, 0) = patch_icpp(1)%alpha(2)
10551# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10552 end if
10553# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10554
10555# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10556 case (207) ! Kelvin Helmholtz Instability
10557# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10558 sigma = 0.05_wp/sqrt(2.0_wp)
10559# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10560 gauss1 = exp(-(y_cc(j) - 0.75_wp)**2/(2.0_wp*sigma**2))
10561# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10562 gauss2 = exp(-(y_cc(j) - 0.25_wp)**2/(2.0_wp*sigma**2))
10563# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10564 q_prim_vf(momxb + 1)%sf(i, j, 0) = &
10565# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10566 0.1_wp*sin(4.0_wp*pi*x_cc(i))*(gauss1 + gauss2)
10567# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10568
10569# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10570 case (208) ! Richtmeyer Meshkov Instability
10571# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10572 lam = 1.0_wp
10573# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10574 eps = 1.0e-6_wp
10575# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10576 ei = 5.0_wp
10577# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10578 ! Smoothening function to smooth out sharp discontinuity in the interface
10579# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10580 if (x_cc(i) <= 0.7_wp*lam) then
10581# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10582 d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
10583# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10584 fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
10585# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10586 alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
10587# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10588 alpha_sf6 = 1.0_wp - alpha_air
10589# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10590 q_prim_vf(contxb)%sf(i, j, 0) = alpha_sf6*5.04_wp
10591# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10592 q_prim_vf(contxe)%sf(i, j, 0) = alpha_air*1.0_wp
10593# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10594 q_prim_vf(advxb)%sf(i, j, 0) = alpha_sf6
10595# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10596 q_prim_vf(advxe)%sf(i, j, 0) = alpha_air
10597# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10598 end if
10599# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10600
10601# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10602 case (250) ! MHD Orszag-Tang vortex
10603# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10604 ! gamma = 5/3
10605# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10606 ! rho = 25/(36*pi)
10607# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10608 ! p = 5/(12*pi)
10609# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10610 ! v = (-sin(2*pi*y), sin(2*pi*x), 0)
10611# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10612 ! B = (-sin(2*pi*y)/sqrt(4*pi), sin(4*pi*x)/sqrt(4*pi), 0)
10613# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10614
10615# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10616 q_prim_vf(momxb)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))
10617# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10618 q_prim_vf(momxb + 1)%sf(i, j, 0) = sin(2._wp*pi*x_cc(i))
10619# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10620
10621# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10622 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -sin(2._wp*pi*y_cc(j))/sqrt(4._wp*pi)
10623# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10624 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = sin(4._wp*pi*x_cc(i))/sqrt(4._wp*pi)
10625# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10626
10627# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10628 case (251) ! RMHD Cylindrical Blast Wave [Mignone, 2006: Section 4.3.1]
10629# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10630 if (x_cc(i)**2 + y_cc(j)**2 < 0.08_wp**2) then
10631# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10632 q_prim_vf(contxb)%sf(i, j, 0) = 0.01
10633# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10634 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0
10635# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10636 elseif (x_cc(i)**2 + y_cc(j)**2 <= 1._wp**2) then
10637# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10638 ! Linear interpolation between r=0.08 and r=1.0
10639# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10640 factor = (1.0_wp - sqrt(x_cc(i)**2 + y_cc(j)**2))/(1.0_wp - 0.08_wp)
10641# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10642 q_prim_vf(contxb)%sf(i, j, 0) = 0.01_wp*factor + 1.e-4_wp*(1.0_wp - factor)
10643# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10644 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0_wp*factor + 3.e-5_wp*(1.0_wp - factor)
10645# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10646 else
10647# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10648 q_prim_vf(contxb)%sf(i, j, 0) = 1.e-4_wp
10649# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10650 q_prim_vf(e_idx)%sf(i, j, 0) = 3.e-5_wp
10651# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10652 end if
10653# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10654
10655# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10656 ! case 252 is for the 2D MHD Rotor problem
10657# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10658 case (252) ! 2D MHD Rotor Problem
10659# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10660 ! Ambient conditions are set in the JSON file.
10661# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10662 ! This case imposes the dense, rotating cylinder.
10663# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10664 !
10665# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10666 ! gamma = 1.4
10667# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10668 ! Ambient medium (r > 0.1):
10669# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10670 ! rho = 1, p = 1, v = 0, B = (1,0,0)
10671# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10672 ! Rotor (r <= 0.1):
10673# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10674 ! rho = 10, p = 1
10675# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10676 ! v has angular velocity w=20, giving v_tan=2 at r=0.1
10677# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10678
10679# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10680 ! Calculate distance squared from the center
10681# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10682 r_sq = (x_cc(i) - 0.5_wp)**2 + (y_cc(j) - 0.5_wp)**2
10683# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10684
10685# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10686 ! inner radius of 0.1
10687# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10688 if (r_sq <= 0.1**2) then
10689# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10690 ! -- Inside the rotor --
10691# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10692 ! Set density uniformly to 10
10693# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10694 q_prim_vf(contxb)%sf(i, j, 0) = 10._wp
10695# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10696
10697# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10698 ! Set vup constant rotation of rate v=2
10699# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10700 ! v_x = -omega * (y - y_c)
10701# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10702 ! v_y = omega * (x - x_c)
10703# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10704 q_prim_vf(momxb)%sf(i, j, 0) = -20._wp*(y_cc(j) - 0.5_wp)
10705# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10706 q_prim_vf(momxb + 1)%sf(i, j, 0) = 20._wp*(x_cc(i) - 0.5_wp)
10707# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10708
10709# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10710 ! taper width of 0.015
10711# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10712 else if (r_sq <= 0.115**2) then
10713# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10714 ! linearly smooth the function between r = 0.1 and 0.115
10715# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10716 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp + 9._wp*(0.115_wp - sqrt(r_sq))/(0.015_wp)
10717# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10718
10719# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10720 q_prim_vf(momxb)%sf(i, j, 0) = -(2._wp/sqrt(r_sq))*(y_cc(j) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
10721# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10722 q_prim_vf(momxb + 1)%sf(i, j, 0) = (2._wp/sqrt(r_sq))*(x_cc(i) - 0.5_wp)*(0.115_wp - sqrt(r_sq))/(0.015_wp)
10723# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10724 end if
10725# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10726
10727# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10728 case (253) ! MHD Smooth Magnetic Vortex
10729# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10730 ! Section 5.2 of
10731# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10732 ! Implicit hybridized discontinuous Galerkin methods for compressible magnetohydrodynamics
10733# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10734 ! C. Ciuca, P. Fernandez, A. Christophe, N.C. Nguyen, J. Peraire
10735# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10736
10737# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10738 ! velocity
10739# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10740 q_prim_vf(momxb)%sf(i, j, 0) = 1._wp - (y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
10741# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10742 q_prim_vf(momxb + 1)%sf(i, j, 0) = 1._wp + (x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi))
10743# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10744
10745# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10746 ! magnetic field
10747# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10748 q_prim_vf(b_idx%beg)%sf(i, j, 0) = -y_cc(j)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
10749# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10750 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = x_cc(i)*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/(2.*pi)
10751# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10752
10753# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10754 ! pressure
10755# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10756 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp + (1 - 2._wp*(x_cc(i)**2 + y_cc(j)**2))*exp(1 - (x_cc(i)**2 + y_cc(j)**2))/((2._wp*pi)**3)
10757# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10758
10759# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10760 case (260) ! Gaussian Divergence Pulse
10761# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10762 ! Bx(x) = 1 + C * erf((x-0.5)/σ)
10763# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10764 ! ⇒ ∂Bx/∂x = C * (2/√π) * exp[-((x-0.5)/σ)**2] * (1/σ)
10765# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10766 ! Choose C = ε * σ * √π / 2 ⇒ ∂Bx/∂x = ε * exp[-((x-0.5)/σ)**2]
10767# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10768 ! ψ is initialized to zero everywhere.
10769# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10770
10771# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10772 eps_mhd = patch_icpp(patch_id)%a(2)
10773# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10774 sigma = patch_icpp(patch_id)%a(3)
10775# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10776 c_mhd = eps_mhd*sigma*sqrt(pi)*0.5_wp
10777# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10778
10779# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10780 ! B-field
10781# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10782 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp + c_mhd*erf((x_cc(i) - 0.5_wp)/sigma)
10783# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10784
10785# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10786 case (261) ! Blob
10787# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10788 r0 = 1._wp/sqrt(8._wp)
10789# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10790 r2 = x_cc(i)**2 + y_cc(j)**2
10791# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10792 r = sqrt(r2)
10793# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10794 alpha = r/r0
10795# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10796 if (alpha < 1) then
10797# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10798 q_prim_vf(b_idx%beg)%sf(i, j, 0) = 1._wp/sqrt(4._wp*pi)*(alpha**8 - 2._wp*alpha**4 + 1._wp)
10799# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10800 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/sqrt(4000._wp*pi) * (4096._wp*r2**4 - 128._wp*r2**2 + 1._wp)
10801# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10802 ! q_prim_vf(B_idx%beg)%sf(i,j,0) = 1._wp/(4._wp*pi) * (alpha**8 - 2._wp*alpha**4 + 1._wp)
10803# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10804 ! q_prim_vf(E_idx)%sf(i,j,0) = 6._wp - q_prim_vf(B_idx%beg)%sf(i,j,0)**2/2._wp
10805# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10806 end if
10807# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10808
10809# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10810 case (262) ! Tilted 2D MHD shock‐tube at α = arctan2 (≈63.4°)
10811# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10812 ! rotate by α = atan(2)
10813# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10814 alpha = atan(2._wp)
10815# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10816 cosa = cos(alpha)
10817# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10818 sina = sin(alpha)
10819# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10820 ! projection along shock normal
10821# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10822 r = x_cc(i)*cosa + y_cc(j)*sina
10823# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10824
10825# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10826 if (r <= 0.5_wp) then
10827# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10828 ! LEFT state: ρ=1, v∥=+10, v⊥=0, p=20, B∥=B⊥=5/√(4π)
10829# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10830 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
10831# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10832 q_prim_vf(momxb)%sf(i, j, 0) = 10._wp*cosa
10833# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10834 q_prim_vf(momxb + 1)%sf(i, j, 0) = 10._wp*sina
10835# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10836 q_prim_vf(e_idx)%sf(i, j, 0) = 20._wp
10837# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10838 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
10839# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10840 - (5._wp/sqrt(4._wp*pi))*sina
10841# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10842 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
10843# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10844 + (5._wp/sqrt(4._wp*pi))*cosa
10845# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10846 else
10847# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10848 ! RIGHT state: ρ=1, v∥=−10, v⊥=0, p=1, B∥=B⊥=5/√(4π)
10849# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10850 q_prim_vf(contxb)%sf(i, j, 0) = 1._wp
10851# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10852 q_prim_vf(momxb)%sf(i, j, 0) = -10._wp*cosa
10853# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10854 q_prim_vf(momxb + 1)%sf(i, j, 0) = -10._wp*sina
10855# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10856 q_prim_vf(e_idx)%sf(i, j, 0) = 1._wp
10857# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10858 q_prim_vf(b_idx%beg)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*cosa &
10859# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10860 - (5._wp/sqrt(4._wp*pi))*sina
10861# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10862 q_prim_vf(b_idx%beg + 1)%sf(i, j, 0) = (5._wp/sqrt(4._wp*pi))*sina &
10863# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10864 + (5._wp/sqrt(4._wp*pi))*cosa
10865# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10866 end if
10867# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10868 ! v^z and B^z remain zero by default
10869# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10870
10871# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10872 case (270)
10873# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10874 ! This hardcoded case extrudes a 1D profile to initialize a 2D simulation domain
10875# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10876
10877# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10878 if (.not. files_loaded) then
10879# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10880 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
10881# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10882 do f = 1, max_files
10883# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10884 write (file_num_str, '(I0)') f
10885# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10886 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
10887# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10888 end do
10889# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10890
10891# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10892 ! Common file reading setup
10893# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10894 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
10895# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10896 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
10897# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10898
10899# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10900 select case (num_dims)
10901# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10902 case (1, 2) ! 1D and 2D cases are similar
10903# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10904 ! Count lines
10905# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10906 line_count = 0
10907# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10908 do
10909# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10910 read (unit2, *, iostat=ios2) dummy_x, dummy_y
10911# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10912 if (ios2 /= 0) exit
10913# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10914 line_count = line_count + 1
10915# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10916 end do
10917# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10918 close (unit2)
10919# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10920
10921# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10922 xrows = line_count
10923# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10924 yrows = 1
10925# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10926 index_x = 0
10927# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10928 if (num_dims == 2) index_x = i
10929# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10930#ifdef MFC_DEBUG
10931# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10932 block
10933# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10934 use iso_fortran_env, only: output_unit
10935# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10936
10937# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10938 print *, 'm_icpp_patches.fpp:959: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
10939# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10940
10941# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10942 call flush (output_unit)
10943# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10944 end block
10945# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10946#endif
10947# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10948 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
10949# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10950
10951# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10952
10953# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10954
10955# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10956#if defined(MFC_OpenACC)
10957# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10958!$acc enter data create(x_coords, stored_values)
10959# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10960#elif defined(MFC_OpenMP)
10961# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10962!$omp target enter data map(always,alloc:x_coords, stored_values)
10963# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10964#endif
10965# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10966
10967# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10968 ! Read data from all files
10969# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10970 do f = 1, max_files
10971# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10972 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
10973# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10974 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
10975# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10976
10977# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10978 do iter = 1, xrows
10979# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10980 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
10981# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10982 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
10983# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10984 end do
10985# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10986 close (unit)
10987# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10988 end do
10989# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10990
10991# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10992 ! Calculate offsets
10993# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10994 domain_xstart = x_coords(1)
10995# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10996 x_step = x_cc(1) - x_cc(0)
10997# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
10998 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
10999# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11000 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
11001# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11002 global_offset_x = nint(abs(delta_x)/x_step)
11003# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11004
11005# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11006 case (3) ! 3D case - determine grid structure
11007# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11008 ! Find yRows by counting rows with same x
11009# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11010 read (unit2, *, iostat=ios2) x0, y0, dummy_z
11011# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11012 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
11013# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11014
11015# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11016 yrows = 1
11017# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11018 do
11019# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11020 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
11021# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11022 if (ios2 /= 0) exit
11023# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11024 if (dummy_x == x0 .and. dummy_y /= y0) then
11025# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11026 yrows = yrows + 1
11027# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11028 else
11029# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11030 exit
11031# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11032 end if
11033# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11034 end do
11035# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11036 close (unit2)
11037# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11038
11039# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11040 ! Count total rows
11041# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11042 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
11043# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11044 nrows = 0
11045# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11046 do
11047# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11048 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
11049# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11050 if (ios2 /= 0) exit
11051# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11052 nrows = nrows + 1
11053# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11054 end do
11055# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11056 close (unit2)
11057# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11058
11059# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11060 xrows = nrows/yrows
11061# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11062#ifdef MFC_DEBUG
11063# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11064 block
11065# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11066 use iso_fortran_env, only: output_unit
11067# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11068
11069# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11070 print *, 'm_icpp_patches.fpp:959: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
11071# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11072
11073# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11074 call flush (output_unit)
11075# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11076 end block
11077# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11078#endif
11079# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11080 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
11081# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11082
11083# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11084
11085# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11086
11087# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11088
11089# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11090#if defined(MFC_OpenACC)
11091# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11092!$acc enter data create(x_coords, y_coords, stored_values)
11093# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11094#elif defined(MFC_OpenMP)
11095# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11096!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
11097# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11098#endif
11099# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11100 index_x = i
11101# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11102 index_y = j
11103# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11104
11105# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11106 ! Read all files
11107# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11108 do f = 1, max_files
11109# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11110 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
11111# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11112 if (ios /= 0) then
11113# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11114 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
11115# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11116 cycle
11117# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11118 end if
11119# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11120
11121# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11122 iter = 0
11123# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11124 do iix = 1, xrows
11125# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11126 do iiy = 1, yrows
11127# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11128 iter = iter + 1
11129# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11130 if (f == 1) then
11131# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11132 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
11133# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11134 else
11135# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11136 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
11137# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11138 end if
11139# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11140 if (ios /= 0) call s_mpi_abort("Error reading data")
11141# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11142 end do
11143# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11144 end do
11145# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11146 close (unit)
11147# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11148 end do
11149# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11150
11151# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11152 ! Calculate offsets
11153# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11154 x_step = x_cc(1) - x_cc(0)
11155# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11156 y_step = y_cc(1) - y_cc(0)
11157# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11158 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
11159# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11160 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
11161# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11162 global_offset_x = nint(abs(delta_x)/x_step)
11163# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11164 global_offset_y = nint(abs(delta_y)/y_step)
11165# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11166 end select
11167# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11168
11169# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11170 files_loaded = .true.
11171# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11172 end if
11173# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11174
11175# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11176 ! Data assignment
11177# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11178 select case (num_dims)
11179# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11180 case (1)
11181# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11182 idx = i + 1 + global_offset_x
11183# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11184 do f = 1, sys_size
11185# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11186 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
11187# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11188 end do
11189# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11190
11191# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11192 case (2)
11193# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11194 idx = i + 1 + global_offset_x - index_x
11195# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11196 do f = 1, sys_size - 1
11197# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11198 jump = merge(1, 0, f >= momxe)
11199# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11200 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
11201# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11202 end do
11203# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11204 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
11205# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11206
11207# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11208 case (3)
11209# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11210 idx = i + 1 + global_offset_x - index_x
11211# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11212 idy = j + 1 + global_offset_y - index_y
11213# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11214 do f = 1, sys_size - 1
11215# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11216 jump = merge(1, 0, f >= momxe)
11217# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11218 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
11219# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11220 end do
11221# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11222 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
11223# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11224 end select
11225# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11226
11227# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11228 case (280)
11229# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11230 ! This is patch is hard-coded for test suite optimization used in the
11231# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11232 ! 2D_isentropicvortex case:
11233# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11234 ! This analytic patch uses geometry 2
11235# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11236 if (patch_id == 1) then
11237# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11238 q_prim_vf(e_idx)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**(1.4 + 1.0)
11239# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11240 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1.0*(1.0 - (1.0/1.0)*(5.0/(2.0*pi))*(5.0/(8.0*1.0*(1.4 + 1.0)*pi))*exp(2.0*1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0)))**1.4
11241# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11242 q_prim_vf(momxb + 0)%sf(i, j, 0) = 0.0 + (y_cc(j) - patch_icpp(1)%y_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
11243# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11244 q_prim_vf(momxb + 1)%sf(i, j, 0) = 0.0 - (x_cc(i) - patch_icpp(1)%x_centroid)*(5.0/(2.0*pi))*exp(1.0*(1.0 - (x_cc(i) - patch_icpp(1)%x_centroid)**2.0 - (y_cc(j) - patch_icpp(1)%y_centroid)**2.0))
11245# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11246 end if
11247# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11248
11249# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11250 case (281)
11251# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11252 ! This is patch is hard-coded for test suite optimization used in the
11253# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11254 ! 2D_acoustic_pulse case:
11255# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11256 ! This analytic patch uses geometry 2
11257# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11258 if (patch_id == 2) then
11259# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11260 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
11261# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11262 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.4)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
11263# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11264 end if
11265# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11266
11267# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11268 case (282)
11269# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11270 ! This is patch is hard-coded for test suite optimization used in the
11271# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11272 ! 2D_zero_circ_vortex case:
11273# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11274 ! This analytic patch uses geometry 2
11275# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11276 if (patch_id == 2) then
11277# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11278 q_prim_vf(e_idx)%sf(i, j, 0) = 101325*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1.4/(1.4 - 1))
11279# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11280 q_prim_vf(contxb + 0)%sf(i, j, 0) = 1*(1 - 0.5*(1.4 - 1)*(0.1/0.3)**2*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2))))**(1/(1.4 - 1))
11281# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11282 q_prim_vf(momxb + 0)%sf(i, j, 0) = 112.99092883944267*(1 - (0.1/0.3))*y_cc(j)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
11283# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11284 q_prim_vf(momxb + 1)%sf(i, j, 0) = 112.99092883944267*((0.1/0.3))*x_cc(i)*exp(0.5*(1 - sqrt(x_cc(i)**2 + y_cc(j)**2)))
11285# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11286 end if
11287# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11288
11289# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11290 case default
11291# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11292 if (proc_rank == 0) then
11293# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11294 call s_int_to_str(patch_id, istr)
11295# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11296 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
11297# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11298 end if
11299# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11300
11301# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11302 end select
11303# 959 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11304
11305 end if
11306
11307 ! Updating the patch identities bookkeeping variable
11308 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, 0) = patch_id
11309
11310 ! Assign Parameters
11311 q_prim_vf(mom_idx%beg)%sf(i, j, 0) = u0*sin(x_cc(i)/l0)*cos(y_cc(j)/l0)
11312 q_prim_vf(mom_idx%end)%sf(i, j, 0) = -u0*cos(x_cc(i)/l0)*sin(y_cc(j)/l0)
11313 q_prim_vf(e_idx)%sf(i, j, 0) = patch_icpp(patch_id)%pres + (cos(2*x_cc(i))/l0 + &
11314 cos(2*y_cc(j))/l0)* &
11315 (q_prim_vf(1)%sf(i, j, 0)*u0*u0)/16
11316 end if
11317 end do
11318 end do
11319 if (allocated(stored_values)) then
11320# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11321#ifdef MFC_DEBUG
11322# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11323 block
11324# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11325 use iso_fortran_env, only: output_unit
11326# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11327
11328# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11329 print *, 'm_icpp_patches.fpp:974: ', '@:DEALLOCATE(stored_values)'
11330# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11331
11332# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11333 call flush (output_unit)
11334# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11335 end block
11336# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11337#endif
11338# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11339
11340# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11341#if defined(MFC_OpenACC)
11342# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11343!$acc exit data delete(stored_values)
11344# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11345#elif defined(MFC_OpenMP)
11346# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11347!$omp target exit data map(release:stored_values)
11348# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11349#endif
11350# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11351 deallocate (stored_values)
11352# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11353#ifdef MFC_DEBUG
11354# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11355 block
11356# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11357 use iso_fortran_env, only: output_unit
11358# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11359
11360# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11361 print *, 'm_icpp_patches.fpp:974: ', '@:DEALLOCATE(x_coords)'
11362# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11363
11364# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11365 call flush (output_unit)
11366# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11367 end block
11368# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11369#endif
11370# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11371
11372# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11373#if defined(MFC_OpenACC)
11374# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11375!$acc exit data delete(x_coords)
11376# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11377#elif defined(MFC_OpenMP)
11378# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11379!$omp target exit data map(release:x_coords)
11380# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11381#endif
11382# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11383 deallocate (x_coords)
11384# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11385 end if
11386# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11387
11388# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11389 if (allocated(y_coords)) then
11390# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11391#ifdef MFC_DEBUG
11392# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11393 block
11394# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11395 use iso_fortran_env, only: output_unit
11396# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11397
11398# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11399 print *, 'm_icpp_patches.fpp:974: ', '@:DEALLOCATE(y_coords)'
11400# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11401
11402# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11403 call flush (output_unit)
11404# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11405 end block
11406# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11407#endif
11408# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11409
11410# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11411#if defined(MFC_OpenACC)
11412# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11413!$acc exit data delete(y_coords)
11414# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11415#elif defined(MFC_OpenMP)
11416# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11417!$omp target exit data map(release:y_coords)
11418# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11419#endif
11420# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11421 deallocate (y_coords)
11422# 974 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11423 end if
11424
11425 end subroutine s_icpp_2d_taylorgreen_vortex
11426
11427 !> @brief Initializes a 1D bubble-pulse patch with analytical primitive variable profiles.
11428 !! @param patch_id is the patch identifier
11429 !! @param patch_id_fp Array to track patch ids
11430 !! @param q_prim_vf Array of primitive variables
11431 subroutine s_icpp_1d_bubble_pulse(patch_id, patch_id_fp, q_prim_vf)
11432 ! Description: This patch assigns the primitive variables as analytical
11433 ! functions such that the code can be verified.
11434
11435 ! Patch identifier
11436 integer, intent(in) :: patch_id
11437#ifdef MFC_MIXED_PRECISION
11438 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
11439#else
11440 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
11441#endif
11442 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
11443
11444 ! Generic loop iterators
11445 integer :: i, j, k
11446 ! Placeholders for the cell boundary values
11447 real(wp) :: pi_inf, gamma, lit_gamma
11448 integer :: xRows, yRows, nRows, iix, iiy, max_files
11449# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11450 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
11451# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11452 real(wp) :: x_len, x_step, y_len, y_step
11453# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11454 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
11455# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11456 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
11457# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11458 real(wp) :: delta_x, delta_y
11459# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11460 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
11461# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11462 character(len=200) :: errmsg
11463# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11464 real(wp), allocatable :: stored_values(:, :, :)
11465# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11466 real(wp), allocatable :: x_coords(:), y_coords(:)
11467# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11468 logical :: files_loaded = .false.
11469# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11470 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
11471# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11472 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
11473# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11474 character(len=20) :: file_num_str ! For storing the file number as a string
11475# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11476 character(len=20) :: zeros_part ! For the trailing zeros part
11477# 999 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11478 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
11479 ! Place any declaration of intermediate variables here
11480# 1000 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11481 real(wp) :: x_mid_diffu, width_sq, profile_shape, temp, molar_mass_inv, y1, y2, y3, y4
11482
11483 pi_inf = pi_infs(1)
11484 gamma = gammas(1)
11485 lit_gamma = gs_min(1)
11486
11487 ! Transferring the patch's centroid and length information
11488 x_centroid = patch_icpp(patch_id)%x_centroid
11489 length_x = patch_icpp(patch_id)%length_x
11490
11491 ! Computing the beginning and the end x- and y-coordinates
11492 ! of the patch based on its centroid and lengths
11493 x_boundary%beg = x_centroid - 0.5_wp*length_x
11494 x_boundary%end = x_centroid + 0.5_wp*length_x
11495
11496 ! Since the patch doesn't allow for its boundaries to be
11497 ! smoothed out, the pseudo volume fraction is set to 1 to
11498 ! ensure that only the current patch contributes to the fluid
11499 ! state in the cells that this patch covers.
11500 eta = 1._wp
11501
11502 ! Checking whether the line segment covers a particular cell in the
11503 ! domain and verifying whether the current patch has the permission
11504 ! to write to that cell. If both queries check out, the primitive
11505 ! variables of the current patch are assigned to this cell.
11506 do i = 0, m
11507 if (x_boundary%beg <= x_cc(i) .and. &
11508 x_boundary%end >= x_cc(i) .and. &
11509 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, 0, 0))) then
11510
11511 call s_assign_patch_primitive_variables(patch_id, i, 0, 0, &
11512 eta, q_prim_vf, patch_id_fp)
11513
11514
11515 if (patch_icpp(patch_id)%hcid /= dflt_int) then
11516 select case (patch_icpp(patch_id)%hcid)
11517# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11518 case (150) ! 1D Smooth Alfven Case for MHD
11519# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11520 ! velocity
11521# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11522 q_prim_vf(momxb + 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
11523# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11524 q_prim_vf(momxb + 2)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
11525# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11526
11527# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11528 ! magnetic field
11529# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11530 q_prim_vf(b_idx%end - 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
11531# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11532 q_prim_vf(b_idx%end)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
11533# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11534
11535# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11536 case (170)
11537# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11538 ! This hardcoded case can be used to start a simulation with initial conditions given from a known 1D profile (e.g. Cantera, SDtoolbox)
11539# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11540
11541# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11542 if (.not. files_loaded) then
11543# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11544 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
11545# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11546 do f = 1, max_files
11547# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11548 write (file_num_str, '(I0)') f
11549# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11550 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
11551# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11552 end do
11553# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11554
11555# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11556 ! Common file reading setup
11557# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11558 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
11559# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11560 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
11561# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11562
11563# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11564 select case (num_dims)
11565# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11566 case (1, 2) ! 1D and 2D cases are similar
11567# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11568 ! Count lines
11569# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11570 line_count = 0
11571# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11572 do
11573# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11574 read (unit2, *, iostat=ios2) dummy_x, dummy_y
11575# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11576 if (ios2 /= 0) exit
11577# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11578 line_count = line_count + 1
11579# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11580 end do
11581# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11582 close (unit2)
11583# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11584
11585# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11586 xrows = line_count
11587# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11588 yrows = 1
11589# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11590 index_x = 0
11591# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11592 if (num_dims == 2) index_x = i
11593# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11594#ifdef MFC_DEBUG
11595# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11596 block
11597# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11598 use iso_fortran_env, only: output_unit
11599# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11600
11601# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11602 print *, 'm_icpp_patches.fpp:1035: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
11603# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11604
11605# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11606 call flush (output_unit)
11607# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11608 end block
11609# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11610#endif
11611# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11612 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
11613# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11614
11615# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11616
11617# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11618
11619# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11620#if defined(MFC_OpenACC)
11621# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11622!$acc enter data create(x_coords, stored_values)
11623# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11624#elif defined(MFC_OpenMP)
11625# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11626!$omp target enter data map(always,alloc:x_coords, stored_values)
11627# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11628#endif
11629# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11630
11631# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11632 ! Read data from all files
11633# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11634 do f = 1, max_files
11635# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11636 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
11637# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11638 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
11639# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11640
11641# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11642 do iter = 1, xrows
11643# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11644 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
11645# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11646 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
11647# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11648 end do
11649# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11650 close (unit)
11651# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11652 end do
11653# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11654
11655# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11656 ! Calculate offsets
11657# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11658 domain_xstart = x_coords(1)
11659# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11660 x_step = x_cc(1) - x_cc(0)
11661# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11662 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
11663# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11664 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
11665# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11666 global_offset_x = nint(abs(delta_x)/x_step)
11667# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11668
11669# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11670 case (3) ! 3D case - determine grid structure
11671# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11672 ! Find yRows by counting rows with same x
11673# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11674 read (unit2, *, iostat=ios2) x0, y0, dummy_z
11675# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11676 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
11677# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11678
11679# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11680 yrows = 1
11681# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11682 do
11683# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11684 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
11685# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11686 if (ios2 /= 0) exit
11687# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11688 if (dummy_x == x0 .and. dummy_y /= y0) then
11689# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11690 yrows = yrows + 1
11691# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11692 else
11693# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11694 exit
11695# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11696 end if
11697# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11698 end do
11699# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11700 close (unit2)
11701# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11702
11703# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11704 ! Count total rows
11705# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11706 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
11707# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11708 nrows = 0
11709# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11710 do
11711# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11712 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
11713# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11714 if (ios2 /= 0) exit
11715# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11716 nrows = nrows + 1
11717# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11718 end do
11719# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11720 close (unit2)
11721# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11722
11723# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11724 xrows = nrows/yrows
11725# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11726#ifdef MFC_DEBUG
11727# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11728 block
11729# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11730 use iso_fortran_env, only: output_unit
11731# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11732
11733# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11734 print *, 'm_icpp_patches.fpp:1035: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
11735# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11736
11737# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11738 call flush (output_unit)
11739# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11740 end block
11741# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11742#endif
11743# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11744 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
11745# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11746
11747# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11748
11749# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11750
11751# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11752
11753# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11754#if defined(MFC_OpenACC)
11755# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11756!$acc enter data create(x_coords, y_coords, stored_values)
11757# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11758#elif defined(MFC_OpenMP)
11759# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11760!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
11761# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11762#endif
11763# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11764 index_x = i
11765# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11766 index_y = j
11767# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11768
11769# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11770 ! Read all files
11771# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11772 do f = 1, max_files
11773# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11774 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
11775# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11776 if (ios /= 0) then
11777# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11778 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
11779# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11780 cycle
11781# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11782 end if
11783# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11784
11785# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11786 iter = 0
11787# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11788 do iix = 1, xrows
11789# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11790 do iiy = 1, yrows
11791# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11792 iter = iter + 1
11793# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11794 if (f == 1) then
11795# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11796 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
11797# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11798 else
11799# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11800 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
11801# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11802 end if
11803# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11804 if (ios /= 0) call s_mpi_abort("Error reading data")
11805# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11806 end do
11807# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11808 end do
11809# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11810 close (unit)
11811# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11812 end do
11813# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11814
11815# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11816 ! Calculate offsets
11817# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11818 x_step = x_cc(1) - x_cc(0)
11819# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11820 y_step = y_cc(1) - y_cc(0)
11821# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11822 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
11823# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11824 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
11825# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11826 global_offset_x = nint(abs(delta_x)/x_step)
11827# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11828 global_offset_y = nint(abs(delta_y)/y_step)
11829# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11830 end select
11831# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11832
11833# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11834 files_loaded = .true.
11835# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11836 end if
11837# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11838
11839# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11840 ! Data assignment
11841# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11842 select case (num_dims)
11843# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11844 case (1)
11845# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11846 idx = i + 1 + global_offset_x
11847# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11848 do f = 1, sys_size
11849# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11850 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
11851# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11852 end do
11853# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11854
11855# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11856 case (2)
11857# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11858 idx = i + 1 + global_offset_x - index_x
11859# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11860 do f = 1, sys_size - 1
11861# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11862 jump = merge(1, 0, f >= momxe)
11863# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11864 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
11865# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11866 end do
11867# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11868 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
11869# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11870
11871# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11872 case (3)
11873# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11874 idx = i + 1 + global_offset_x - index_x
11875# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11876 idy = j + 1 + global_offset_y - index_y
11877# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11878 do f = 1, sys_size - 1
11879# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11880 jump = merge(1, 0, f >= momxe)
11881# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11882 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
11883# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11884 end do
11885# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11886 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
11887# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11888 end select
11889# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11890
11891# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11892 case (180)
11893# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11894 ! This is patch is hard-coded for test suite optimization used in the
11895# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11896 ! 1D_shuoser cases: "patch_icpp(2)%alpha_rho(1)": "1 + 0.2*sin(5*x)"
11897# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11898 if (patch_id == 2) then
11899# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11900 q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.2*sin(5*x_cc(i))
11901# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11902 end if
11903# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11904
11905# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11906 case (181)
11907# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11908 ! This is patch is hard-coded for test suite optimization used in the
11909# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11910 ! 1D_titarevtorro cases: "patch_icpp(2)%alpha_rho(1)": "1 + 0.1*sin(20*x*pi)"
11911# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11912 q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.1*sin(20*x_cc(i)*pi)
11913# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11914
11915# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11916 case (182)
11917# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11918 ! This patch is a hard-coded for test suite optimization (multiple component diffusion)
11919# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11920 x_mid_diffu = 0.05_wp/2.0_wp
11921# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11922 width_sq = (2.5_wp*10.0_wp**(-3.0_wp))**2
11923# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11924 profile_shape = 1.0_wp - 0.5_wp*exp(-(x_cc(i) - x_mid_diffu)**2/width_sq)
11925# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11926 q_prim_vf(momxb)%sf(i, 0, 0) = 0.0_wp
11927# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11928 q_prim_vf(e_idx)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5
11929# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11930 q_prim_vf(advxb)%sf(i, 0, 0) = 1.0_wp
11931# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11932
11933# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11934 y1 = (0.195_wp - 0.142_wp)*profile_shape + 0.142_wp
11935# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11936 y2 = (0.0_wp - 0.1_wp)*profile_shape + 0.1_wp
11937# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11938 y3 = (0.214_wp - 0.0_wp)*profile_shape + 0.0_wp
11939# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11940 y4 = (0.591_wp - 0.758_wp)*profile_shape + 0.758_wp
11941# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11942
11943# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11944 q_prim_vf(chemxb)%sf(i, 0, 0) = y1
11945# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11946 q_prim_vf(chemxb + 1)%sf(i, 0, 0) = y2
11947# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11948 q_prim_vf(chemxb + 2)%sf(i, 0, 0) = y3
11949# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11950 q_prim_vf(chemxb + 3)%sf(i, 0, 0) = y4
11951# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11952
11953# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11954 temp = (320.0_wp - 1350.0_wp)*profile_shape + 1350.0_wp
11955# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11956
11957# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11958 molar_mass_inv = y1/31.998_wp + &
11959# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11960 y2/18.01508_wp + &
11961# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11962 y3/16.04256_wp + &
11963# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11964 y4/28.0134_wp
11965# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11966
11967# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11968 q_prim_vf(contxb)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5/(temp*8.3144626_wp*1000.0_wp*molar_mass_inv)
11969# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11970
11971# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11972 case default
11973# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11974 call s_int_to_str(patch_id, istr)
11975# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11976 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
11977# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11978 end select
11979# 1035 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11980
11981 end if
11982
11983 end if
11984 end do
11985 if (allocated(stored_values)) then
11986# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11987#ifdef MFC_DEBUG
11988# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11989 block
11990# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11991 use iso_fortran_env, only: output_unit
11992# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11993
11994# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11995 print *, 'm_icpp_patches.fpp:1040: ', '@:DEALLOCATE(stored_values)'
11996# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11997
11998# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
11999 call flush (output_unit)
12000# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12001 end block
12002# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12003#endif
12004# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12005
12006# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12007#if defined(MFC_OpenACC)
12008# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12009!$acc exit data delete(stored_values)
12010# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12011#elif defined(MFC_OpenMP)
12012# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12013!$omp target exit data map(release:stored_values)
12014# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12015#endif
12016# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12017 deallocate (stored_values)
12018# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12019#ifdef MFC_DEBUG
12020# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12021 block
12022# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12023 use iso_fortran_env, only: output_unit
12024# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12025
12026# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12027 print *, 'm_icpp_patches.fpp:1040: ', '@:DEALLOCATE(x_coords)'
12028# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12029
12030# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12031 call flush (output_unit)
12032# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12033 end block
12034# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12035#endif
12036# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12037
12038# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12039#if defined(MFC_OpenACC)
12040# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12041!$acc exit data delete(x_coords)
12042# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12043#elif defined(MFC_OpenMP)
12044# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12045!$omp target exit data map(release:x_coords)
12046# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12047#endif
12048# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12049 deallocate (x_coords)
12050# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12051 end if
12052# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12053
12054# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12055 if (allocated(y_coords)) then
12056# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12057#ifdef MFC_DEBUG
12058# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12059 block
12060# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12061 use iso_fortran_env, only: output_unit
12062# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12063
12064# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12065 print *, 'm_icpp_patches.fpp:1040: ', '@:DEALLOCATE(y_coords)'
12066# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12067
12068# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12069 call flush (output_unit)
12070# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12071 end block
12072# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12073#endif
12074# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12075
12076# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12077#if defined(MFC_OpenACC)
12078# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12079!$acc exit data delete(y_coords)
12080# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12081#elif defined(MFC_OpenMP)
12082# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12083!$omp target exit data map(release:y_coords)
12084# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12085#endif
12086# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12087 deallocate (y_coords)
12088# 1040 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12089 end if
12090
12091 end subroutine s_icpp_1d_bubble_pulse
12092
12093 !> This patch generates the shape of the spherical harmonics
12094 !! as a perturbation to a perfect sphere
12095 !! @param patch_id is the patch identifier
12096 !! @param patch_id_fp Array to track patch ids
12097 !! @param q_prim_vf Array of primitive variables
12098 subroutine s_icpp_spherical_harmonic(patch_id, patch_id_fp, q_prim_vf)
12099
12100 integer, intent(IN) :: patch_id
12101#ifdef MFC_MIXED_PRECISION
12102 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
12103#else
12104 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
12105#endif
12106 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
12107
12108 real(wp) :: r, x_p, eps, phi
12109 real(wp), dimension(2:9) :: as, Ps
12110 real(wp) :: radius, x_centroid_local, y_centroid_local, z_centroid_local, eta_local, smooth_coeff_local
12111 logical :: non_axis_sym_in
12112
12113 integer :: i, j, k !< generic loop iterators
12114
12115 ! Transferring the patch's centroid and radius information
12116 x_centroid_local = patch_icpp(patch_id)%x_centroid
12117 y_centroid_local = patch_icpp(patch_id)%y_centroid
12118 z_centroid_local = patch_icpp(patch_id)%z_centroid
12119 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
12120 smooth_coeff_local = patch_icpp(patch_id)%smooth_coeff
12121 radius = patch_icpp(patch_id)%radius
12122 as(2) = patch_icpp(patch_id)%a(2)
12123 as(3) = patch_icpp(patch_id)%a(3)
12124 as(4) = patch_icpp(patch_id)%a(4)
12125 as(5) = patch_icpp(patch_id)%a(5)
12126 as(6) = patch_icpp(patch_id)%a(6)
12127 as(7) = patch_icpp(patch_id)%a(7)
12128 as(8) = patch_icpp(patch_id)%a(8)
12129 as(9) = patch_icpp(patch_id)%a(9)
12130 non_axis_sym_in = patch_icpp(patch_id)%non_axis_sym
12131
12132 ! Since the analytical patch does not allow for its boundaries to get
12133 ! smoothed out, the pseudo volume fraction is set to 1 to make sure
12134 ! that only the current patch contributes to the fluid state in the
12135 ! cells that this patch covers.
12136 eta_local = 1._wp
12137 eps = 1.e-32_wp
12138
12139 ! Checking whether the patch covers a particular cell in the domain
12140 ! and verifying whether the current patch has permission to write to
12141 ! to that cell. If both queries check out, the primitive variables
12142 ! of the current patch are assigned to this cell.
12143 if (p > 0 .and. .not. non_axis_sym_in) then
12144 do k = 0, p
12145 do j = 0, n
12146 do i = 0, m
12147 if (grid_geometry == 3) then
12148 call s_convert_cylindrical_to_cartesian_coord(y_cc(j), z_cc(k))
12149 else
12150 cart_y = y_cc(j)
12151 cart_z = z_cc(k)
12152 end if
12153
12154 r = sqrt((x_cc(i) - x_centroid_local)**2 + (cart_y - y_centroid_local)**2 + (cart_z - z_centroid_local)**2) + eps
12155 if (x_cc(i) - x_centroid_local <= 0) then
12156 x_p = -1._wp*abs(x_cc(i) - x_centroid_local + eps)/r
12157 else
12158 x_p = abs(x_cc(i) - x_centroid_local + eps)/r
12159 end if
12160
12161 ps(2) = unassociated_legendre(x_p, 2)
12162 ps(3) = unassociated_legendre(x_p, 3)
12163 ps(4) = unassociated_legendre(x_p, 4)
12164 ps(5) = unassociated_legendre(x_p, 5)
12165 ps(6) = unassociated_legendre(x_p, 6)
12166 ps(7) = unassociated_legendre(x_p, 7)
12167 if ((x_cc(i) - x_centroid_local >= 0 &
12168 .and. &
12169 r - as(2)*ps(2) - as(3)*ps(3) - as(4)*ps(4) - as(5)*ps(5) - as(6)*ps(6) - as(7)*ps(7) <= radius &
12170 .and. &
12171 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) .or. &
12172 (patch_id_fp(i, j, k) == smooth_patch_id)) &
12173 then
12174 if (patch_icpp(patch_id)%smoothen) then
12175 eta_local = tanh(smooth_coeff_local/min(dx, dy, dz)* &
12176 ((r - as(2)*ps(2) - as(3)*ps(3) - as(4)*ps(4) - as(5)*ps(5) - as(6)*ps(6) - as(7)*ps(7)) &
12177 - radius))*(-0.5_wp) + 0.5_wp
12178 end if
12179
12180 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
12181 eta_local, q_prim_vf, patch_id_fp)
12182 end if
12183
12184 end do
12185 end do
12186 end do
12187
12188 else if (p == 0) then
12189 do j = 0, n
12190 do i = 0, m
12191
12192 if (non_axis_sym_in) then
12193 phi = atan(((y_cc(j) - y_centroid_local) + eps)/((x_cc(i) - x_centroid_local) + eps))
12194 r = sqrt((x_cc(i) - x_centroid_local)**2._wp + (y_cc(j) - y_centroid_local)**2._wp) + eps
12195 x_p = (eps)/r
12196 ps(2) = spherical_harmonic_func(x_p, phi, 2, 2)
12197 ps(3) = spherical_harmonic_func(x_p, phi, 3, 3)
12198 ps(4) = spherical_harmonic_func(x_p, phi, 4, 4)
12199 ps(5) = spherical_harmonic_func(x_p, phi, 5, 5)
12200 ps(6) = spherical_harmonic_func(x_p, phi, 6, 6)
12201 ps(7) = spherical_harmonic_func(x_p, phi, 7, 7)
12202 ps(8) = spherical_harmonic_func(x_p, phi, 8, 8)
12203 ps(9) = spherical_harmonic_func(x_p, phi, 9, 9)
12204 else
12205 r = sqrt((x_cc(i) - x_centroid_local)**2._wp + (y_cc(j) - y_centroid_local)**2._wp) + eps
12206 x_p = abs(x_cc(i) - x_centroid_local + eps)/r
12207 ps(2) = unassociated_legendre(x_p, 2)
12208 ps(3) = unassociated_legendre(x_p, 3)
12209 ps(4) = unassociated_legendre(x_p, 4)
12210 ps(5) = unassociated_legendre(x_p, 5)
12211 ps(6) = unassociated_legendre(x_p, 6)
12212 ps(7) = unassociated_legendre(x_p, 7)
12213 ps(8) = unassociated_legendre(x_p, 8)
12214 ps(9) = unassociated_legendre(x_p, 9)
12215 end if
12216
12217 if (x_cc(i) - x_centroid_local >= 0 &
12218 .and. &
12219 r - as(2)*ps(2) - as(3)*ps(3) - as(4)*ps(4) - as(5)*ps(5) - as(6)*ps(6) - as(7)*ps(7) - as(8)*ps(8) - as(9)*ps(9) <= radius .and. &
12220 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
12221 then
12222 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
12223 eta_local, q_prim_vf, patch_id_fp)
12224
12225 elseif (x_cc(i) - x_centroid_local < 0 &
12226 .and. &
12227 r - as(2)*ps(2) + as(3)*ps(3) - as(4)*ps(4) + as(5)*ps(5) - as(6)*ps(6) + as(7)*ps(7) - as(8)*ps(8) + as(9)*ps(9) <= radius &
12228 .and. &
12229 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, 0))) &
12230 then
12231 call s_assign_patch_primitive_variables(patch_id, i, j, 0, &
12232 eta_local, q_prim_vf, patch_id_fp)
12233
12234 end if
12235 end do
12236 end do
12237 end if
12238
12239 end subroutine s_icpp_spherical_harmonic
12240
12241 !> The spherical patch is a 3D geometry that may be used,
12242 !! for example, in creating a bubble or a droplet. The patch
12243 !! geometry is well-defined when its centroid and radius are
12244 !! provided. Please note that the spherical patch DOES allow
12245 !! for the smoothing of its boundary.
12246 !! @param patch_id is the patch identifier
12247 !! @param patch_id_fp Array to track patch ids
12248 !! @param q_prim_vf Array of primitive variables
12249 subroutine s_icpp_sphere(patch_id, patch_id_fp, q_prim_vf)
12250
12251 integer, intent(in) :: patch_id
12252#ifdef MFC_MIXED_PRECISION
12253 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
12254#else
12255 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
12256#endif
12257 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
12258
12259 ! Generic loop iterators
12260 integer :: i, j, k
12261 real(wp) :: radius
12262 integer :: xRows, yRows, nRows, iix, iiy, max_files
12263# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12264 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
12265# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12266 real(wp) :: x_len, x_step, y_len, y_step
12267# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12268 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
12269# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12270 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
12271# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12272 real(wp) :: delta_x, delta_y
12273# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12274 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
12275# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12276 character(len=200) :: errmsg
12277# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12278 real(wp), allocatable :: stored_values(:, :, :)
12279# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12280 real(wp), allocatable :: x_coords(:), y_coords(:)
12281# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12282 logical :: files_loaded = .false.
12283# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12284 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
12285# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12286 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
12287# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12288 character(len=20) :: file_num_str ! For storing the file number as a string
12289# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12290 character(len=20) :: zeros_part ! For the trailing zeros part
12291# 1213 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12292 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
12293 ! Place any declaration of intermediate variables here
12294# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12295 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
12296# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12297 real(wp) :: eps
12298# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12299
12300# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12301 ! IGR Jets
12302# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12303 ! Arrays to stor position and radii of jets from input file
12304# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12305 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
12306# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12307 ! Variables to describe initial condition of jet
12308# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12309 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
12310# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12311 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
12312# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12313
12314# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12315 real(wp), dimension(0:n, 0:p) :: rcut_arr
12316# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12317 integer :: l, q, s ! Iterators for reading input files
12318# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12319 integer :: start, end ! Ints to keep track of position in file
12320# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12321 character(len=1000) :: line ! String to store line in ile
12322# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12323 character(len=25) :: value ! String to store value in line
12324# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12325 integer :: NJet ! Number of jets
12326# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12327
12328# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12329 eps = 1e-9_wp
12330# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12331
12332# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12333 if (patch_icpp(patch_id)%hcid == 303) then
12334# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12335 eps_smooth = 3._wp
12336# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12337 open (unit=10, file="njet.txt", status="old", action="read")
12338# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12339 read (10, *) njet
12340# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12341 close (10)
12342# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12343
12344# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12345 allocate (y_th_arr(0:njet - 1))
12346# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12347 allocate (z_th_arr(0:njet - 1))
12348# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12349 allocate (r_th_arr(0:njet - 1))
12350# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12351
12352# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12353 open (unit=10, file="jets.csv", status="old", action="read")
12354# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12355 do q = 0, njet - 1
12356# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12357 read (10, '(A)') line ! Read a full line as a string
12358# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12359 start = 1
12360# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12361
12362# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12363 do l = 0, 2
12364# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12365 end = index(line(start:), ',') ! Find the next comma
12366# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12367 if (end == 0) then
12368# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12369 value = trim(adjustl(line(start:))) ! Last value in the line
12370# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12371 else
12372# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12373 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
12374# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12375 start = start + end ! Move to next value
12376# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12377 end if
12378# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12379 if (l == 0) then
12380# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12381 read (value, *) y_th_arr(q) ! Convert string to numeric value
12382# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12383 elseif (l == 1) then
12384# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12385 read (value, *) z_th_arr(q)
12386# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12387 else
12388# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12389 read (value, *) r_th_arr(q)
12390# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12391 end if
12392# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12393 end do
12394# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12395 end do
12396# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12397 close (10)
12398# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12399
12400# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12401 do q = 0, p
12402# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12403 do l = 0, n
12404# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12405 rcut = 0._wp
12406# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12407 do s = 0, njet - 1
12408# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12409 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
12410# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12411 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
12412# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12413 end do
12414# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12415 rcut_arr(l, q) = rcut
12416# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12417 end do
12418# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12419 end do
12420# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12421 end if
12422# 1214 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12423
12424
12425 !! Variables to initialize the pressure field that corresponds to the
12426 !! bubble-collapse test case found in Tiwari et al. (2013)
12427
12428 ! Transferring spherical patch's radius, centroid, smoothing patch
12429 ! identity and smoothing coefficient information
12430 x_centroid = patch_icpp(patch_id)%x_centroid
12431 y_centroid = patch_icpp(patch_id)%y_centroid
12432 z_centroid = patch_icpp(patch_id)%z_centroid
12433 radius = patch_icpp(patch_id)%radius
12434 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
12435 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
12436
12437 ! Initializing the pseudo volume fraction value to 1. The value will
12438 ! be modified as the patch is laid out on the grid, but only in the
12439 ! case that smoothing of the spherical patch's boundary is enabled.
12440 eta = 1._wp
12441
12442 ! Checking whether the sphere covers a particular cell in the domain
12443 ! and verifying whether the current patch has permission to write to
12444 ! that cell. If both queries check out, the primitive variables of
12445 ! the current patch are assigned to this cell.
12446 do k = 0, p
12447 do j = 0, n
12448 do i = 0, m
12449
12450 if (grid_geometry == 3) then
12452 else
12453 cart_y = y_cc(j)
12454 cart_z = z_cc(k)
12455 end if
12456
12457 if (patch_icpp(patch_id)%smoothen) then
12458 eta = tanh(smooth_coeff/min(dx, dy, dz)* &
12459 (sqrt((x_cc(i) - x_centroid)**2 &
12460 + (cart_y - y_centroid)**2 &
12461 + (cart_z - z_centroid)**2) &
12462 - radius))*(-0.5_wp) + 0.5_wp
12463 end if
12464
12465 if ((((x_cc(i) - x_centroid)**2 &
12466 + (cart_y - y_centroid)**2 &
12467 + (cart_z - z_centroid)**2 <= radius**2) .and. &
12468 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) .or. &
12469 patch_id_fp(i, j, k) == smooth_patch_id) then
12470
12471 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
12472 eta, q_prim_vf, patch_id_fp)
12473
12474
12475 if (patch_icpp(patch_id)%hcid /= dflt_int) then
12476
12477# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12478 select case (patch_icpp(patch_id)%hcid)
12479# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12480 case (300) ! Rayleigh-Taylor instability
12481# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12482 rhoh = 3._wp
12483# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12484 rhol = 1._wp
12485# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12486 pref = 1.e5_wp
12487# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12488 pint = pref
12489# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12490 h = 0.7_wp
12491# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12492 lam = 0.2_wp
12493# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12494 wl = 2._wp*pi/lam
12495# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12496 amp = 0.025_wp/wl
12497# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12498
12499# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12500 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
12501# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12502
12503# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12504 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
12505# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12506
12507# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12508 if (alph < eps) alph = eps
12509# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12510 if (alph > 1._wp - eps) alph = 1._wp - eps
12511# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12512
12513# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12514 if (y_cc(j) > inth) then
12515# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12516 q_prim_vf(advxb)%sf(i, j, k) = alph
12517# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12518 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
12519# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12520 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
12521# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12522 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
12523# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12524 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
12525# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12526 else
12527# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12528 q_prim_vf(advxb)%sf(i, j, k) = alph
12529# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12530 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
12531# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12532 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
12533# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12534 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
12535# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12536 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
12537# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12538 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
12539# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12540 end if
12541# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12542
12543# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12544 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
12545# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12546 h = 0.0_wp
12547# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12548 lam = 1.0_wp
12549# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12550 amp = patch_icpp(patch_id)%a(2)
12551# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12552 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
12553# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12554 if (x_cc(i) > inth) then
12555# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12556 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
12557# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12558 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
12559# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12560 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
12561# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12562 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
12563# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12564 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
12565# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12566 end if
12567# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12568
12569# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12570 case (302) ! 3D Jet with IGR
12571# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12572 ux_th = 10*sqrt(1.4*0.4)
12573# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12574 ux_am = 0.0*sqrt(1.4)
12575# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12576 p_th = 2.0_wp
12577# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12578 p_am = 1.0_wp
12579# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12580 rho_th = 1._wp
12581# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12582 rho_am = 1._wp
12583# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12584 y_th = 0.0_wp
12585# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12586 z_th = 0.0_wp
12587# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12588 r_th = 1._wp
12589# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12590 eps_smooth = 1._wp
12591# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12592 eps = 1e-6
12593# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12594
12595# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12596 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
12597# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12598 rcut = f_cut_on(r - r_th, eps_smooth)
12599# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12600 xcut = f_cut_on(x_cc(i), eps_smooth)
12601# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12602
12603# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12604 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
12605# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12606 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
12607# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12608 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
12609# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12610
12611# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12612 if (num_fluids == 1) then
12613# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12614 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
12615# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12616 else
12617# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12618 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
12619# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12620 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
12621# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12622 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
12623# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12624 end if
12625# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12626
12627# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12628 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
12629# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12630
12631# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12632 case (303) ! 3D Multijet
12633# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12634
12635# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12636 eps_smooth = 3.0_wp
12637# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12638 ux_th = 10*sqrt(1.4*0.4)
12639# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12640 ux_am = 2.5*sqrt(1.4*0.4)
12641# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12642 p_th = 0.8_wp
12643# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12644 p_am = 0.4_wp
12645# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12646 rho_th = 1._wp
12647# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12648 rho_am = 1._wp
12649# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12650 eps = 1e-6
12651# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12652
12653# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12654 rcut = rcut_arr(j, k)
12655# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12656 xcut = f_cut_on(x_cc(i), eps_smooth)
12657# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12658
12659# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12660 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
12661# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12662 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
12663# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12664 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
12665# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12666
12667# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12668 if (num_fluids == 1) then
12669# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12670 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
12671# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12672 else
12673# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12674 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
12675# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12676 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
12677# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12678 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
12679# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12680 end if
12681# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12682
12683# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12684 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
12685# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12686
12687# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12688 case (370)
12689# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12690 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
12691# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12692
12693# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12694 if (.not. files_loaded) then
12695# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12696 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
12697# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12698 do f = 1, max_files
12699# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12700 write (file_num_str, '(I0)') f
12701# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12702 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
12703# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12704 end do
12705# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12706
12707# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12708 ! Common file reading setup
12709# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12710 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
12711# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12712 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
12713# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12714
12715# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12716 select case (num_dims)
12717# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12718 case (1, 2) ! 1D and 2D cases are similar
12719# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12720 ! Count lines
12721# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12722 line_count = 0
12723# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12724 do
12725# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12726 read (unit2, *, iostat=ios2) dummy_x, dummy_y
12727# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12728 if (ios2 /= 0) exit
12729# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12730 line_count = line_count + 1
12731# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12732 end do
12733# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12734 close (unit2)
12735# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12736
12737# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12738 xrows = line_count
12739# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12740 yrows = 1
12741# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12742 index_x = 0
12743# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12744 if (num_dims == 2) index_x = i
12745# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12746#ifdef MFC_DEBUG
12747# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12748 block
12749# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12750 use iso_fortran_env, only: output_unit
12751# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12752
12753# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12754 print *, 'm_icpp_patches.fpp:1267: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
12755# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12756
12757# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12758 call flush (output_unit)
12759# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12760 end block
12761# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12762#endif
12763# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12764 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
12765# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12766
12767# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12768
12769# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12770
12771# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12772#if defined(MFC_OpenACC)
12773# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12774!$acc enter data create(x_coords, stored_values)
12775# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12776#elif defined(MFC_OpenMP)
12777# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12778!$omp target enter data map(always,alloc:x_coords, stored_values)
12779# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12780#endif
12781# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12782
12783# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12784 ! Read data from all files
12785# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12786 do f = 1, max_files
12787# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12788 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
12789# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12790 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
12791# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12792
12793# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12794 do iter = 1, xrows
12795# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12796 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
12797# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12798 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
12799# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12800 end do
12801# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12802 close (unit)
12803# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12804 end do
12805# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12806
12807# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12808 ! Calculate offsets
12809# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12810 domain_xstart = x_coords(1)
12811# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12812 x_step = x_cc(1) - x_cc(0)
12813# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12814 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
12815# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12816 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
12817# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12818 global_offset_x = nint(abs(delta_x)/x_step)
12819# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12820
12821# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12822 case (3) ! 3D case - determine grid structure
12823# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12824 ! Find yRows by counting rows with same x
12825# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12826 read (unit2, *, iostat=ios2) x0, y0, dummy_z
12827# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12828 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
12829# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12830
12831# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12832 yrows = 1
12833# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12834 do
12835# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12836 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
12837# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12838 if (ios2 /= 0) exit
12839# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12840 if (dummy_x == x0 .and. dummy_y /= y0) then
12841# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12842 yrows = yrows + 1
12843# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12844 else
12845# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12846 exit
12847# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12848 end if
12849# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12850 end do
12851# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12852 close (unit2)
12853# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12854
12855# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12856 ! Count total rows
12857# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12858 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
12859# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12860 nrows = 0
12861# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12862 do
12863# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12864 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
12865# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12866 if (ios2 /= 0) exit
12867# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12868 nrows = nrows + 1
12869# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12870 end do
12871# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12872 close (unit2)
12873# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12874
12875# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12876 xrows = nrows/yrows
12877# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12878#ifdef MFC_DEBUG
12879# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12880 block
12881# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12882 use iso_fortran_env, only: output_unit
12883# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12884
12885# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12886 print *, 'm_icpp_patches.fpp:1267: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
12887# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12888
12889# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12890 call flush (output_unit)
12891# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12892 end block
12893# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12894#endif
12895# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12896 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
12897# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12898
12899# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12900
12901# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12902
12903# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12904
12905# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12906#if defined(MFC_OpenACC)
12907# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12908!$acc enter data create(x_coords, y_coords, stored_values)
12909# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12910#elif defined(MFC_OpenMP)
12911# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12912!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
12913# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12914#endif
12915# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12916 index_x = i
12917# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12918 index_y = j
12919# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12920
12921# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12922 ! Read all files
12923# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12924 do f = 1, max_files
12925# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12926 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
12927# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12928 if (ios /= 0) then
12929# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12930 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
12931# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12932 cycle
12933# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12934 end if
12935# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12936
12937# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12938 iter = 0
12939# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12940 do iix = 1, xrows
12941# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12942 do iiy = 1, yrows
12943# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12944 iter = iter + 1
12945# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12946 if (f == 1) then
12947# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12948 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
12949# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12950 else
12951# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12952 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
12953# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12954 end if
12955# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12956 if (ios /= 0) call s_mpi_abort("Error reading data")
12957# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12958 end do
12959# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12960 end do
12961# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12962 close (unit)
12963# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12964 end do
12965# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12966
12967# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12968 ! Calculate offsets
12969# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12970 x_step = x_cc(1) - x_cc(0)
12971# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12972 y_step = y_cc(1) - y_cc(0)
12973# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12974 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
12975# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12976 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
12977# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12978 global_offset_x = nint(abs(delta_x)/x_step)
12979# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12980 global_offset_y = nint(abs(delta_y)/y_step)
12981# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12982 end select
12983# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12984
12985# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12986 files_loaded = .true.
12987# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12988 end if
12989# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12990
12991# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12992 ! Data assignment
12993# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12994 select case (num_dims)
12995# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12996 case (1)
12997# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
12998 idx = i + 1 + global_offset_x
12999# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13000 do f = 1, sys_size
13001# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13002 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
13003# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13004 end do
13005# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13006
13007# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13008 case (2)
13009# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13010 idx = i + 1 + global_offset_x - index_x
13011# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13012 do f = 1, sys_size - 1
13013# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13014 jump = merge(1, 0, f >= momxe)
13015# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13016 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
13017# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13018 end do
13019# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13020 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
13021# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13022
13023# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13024 case (3)
13025# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13026 idx = i + 1 + global_offset_x - index_x
13027# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13028 idy = j + 1 + global_offset_y - index_y
13029# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13030 do f = 1, sys_size - 1
13031# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13032 jump = merge(1, 0, f >= momxe)
13033# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13034 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
13035# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13036 end do
13037# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13038 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
13039# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13040 end select
13041# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13042
13043# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13044 case (380)
13045# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13046 ! This is patch is hard-coded for test suite optimization used in the
13047# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13048 ! 3D_TaylorGreenVortex case:
13049# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13050 ! This analytic patch used geometry 9
13051# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13052 mach = 0.1
13053# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13054 if (patch_id == 1) then
13055# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13056 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
13057# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13058 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
13059# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13060 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
13061# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13062 end if
13063# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13064
13065# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13066 case default
13067# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13068 call s_int_to_str(patch_id, istr)
13069# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13070 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
13071# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13072 end select
13073# 1267 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13074
13075 end if
13076
13077 end if
13078 end do
13079 end do
13080 end do
13081 if (allocated(stored_values)) then
13082# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13083#ifdef MFC_DEBUG
13084# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13085 block
13086# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13087 use iso_fortran_env, only: output_unit
13088# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13089
13090# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13091 print *, 'm_icpp_patches.fpp:1274: ', '@:DEALLOCATE(stored_values)'
13092# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13093
13094# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13095 call flush (output_unit)
13096# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13097 end block
13098# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13099#endif
13100# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13101
13102# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13103#if defined(MFC_OpenACC)
13104# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13105!$acc exit data delete(stored_values)
13106# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13107#elif defined(MFC_OpenMP)
13108# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13109!$omp target exit data map(release:stored_values)
13110# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13111#endif
13112# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13113 deallocate (stored_values)
13114# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13115#ifdef MFC_DEBUG
13116# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13117 block
13118# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13119 use iso_fortran_env, only: output_unit
13120# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13121
13122# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13123 print *, 'm_icpp_patches.fpp:1274: ', '@:DEALLOCATE(x_coords)'
13124# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13125
13126# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13127 call flush (output_unit)
13128# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13129 end block
13130# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13131#endif
13132# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13133
13134# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13135#if defined(MFC_OpenACC)
13136# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13137!$acc exit data delete(x_coords)
13138# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13139#elif defined(MFC_OpenMP)
13140# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13141!$omp target exit data map(release:x_coords)
13142# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13143#endif
13144# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13145 deallocate (x_coords)
13146# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13147 end if
13148# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13149
13150# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13151 if (allocated(y_coords)) then
13152# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13153#ifdef MFC_DEBUG
13154# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13155 block
13156# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13157 use iso_fortran_env, only: output_unit
13158# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13159
13160# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13161 print *, 'm_icpp_patches.fpp:1274: ', '@:DEALLOCATE(y_coords)'
13162# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13163
13164# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13165 call flush (output_unit)
13166# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13167 end block
13168# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13169#endif
13170# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13171
13172# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13173#if defined(MFC_OpenACC)
13174# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13175!$acc exit data delete(y_coords)
13176# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13177#elif defined(MFC_OpenMP)
13178# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13179!$omp target exit data map(release:y_coords)
13180# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13181#endif
13182# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13183 deallocate (y_coords)
13184# 1274 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13185 end if
13186
13187 end subroutine s_icpp_sphere
13188
13189 !> The cuboidal patch is a 3D geometry that may be used, for
13190 !! example, in creating a solid boundary, or pre-/post-shock
13191 !! region, which is aligned with the axes of the Cartesian
13192 !! coordinate system. The geometry of such a patch is well-
13193 !! defined when its centroid and lengths in the x-, y- and
13194 !! z-coordinate directions are provided. Please notice that
13195 !! the cuboidal patch DOES NOT allow for the smearing of its
13196 !! boundaries.
13197 !! @param patch_id is the patch identifier
13198 !! @param patch_id_fp Array to track patch ids
13199 !! @param q_prim_vf Array of primitive variables
13200 subroutine s_icpp_cuboid(patch_id, patch_id_fp, q_prim_vf)
13201
13202 integer, intent(in) :: patch_id
13203#ifdef MFC_MIXED_PRECISION
13204 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
13205#else
13206 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
13207#endif
13208 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
13209
13210 integer :: i, j, k !< Generic loop iterators
13211 integer :: xRows, yRows, nRows, iix, iiy, max_files
13212# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13213 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
13214# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13215 real(wp) :: x_len, x_step, y_len, y_step
13216# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13217 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
13218# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13219 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
13220# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13221 real(wp) :: delta_x, delta_y
13222# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13223 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
13224# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13225 character(len=200) :: errmsg
13226# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13227 real(wp), allocatable :: stored_values(:, :, :)
13228# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13229 real(wp), allocatable :: x_coords(:), y_coords(:)
13230# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13231 logical :: files_loaded = .false.
13232# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13233 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
13234# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13235 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
13236# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13237 character(len=20) :: file_num_str ! For storing the file number as a string
13238# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13239 character(len=20) :: zeros_part ! For the trailing zeros part
13240# 1300 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13241 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
13242 ! Place any declaration of intermediate variables here
13243# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13244 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
13245# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13246 real(wp) :: eps
13247# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13248
13249# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13250 ! IGR Jets
13251# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13252 ! Arrays to stor position and radii of jets from input file
13253# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13254 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
13255# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13256 ! Variables to describe initial condition of jet
13257# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13258 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
13259# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13260 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
13261# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13262
13263# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13264 real(wp), dimension(0:n, 0:p) :: rcut_arr
13265# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13266 integer :: l, q, s ! Iterators for reading input files
13267# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13268 integer :: start, end ! Ints to keep track of position in file
13269# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13270 character(len=1000) :: line ! String to store line in ile
13271# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13272 character(len=25) :: value ! String to store value in line
13273# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13274 integer :: NJet ! Number of jets
13275# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13276
13277# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13278 eps = 1e-9_wp
13279# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13280
13281# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13282 if (patch_icpp(patch_id)%hcid == 303) then
13283# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13284 eps_smooth = 3._wp
13285# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13286 open (unit=10, file="njet.txt", status="old", action="read")
13287# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13288 read (10, *) njet
13289# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13290 close (10)
13291# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13292
13293# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13294 allocate (y_th_arr(0:njet - 1))
13295# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13296 allocate (z_th_arr(0:njet - 1))
13297# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13298 allocate (r_th_arr(0:njet - 1))
13299# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13300
13301# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13302 open (unit=10, file="jets.csv", status="old", action="read")
13303# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13304 do q = 0, njet - 1
13305# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13306 read (10, '(A)') line ! Read a full line as a string
13307# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13308 start = 1
13309# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13310
13311# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13312 do l = 0, 2
13313# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13314 end = index(line(start:), ',') ! Find the next comma
13315# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13316 if (end == 0) then
13317# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13318 value = trim(adjustl(line(start:))) ! Last value in the line
13319# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13320 else
13321# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13322 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
13323# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13324 start = start + end ! Move to next value
13325# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13326 end if
13327# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13328 if (l == 0) then
13329# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13330 read (value, *) y_th_arr(q) ! Convert string to numeric value
13331# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13332 elseif (l == 1) then
13333# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13334 read (value, *) z_th_arr(q)
13335# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13336 else
13337# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13338 read (value, *) r_th_arr(q)
13339# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13340 end if
13341# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13342 end do
13343# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13344 end do
13345# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13346 close (10)
13347# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13348
13349# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13350 do q = 0, p
13351# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13352 do l = 0, n
13353# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13354 rcut = 0._wp
13355# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13356 do s = 0, njet - 1
13357# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13358 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
13359# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13360 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
13361# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13362 end do
13363# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13364 rcut_arr(l, q) = rcut
13365# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13366 end do
13367# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13368 end do
13369# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13370 end if
13371# 1301 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13372
13373
13374 ! Transferring the cuboid's centroid and length information
13375 x_centroid = patch_icpp(patch_id)%x_centroid
13376 y_centroid = patch_icpp(patch_id)%y_centroid
13377 z_centroid = patch_icpp(patch_id)%z_centroid
13378 length_x = patch_icpp(patch_id)%length_x
13379 length_y = patch_icpp(patch_id)%length_y
13380 length_z = patch_icpp(patch_id)%length_z
13381
13382 ! Computing the beginning and the end x-, y- and z-coordinates of
13383 ! the cuboid based on its centroid and lengths
13384 x_boundary%beg = x_centroid - 0.5_wp*length_x
13385 x_boundary%end = x_centroid + 0.5_wp*length_x
13386 y_boundary%beg = y_centroid - 0.5_wp*length_y
13387 y_boundary%end = y_centroid + 0.5_wp*length_y
13388 z_boundary%beg = z_centroid - 0.5_wp*length_z
13389 z_boundary%end = z_centroid + 0.5_wp*length_z
13390
13391 ! Since the cuboidal patch does not allow for its boundaries to get
13392 ! smoothed out, the pseudo volume fraction is set to 1 to make sure
13393 ! that only the current patch contributes to the fluid state in the
13394 ! cells that this patch covers.
13395 eta = 1._wp
13396
13397 ! Checking whether the cuboid covers a particular cell in the domain
13398 ! and verifying whether the current patch has permission to write to
13399 ! to that cell. If both queries check out, the primitive variables
13400 ! of the current patch are assigned to this cell.
13401 do k = 0, p
13402 do j = 0, n
13403 do i = 0, m
13404
13405 if (grid_geometry == 3) then
13407 else
13408 cart_y = y_cc(j)
13409 cart_z = z_cc(k)
13410 end if
13411
13412 if (x_boundary%beg <= x_cc(i) .and. &
13413 x_boundary%end >= x_cc(i) .and. &
13414 y_boundary%beg <= cart_y .and. &
13415 y_boundary%end >= cart_y .and. &
13416 z_boundary%beg <= cart_z .and. &
13417 z_boundary%end >= cart_z) then
13418
13419 if (patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) then
13420
13421 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
13422 eta, q_prim_vf, patch_id_fp)
13423
13424
13425 if (patch_icpp(patch_id)%hcid /= dflt_int) then
13426
13427# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13428 select case (patch_icpp(patch_id)%hcid)
13429# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13430 case (300) ! Rayleigh-Taylor instability
13431# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13432 rhoh = 3._wp
13433# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13434 rhol = 1._wp
13435# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13436 pref = 1.e5_wp
13437# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13438 pint = pref
13439# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13440 h = 0.7_wp
13441# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13442 lam = 0.2_wp
13443# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13444 wl = 2._wp*pi/lam
13445# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13446 amp = 0.025_wp/wl
13447# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13448
13449# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13450 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
13451# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13452
13453# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13454 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
13455# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13456
13457# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13458 if (alph < eps) alph = eps
13459# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13460 if (alph > 1._wp - eps) alph = 1._wp - eps
13461# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13462
13463# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13464 if (y_cc(j) > inth) then
13465# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13466 q_prim_vf(advxb)%sf(i, j, k) = alph
13467# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13468 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
13469# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13470 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
13471# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13472 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
13473# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13474 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
13475# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13476 else
13477# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13478 q_prim_vf(advxb)%sf(i, j, k) = alph
13479# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13480 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
13481# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13482 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
13483# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13484 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
13485# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13486 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
13487# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13488 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
13489# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13490 end if
13491# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13492
13493# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13494 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
13495# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13496 h = 0.0_wp
13497# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13498 lam = 1.0_wp
13499# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13500 amp = patch_icpp(patch_id)%a(2)
13501# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13502 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
13503# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13504 if (x_cc(i) > inth) then
13505# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13506 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
13507# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13508 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
13509# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13510 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
13511# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13512 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
13513# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13514 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
13515# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13516 end if
13517# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13518
13519# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13520 case (302) ! 3D Jet with IGR
13521# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13522 ux_th = 10*sqrt(1.4*0.4)
13523# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13524 ux_am = 0.0*sqrt(1.4)
13525# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13526 p_th = 2.0_wp
13527# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13528 p_am = 1.0_wp
13529# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13530 rho_th = 1._wp
13531# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13532 rho_am = 1._wp
13533# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13534 y_th = 0.0_wp
13535# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13536 z_th = 0.0_wp
13537# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13538 r_th = 1._wp
13539# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13540 eps_smooth = 1._wp
13541# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13542 eps = 1e-6
13543# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13544
13545# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13546 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
13547# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13548 rcut = f_cut_on(r - r_th, eps_smooth)
13549# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13550 xcut = f_cut_on(x_cc(i), eps_smooth)
13551# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13552
13553# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13554 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
13555# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13556 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
13557# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13558 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
13559# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13560
13561# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13562 if (num_fluids == 1) then
13563# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13564 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
13565# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13566 else
13567# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13568 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
13569# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13570 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
13571# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13572 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
13573# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13574 end if
13575# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13576
13577# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13578 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
13579# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13580
13581# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13582 case (303) ! 3D Multijet
13583# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13584
13585# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13586 eps_smooth = 3.0_wp
13587# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13588 ux_th = 10*sqrt(1.4*0.4)
13589# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13590 ux_am = 2.5*sqrt(1.4*0.4)
13591# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13592 p_th = 0.8_wp
13593# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13594 p_am = 0.4_wp
13595# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13596 rho_th = 1._wp
13597# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13598 rho_am = 1._wp
13599# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13600 eps = 1e-6
13601# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13602
13603# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13604 rcut = rcut_arr(j, k)
13605# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13606 xcut = f_cut_on(x_cc(i), eps_smooth)
13607# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13608
13609# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13610 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
13611# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13612 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
13613# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13614 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
13615# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13616
13617# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13618 if (num_fluids == 1) then
13619# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13620 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
13621# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13622 else
13623# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13624 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
13625# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13626 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
13627# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13628 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
13629# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13630 end if
13631# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13632
13633# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13634 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
13635# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13636
13637# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13638 case (370)
13639# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13640 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
13641# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13642
13643# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13644 if (.not. files_loaded) then
13645# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13646 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
13647# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13648 do f = 1, max_files
13649# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13650 write (file_num_str, '(I0)') f
13651# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13652 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
13653# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13654 end do
13655# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13656
13657# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13658 ! Common file reading setup
13659# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13660 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
13661# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13662 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
13663# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13664
13665# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13666 select case (num_dims)
13667# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13668 case (1, 2) ! 1D and 2D cases are similar
13669# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13670 ! Count lines
13671# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13672 line_count = 0
13673# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13674 do
13675# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13676 read (unit2, *, iostat=ios2) dummy_x, dummy_y
13677# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13678 if (ios2 /= 0) exit
13679# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13680 line_count = line_count + 1
13681# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13682 end do
13683# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13684 close (unit2)
13685# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13686
13687# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13688 xrows = line_count
13689# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13690 yrows = 1
13691# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13692 index_x = 0
13693# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13694 if (num_dims == 2) index_x = i
13695# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13696#ifdef MFC_DEBUG
13697# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13698 block
13699# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13700 use iso_fortran_env, only: output_unit
13701# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13702
13703# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13704 print *, 'm_icpp_patches.fpp:1355: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
13705# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13706
13707# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13708 call flush (output_unit)
13709# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13710 end block
13711# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13712#endif
13713# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13714 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
13715# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13716
13717# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13718
13719# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13720
13721# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13722#if defined(MFC_OpenACC)
13723# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13724!$acc enter data create(x_coords, stored_values)
13725# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13726#elif defined(MFC_OpenMP)
13727# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13728!$omp target enter data map(always,alloc:x_coords, stored_values)
13729# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13730#endif
13731# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13732
13733# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13734 ! Read data from all files
13735# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13736 do f = 1, max_files
13737# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13738 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
13739# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13740 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
13741# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13742
13743# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13744 do iter = 1, xrows
13745# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13746 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
13747# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13748 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
13749# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13750 end do
13751# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13752 close (unit)
13753# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13754 end do
13755# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13756
13757# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13758 ! Calculate offsets
13759# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13760 domain_xstart = x_coords(1)
13761# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13762 x_step = x_cc(1) - x_cc(0)
13763# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13764 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
13765# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13766 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
13767# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13768 global_offset_x = nint(abs(delta_x)/x_step)
13769# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13770
13771# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13772 case (3) ! 3D case - determine grid structure
13773# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13774 ! Find yRows by counting rows with same x
13775# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13776 read (unit2, *, iostat=ios2) x0, y0, dummy_z
13777# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13778 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
13779# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13780
13781# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13782 yrows = 1
13783# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13784 do
13785# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13786 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
13787# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13788 if (ios2 /= 0) exit
13789# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13790 if (dummy_x == x0 .and. dummy_y /= y0) then
13791# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13792 yrows = yrows + 1
13793# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13794 else
13795# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13796 exit
13797# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13798 end if
13799# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13800 end do
13801# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13802 close (unit2)
13803# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13804
13805# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13806 ! Count total rows
13807# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13808 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
13809# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13810 nrows = 0
13811# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13812 do
13813# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13814 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
13815# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13816 if (ios2 /= 0) exit
13817# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13818 nrows = nrows + 1
13819# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13820 end do
13821# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13822 close (unit2)
13823# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13824
13825# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13826 xrows = nrows/yrows
13827# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13828#ifdef MFC_DEBUG
13829# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13830 block
13831# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13832 use iso_fortran_env, only: output_unit
13833# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13834
13835# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13836 print *, 'm_icpp_patches.fpp:1355: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
13837# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13838
13839# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13840 call flush (output_unit)
13841# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13842 end block
13843# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13844#endif
13845# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13846 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
13847# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13848
13849# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13850
13851# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13852
13853# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13854
13855# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13856#if defined(MFC_OpenACC)
13857# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13858!$acc enter data create(x_coords, y_coords, stored_values)
13859# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13860#elif defined(MFC_OpenMP)
13861# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13862!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
13863# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13864#endif
13865# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13866 index_x = i
13867# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13868 index_y = j
13869# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13870
13871# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13872 ! Read all files
13873# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13874 do f = 1, max_files
13875# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13876 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
13877# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13878 if (ios /= 0) then
13879# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13880 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
13881# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13882 cycle
13883# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13884 end if
13885# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13886
13887# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13888 iter = 0
13889# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13890 do iix = 1, xrows
13891# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13892 do iiy = 1, yrows
13893# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13894 iter = iter + 1
13895# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13896 if (f == 1) then
13897# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13898 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
13899# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13900 else
13901# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13902 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
13903# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13904 end if
13905# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13906 if (ios /= 0) call s_mpi_abort("Error reading data")
13907# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13908 end do
13909# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13910 end do
13911# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13912 close (unit)
13913# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13914 end do
13915# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13916
13917# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13918 ! Calculate offsets
13919# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13920 x_step = x_cc(1) - x_cc(0)
13921# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13922 y_step = y_cc(1) - y_cc(0)
13923# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13924 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
13925# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13926 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
13927# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13928 global_offset_x = nint(abs(delta_x)/x_step)
13929# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13930 global_offset_y = nint(abs(delta_y)/y_step)
13931# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13932 end select
13933# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13934
13935# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13936 files_loaded = .true.
13937# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13938 end if
13939# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13940
13941# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13942 ! Data assignment
13943# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13944 select case (num_dims)
13945# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13946 case (1)
13947# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13948 idx = i + 1 + global_offset_x
13949# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13950 do f = 1, sys_size
13951# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13952 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
13953# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13954 end do
13955# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13956
13957# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13958 case (2)
13959# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13960 idx = i + 1 + global_offset_x - index_x
13961# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13962 do f = 1, sys_size - 1
13963# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13964 jump = merge(1, 0, f >= momxe)
13965# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13966 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
13967# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13968 end do
13969# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13970 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
13971# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13972
13973# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13974 case (3)
13975# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13976 idx = i + 1 + global_offset_x - index_x
13977# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13978 idy = j + 1 + global_offset_y - index_y
13979# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13980 do f = 1, sys_size - 1
13981# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13982 jump = merge(1, 0, f >= momxe)
13983# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13984 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
13985# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13986 end do
13987# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13988 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
13989# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13990 end select
13991# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13992
13993# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13994 case (380)
13995# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13996 ! This is patch is hard-coded for test suite optimization used in the
13997# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
13998 ! 3D_TaylorGreenVortex case:
13999# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14000 ! This analytic patch used geometry 9
14001# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14002 mach = 0.1
14003# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14004 if (patch_id == 1) then
14005# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14006 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
14007# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14008 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
14009# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14010 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
14011# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14012 end if
14013# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14014
14015# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14016 case default
14017# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14018 call s_int_to_str(patch_id, istr)
14019# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14020 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
14021# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14022 end select
14023# 1355 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14024
14025 end if
14026
14027 ! Updating the patch identities bookkeeping variable
14028 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, k) = patch_id
14029
14030 end if
14031 end if
14032 end do
14033 end do
14034 end do
14035 if (allocated(stored_values)) then
14036# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14037#ifdef MFC_DEBUG
14038# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14039 block
14040# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14041 use iso_fortran_env, only: output_unit
14042# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14043
14044# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14045 print *, 'm_icpp_patches.fpp:1366: ', '@:DEALLOCATE(stored_values)'
14046# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14047
14048# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14049 call flush (output_unit)
14050# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14051 end block
14052# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14053#endif
14054# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14055
14056# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14057#if defined(MFC_OpenACC)
14058# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14059!$acc exit data delete(stored_values)
14060# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14061#elif defined(MFC_OpenMP)
14062# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14063!$omp target exit data map(release:stored_values)
14064# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14065#endif
14066# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14067 deallocate (stored_values)
14068# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14069#ifdef MFC_DEBUG
14070# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14071 block
14072# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14073 use iso_fortran_env, only: output_unit
14074# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14075
14076# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14077 print *, 'm_icpp_patches.fpp:1366: ', '@:DEALLOCATE(x_coords)'
14078# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14079
14080# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14081 call flush (output_unit)
14082# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14083 end block
14084# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14085#endif
14086# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14087
14088# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14089#if defined(MFC_OpenACC)
14090# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14091!$acc exit data delete(x_coords)
14092# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14093#elif defined(MFC_OpenMP)
14094# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14095!$omp target exit data map(release:x_coords)
14096# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14097#endif
14098# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14099 deallocate (x_coords)
14100# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14101 end if
14102# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14103
14104# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14105 if (allocated(y_coords)) then
14106# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14107#ifdef MFC_DEBUG
14108# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14109 block
14110# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14111 use iso_fortran_env, only: output_unit
14112# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14113
14114# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14115 print *, 'm_icpp_patches.fpp:1366: ', '@:DEALLOCATE(y_coords)'
14116# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14117
14118# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14119 call flush (output_unit)
14120# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14121 end block
14122# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14123#endif
14124# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14125
14126# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14127#if defined(MFC_OpenACC)
14128# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14129!$acc exit data delete(y_coords)
14130# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14131#elif defined(MFC_OpenMP)
14132# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14133!$omp target exit data map(release:y_coords)
14134# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14135#endif
14136# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14137 deallocate (y_coords)
14138# 1366 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14139 end if
14140
14141 end subroutine s_icpp_cuboid
14142
14143 !> The cylindrical patch is a 3D geometry that may be used,
14144 !! for example, in setting up a cylindrical solid boundary
14145 !! confinement, like a blood vessel. The geometry of this
14146 !! patch is well-defined when the centroid, the radius and
14147 !! the length along the cylinder's axis, parallel to the x-,
14148 !! y- or z-coordinate direction, are provided. Please note
14149 !! that the cylindrical patch DOES allow for the smoothing
14150 !! of its lateral boundary.
14151 !! @param patch_id is the patch identifier
14152 !! @param patch_id_fp Array to track patch ids
14153 !! @param q_prim_vf Array of primitive variables
14154 subroutine s_icpp_cylinder(patch_id, patch_id_fp, q_prim_vf)
14155
14156 integer, intent(in) :: patch_id
14157#ifdef MFC_MIXED_PRECISION
14158 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
14159#else
14160 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
14161#endif
14162 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
14163
14164 integer :: i, j, k !< Generic loop iterators
14165 real(wp) :: radius
14166 integer :: xRows, yRows, nRows, iix, iiy, max_files
14167# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14168 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
14169# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14170 real(wp) :: x_len, x_step, y_len, y_step
14171# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14172 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
14173# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14174 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
14175# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14176 real(wp) :: delta_x, delta_y
14177# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14178 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
14179# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14180 character(len=200) :: errmsg
14181# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14182 real(wp), allocatable :: stored_values(:, :, :)
14183# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14184 real(wp), allocatable :: x_coords(:), y_coords(:)
14185# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14186 logical :: files_loaded = .false.
14187# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14188 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
14189# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14190 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
14191# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14192 character(len=20) :: file_num_str ! For storing the file number as a string
14193# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14194 character(len=20) :: zeros_part ! For the trailing zeros part
14195# 1393 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14196 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
14197 ! Place any declaration of intermediate variables here
14198# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14199 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
14200# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14201 real(wp) :: eps
14202# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14203
14204# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14205 ! IGR Jets
14206# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14207 ! Arrays to stor position and radii of jets from input file
14208# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14209 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
14210# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14211 ! Variables to describe initial condition of jet
14212# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14213 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
14214# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14215 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
14216# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14217
14218# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14219 real(wp), dimension(0:n, 0:p) :: rcut_arr
14220# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14221 integer :: l, q, s ! Iterators for reading input files
14222# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14223 integer :: start, end ! Ints to keep track of position in file
14224# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14225 character(len=1000) :: line ! String to store line in ile
14226# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14227 character(len=25) :: value ! String to store value in line
14228# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14229 integer :: NJet ! Number of jets
14230# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14231
14232# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14233 eps = 1e-9_wp
14234# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14235
14236# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14237 if (patch_icpp(patch_id)%hcid == 303) then
14238# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14239 eps_smooth = 3._wp
14240# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14241 open (unit=10, file="njet.txt", status="old", action="read")
14242# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14243 read (10, *) njet
14244# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14245 close (10)
14246# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14247
14248# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14249 allocate (y_th_arr(0:njet - 1))
14250# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14251 allocate (z_th_arr(0:njet - 1))
14252# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14253 allocate (r_th_arr(0:njet - 1))
14254# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14255
14256# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14257 open (unit=10, file="jets.csv", status="old", action="read")
14258# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14259 do q = 0, njet - 1
14260# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14261 read (10, '(A)') line ! Read a full line as a string
14262# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14263 start = 1
14264# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14265
14266# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14267 do l = 0, 2
14268# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14269 end = index(line(start:), ',') ! Find the next comma
14270# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14271 if (end == 0) then
14272# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14273 value = trim(adjustl(line(start:))) ! Last value in the line
14274# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14275 else
14276# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14277 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
14278# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14279 start = start + end ! Move to next value
14280# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14281 end if
14282# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14283 if (l == 0) then
14284# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14285 read (value, *) y_th_arr(q) ! Convert string to numeric value
14286# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14287 elseif (l == 1) then
14288# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14289 read (value, *) z_th_arr(q)
14290# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14291 else
14292# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14293 read (value, *) r_th_arr(q)
14294# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14295 end if
14296# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14297 end do
14298# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14299 end do
14300# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14301 close (10)
14302# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14303
14304# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14305 do q = 0, p
14306# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14307 do l = 0, n
14308# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14309 rcut = 0._wp
14310# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14311 do s = 0, njet - 1
14312# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14313 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
14314# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14315 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
14316# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14317 end do
14318# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14319 rcut_arr(l, q) = rcut
14320# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14321 end do
14322# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14323 end do
14324# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14325 end if
14326# 1394 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14327
14328
14329 ! Transferring the cylindrical patch's centroid, length, radius,
14330 ! smoothing patch identity and smoothing coefficient information
14331 x_centroid = patch_icpp(patch_id)%x_centroid
14332 y_centroid = patch_icpp(patch_id)%y_centroid
14333 z_centroid = patch_icpp(patch_id)%z_centroid
14334 length_x = patch_icpp(patch_id)%length_x
14335 length_y = patch_icpp(patch_id)%length_y
14336 length_z = patch_icpp(patch_id)%length_z
14337 radius = patch_icpp(patch_id)%radius
14338 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
14339 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
14340
14341 ! Computing the beginning and the end x-, y- and z-coordinates of
14342 ! the cylinder based on its centroid and lengths
14343 x_boundary%beg = x_centroid - 0.5_wp*length_x
14344 x_boundary%end = x_centroid + 0.5_wp*length_x
14345 y_boundary%beg = y_centroid - 0.5_wp*length_y
14346 y_boundary%end = y_centroid + 0.5_wp*length_y
14347 z_boundary%beg = z_centroid - 0.5_wp*length_z
14348 z_boundary%end = z_centroid + 0.5_wp*length_z
14349
14350 ! Initializing the pseudo volume fraction value to 1. The value will
14351 ! be modified as the patch is laid out on the grid, but only in the
14352 ! case that smearing of the cylindrical patch's boundary is enabled.
14353 eta = 1._wp
14354
14355 ! Checking whether the cylinder covers a particular cell in the
14356 ! domain and verifying whether the current patch has the permission
14357 ! to write to that cell. If both queries check out, the primitive
14358 ! variables of the current patch are assigned to this cell.
14359 do k = 0, p
14360 do j = 0, n
14361 do i = 0, m
14362
14363 if (grid_geometry == 3) then
14365 else
14366 cart_y = y_cc(j)
14367 cart_z = z_cc(k)
14368 end if
14369
14370 if (patch_icpp(patch_id)%smoothen) then
14371 if (.not. f_is_default(length_x)) then
14372 eta = tanh(smooth_coeff/min(dy, dz)* &
14373 (sqrt((cart_y - y_centroid)**2 &
14374 + (cart_z - z_centroid)**2) &
14375 - radius))*(-0.5_wp) + 0.5_wp
14376 elseif (.not. f_is_default(length_y)) then
14377 eta = tanh(smooth_coeff/min(dx, dz)* &
14378 (sqrt((x_cc(i) - x_centroid)**2 &
14379 + (cart_z - z_centroid)**2) &
14380 - radius))*(-0.5_wp) + 0.5_wp
14381 else
14382 eta = tanh(smooth_coeff/min(dx, dy)* &
14383 (sqrt((x_cc(i) - x_centroid)**2 &
14384 + (cart_y - y_centroid)**2) &
14385 - radius))*(-0.5_wp) + 0.5_wp
14386 end if
14387 end if
14388
14389 if (((.not. f_is_default(length_x) .and. &
14390 (cart_y - y_centroid)**2 &
14391 + (cart_z - z_centroid)**2 <= radius**2 .and. &
14392 x_boundary%beg <= x_cc(i) .and. &
14393 x_boundary%end >= x_cc(i)) &
14394 .or. &
14395 (.not. f_is_default(length_y) .and. &
14396 (x_cc(i) - x_centroid)**2 &
14397 + (cart_z - z_centroid)**2 <= radius**2 .and. &
14398 y_boundary%beg <= cart_y .and. &
14399 y_boundary%end >= cart_y) &
14400 .or. &
14401 (.not. f_is_default(length_z) .and. &
14402 (x_cc(i) - x_centroid)**2 &
14403 + (cart_y - y_centroid)**2 <= radius**2 .and. &
14404 z_boundary%beg <= cart_z .and. &
14405 z_boundary%end >= cart_z) .and. &
14406 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) .or. &
14407 patch_id_fp(i, j, k) == smooth_patch_id) then
14408
14409 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
14410 eta, q_prim_vf, patch_id_fp)
14411
14412
14413 if (patch_icpp(patch_id)%hcid /= dflt_int) then
14414
14415# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14416 select case (patch_icpp(patch_id)%hcid)
14417# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14418 case (300) ! Rayleigh-Taylor instability
14419# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14420 rhoh = 3._wp
14421# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14422 rhol = 1._wp
14423# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14424 pref = 1.e5_wp
14425# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14426 pint = pref
14427# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14428 h = 0.7_wp
14429# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14430 lam = 0.2_wp
14431# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14432 wl = 2._wp*pi/lam
14433# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14434 amp = 0.025_wp/wl
14435# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14436
14437# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14438 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
14439# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14440
14441# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14442 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
14443# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14444
14445# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14446 if (alph < eps) alph = eps
14447# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14448 if (alph > 1._wp - eps) alph = 1._wp - eps
14449# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14450
14451# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14452 if (y_cc(j) > inth) then
14453# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14454 q_prim_vf(advxb)%sf(i, j, k) = alph
14455# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14456 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
14457# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14458 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
14459# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14460 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
14461# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14462 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
14463# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14464 else
14465# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14466 q_prim_vf(advxb)%sf(i, j, k) = alph
14467# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14468 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
14469# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14470 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
14471# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14472 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
14473# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14474 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
14475# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14476 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
14477# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14478 end if
14479# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14480
14481# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14482 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
14483# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14484 h = 0.0_wp
14485# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14486 lam = 1.0_wp
14487# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14488 amp = patch_icpp(patch_id)%a(2)
14489# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14490 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
14491# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14492 if (x_cc(i) > inth) then
14493# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14494 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
14495# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14496 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
14497# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14498 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
14499# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14500 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
14501# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14502 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
14503# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14504 end if
14505# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14506
14507# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14508 case (302) ! 3D Jet with IGR
14509# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14510 ux_th = 10*sqrt(1.4*0.4)
14511# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14512 ux_am = 0.0*sqrt(1.4)
14513# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14514 p_th = 2.0_wp
14515# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14516 p_am = 1.0_wp
14517# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14518 rho_th = 1._wp
14519# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14520 rho_am = 1._wp
14521# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14522 y_th = 0.0_wp
14523# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14524 z_th = 0.0_wp
14525# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14526 r_th = 1._wp
14527# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14528 eps_smooth = 1._wp
14529# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14530 eps = 1e-6
14531# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14532
14533# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14534 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
14535# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14536 rcut = f_cut_on(r - r_th, eps_smooth)
14537# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14538 xcut = f_cut_on(x_cc(i), eps_smooth)
14539# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14540
14541# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14542 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
14543# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14544 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
14545# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14546 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
14547# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14548
14549# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14550 if (num_fluids == 1) then
14551# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14552 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
14553# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14554 else
14555# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14556 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
14557# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14558 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
14559# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14560 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
14561# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14562 end if
14563# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14564
14565# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14566 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
14567# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14568
14569# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14570 case (303) ! 3D Multijet
14571# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14572
14573# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14574 eps_smooth = 3.0_wp
14575# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14576 ux_th = 10*sqrt(1.4*0.4)
14577# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14578 ux_am = 2.5*sqrt(1.4*0.4)
14579# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14580 p_th = 0.8_wp
14581# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14582 p_am = 0.4_wp
14583# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14584 rho_th = 1._wp
14585# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14586 rho_am = 1._wp
14587# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14588 eps = 1e-6
14589# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14590
14591# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14592 rcut = rcut_arr(j, k)
14593# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14594 xcut = f_cut_on(x_cc(i), eps_smooth)
14595# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14596
14597# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14598 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
14599# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14600 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
14601# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14602 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
14603# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14604
14605# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14606 if (num_fluids == 1) then
14607# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14608 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
14609# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14610 else
14611# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14612 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
14613# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14614 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
14615# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14616 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
14617# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14618 end if
14619# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14620
14621# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14622 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
14623# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14624
14625# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14626 case (370)
14627# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14628 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
14629# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14630
14631# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14632 if (.not. files_loaded) then
14633# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14634 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
14635# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14636 do f = 1, max_files
14637# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14638 write (file_num_str, '(I0)') f
14639# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14640 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
14641# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14642 end do
14643# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14644
14645# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14646 ! Common file reading setup
14647# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14648 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
14649# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14650 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
14651# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14652
14653# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14654 select case (num_dims)
14655# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14656 case (1, 2) ! 1D and 2D cases are similar
14657# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14658 ! Count lines
14659# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14660 line_count = 0
14661# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14662 do
14663# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14664 read (unit2, *, iostat=ios2) dummy_x, dummy_y
14665# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14666 if (ios2 /= 0) exit
14667# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14668 line_count = line_count + 1
14669# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14670 end do
14671# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14672 close (unit2)
14673# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14674
14675# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14676 xrows = line_count
14677# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14678 yrows = 1
14679# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14680 index_x = 0
14681# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14682 if (num_dims == 2) index_x = i
14683# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14684#ifdef MFC_DEBUG
14685# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14686 block
14687# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14688 use iso_fortran_env, only: output_unit
14689# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14690
14691# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14692 print *, 'm_icpp_patches.fpp:1481: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
14693# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14694
14695# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14696 call flush (output_unit)
14697# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14698 end block
14699# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14700#endif
14701# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14702 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
14703# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14704
14705# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14706
14707# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14708
14709# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14710#if defined(MFC_OpenACC)
14711# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14712!$acc enter data create(x_coords, stored_values)
14713# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14714#elif defined(MFC_OpenMP)
14715# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14716!$omp target enter data map(always,alloc:x_coords, stored_values)
14717# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14718#endif
14719# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14720
14721# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14722 ! Read data from all files
14723# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14724 do f = 1, max_files
14725# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14726 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
14727# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14728 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
14729# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14730
14731# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14732 do iter = 1, xrows
14733# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14734 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
14735# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14736 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
14737# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14738 end do
14739# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14740 close (unit)
14741# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14742 end do
14743# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14744
14745# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14746 ! Calculate offsets
14747# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14748 domain_xstart = x_coords(1)
14749# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14750 x_step = x_cc(1) - x_cc(0)
14751# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14752 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
14753# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14754 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
14755# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14756 global_offset_x = nint(abs(delta_x)/x_step)
14757# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14758
14759# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14760 case (3) ! 3D case - determine grid structure
14761# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14762 ! Find yRows by counting rows with same x
14763# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14764 read (unit2, *, iostat=ios2) x0, y0, dummy_z
14765# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14766 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
14767# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14768
14769# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14770 yrows = 1
14771# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14772 do
14773# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14774 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
14775# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14776 if (ios2 /= 0) exit
14777# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14778 if (dummy_x == x0 .and. dummy_y /= y0) then
14779# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14780 yrows = yrows + 1
14781# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14782 else
14783# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14784 exit
14785# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14786 end if
14787# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14788 end do
14789# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14790 close (unit2)
14791# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14792
14793# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14794 ! Count total rows
14795# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14796 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
14797# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14798 nrows = 0
14799# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14800 do
14801# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14802 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
14803# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14804 if (ios2 /= 0) exit
14805# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14806 nrows = nrows + 1
14807# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14808 end do
14809# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14810 close (unit2)
14811# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14812
14813# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14814 xrows = nrows/yrows
14815# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14816#ifdef MFC_DEBUG
14817# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14818 block
14819# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14820 use iso_fortran_env, only: output_unit
14821# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14822
14823# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14824 print *, 'm_icpp_patches.fpp:1481: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
14825# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14826
14827# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14828 call flush (output_unit)
14829# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14830 end block
14831# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14832#endif
14833# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14834 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
14835# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14836
14837# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14838
14839# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14840
14841# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14842
14843# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14844#if defined(MFC_OpenACC)
14845# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14846!$acc enter data create(x_coords, y_coords, stored_values)
14847# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14848#elif defined(MFC_OpenMP)
14849# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14850!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
14851# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14852#endif
14853# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14854 index_x = i
14855# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14856 index_y = j
14857# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14858
14859# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14860 ! Read all files
14861# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14862 do f = 1, max_files
14863# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14864 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
14865# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14866 if (ios /= 0) then
14867# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14868 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
14869# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14870 cycle
14871# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14872 end if
14873# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14874
14875# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14876 iter = 0
14877# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14878 do iix = 1, xrows
14879# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14880 do iiy = 1, yrows
14881# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14882 iter = iter + 1
14883# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14884 if (f == 1) then
14885# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14886 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
14887# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14888 else
14889# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14890 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
14891# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14892 end if
14893# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14894 if (ios /= 0) call s_mpi_abort("Error reading data")
14895# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14896 end do
14897# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14898 end do
14899# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14900 close (unit)
14901# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14902 end do
14903# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14904
14905# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14906 ! Calculate offsets
14907# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14908 x_step = x_cc(1) - x_cc(0)
14909# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14910 y_step = y_cc(1) - y_cc(0)
14911# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14912 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
14913# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14914 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
14915# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14916 global_offset_x = nint(abs(delta_x)/x_step)
14917# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14918 global_offset_y = nint(abs(delta_y)/y_step)
14919# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14920 end select
14921# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14922
14923# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14924 files_loaded = .true.
14925# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14926 end if
14927# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14928
14929# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14930 ! Data assignment
14931# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14932 select case (num_dims)
14933# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14934 case (1)
14935# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14936 idx = i + 1 + global_offset_x
14937# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14938 do f = 1, sys_size
14939# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14940 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
14941# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14942 end do
14943# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14944
14945# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14946 case (2)
14947# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14948 idx = i + 1 + global_offset_x - index_x
14949# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14950 do f = 1, sys_size - 1
14951# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14952 jump = merge(1, 0, f >= momxe)
14953# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14954 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
14955# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14956 end do
14957# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14958 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
14959# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14960
14961# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14962 case (3)
14963# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14964 idx = i + 1 + global_offset_x - index_x
14965# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14966 idy = j + 1 + global_offset_y - index_y
14967# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14968 do f = 1, sys_size - 1
14969# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14970 jump = merge(1, 0, f >= momxe)
14971# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14972 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
14973# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14974 end do
14975# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14976 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
14977# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14978 end select
14979# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14980
14981# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14982 case (380)
14983# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14984 ! This is patch is hard-coded for test suite optimization used in the
14985# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14986 ! 3D_TaylorGreenVortex case:
14987# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14988 ! This analytic patch used geometry 9
14989# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14990 mach = 0.1
14991# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14992 if (patch_id == 1) then
14993# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14994 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
14995# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14996 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
14997# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
14998 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
14999# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15000 end if
15001# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15002
15003# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15004 case default
15005# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15006 call s_int_to_str(patch_id, istr)
15007# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15008 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
15009# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15010 end select
15011# 1481 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15012
15013 end if
15014
15015 ! Updating the patch identities bookkeeping variable
15016 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, k) = patch_id
15017 end if
15018 end do
15019 end do
15020 end do
15021 if (allocated(stored_values)) then
15022# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15023#ifdef MFC_DEBUG
15024# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15025 block
15026# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15027 use iso_fortran_env, only: output_unit
15028# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15029
15030# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15031 print *, 'm_icpp_patches.fpp:1490: ', '@:DEALLOCATE(stored_values)'
15032# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15033
15034# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15035 call flush (output_unit)
15036# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15037 end block
15038# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15039#endif
15040# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15041
15042# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15043#if defined(MFC_OpenACC)
15044# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15045!$acc exit data delete(stored_values)
15046# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15047#elif defined(MFC_OpenMP)
15048# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15049!$omp target exit data map(release:stored_values)
15050# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15051#endif
15052# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15053 deallocate (stored_values)
15054# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15055#ifdef MFC_DEBUG
15056# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15057 block
15058# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15059 use iso_fortran_env, only: output_unit
15060# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15061
15062# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15063 print *, 'm_icpp_patches.fpp:1490: ', '@:DEALLOCATE(x_coords)'
15064# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15065
15066# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15067 call flush (output_unit)
15068# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15069 end block
15070# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15071#endif
15072# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15073
15074# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15075#if defined(MFC_OpenACC)
15076# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15077!$acc exit data delete(x_coords)
15078# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15079#elif defined(MFC_OpenMP)
15080# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15081!$omp target exit data map(release:x_coords)
15082# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15083#endif
15084# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15085 deallocate (x_coords)
15086# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15087 end if
15088# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15089
15090# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15091 if (allocated(y_coords)) then
15092# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15093#ifdef MFC_DEBUG
15094# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15095 block
15096# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15097 use iso_fortran_env, only: output_unit
15098# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15099
15100# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15101 print *, 'm_icpp_patches.fpp:1490: ', '@:DEALLOCATE(y_coords)'
15102# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15103
15104# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15105 call flush (output_unit)
15106# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15107 end block
15108# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15109#endif
15110# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15111
15112# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15113#if defined(MFC_OpenACC)
15114# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15115!$acc exit data delete(y_coords)
15116# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15117#elif defined(MFC_OpenMP)
15118# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15119!$omp target exit data map(release:y_coords)
15120# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15121#endif
15122# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15123 deallocate (y_coords)
15124# 1490 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15125 end if
15126
15127 end subroutine s_icpp_cylinder
15128
15129 !> The swept plane patch is a 3D geometry that may be used,
15130 !! for example, in creating a solid boundary, or pre-/post-
15131 !! shock region, at an angle with respect to the axes of the
15132 !! Cartesian coordinate system. The geometry of the patch is
15133 !! well-defined when its centroid and normal vector, aimed
15134 !! in the sweep direction, are provided. Note that the sweep
15135 !! plane patch DOES allow the smoothing of its boundary.
15136 !! @param patch_id is the patch identifier
15137 !! @param patch_id_fp Array to track patch ids
15138 !! @param q_prim_vf Primitive variables
15139 subroutine s_icpp_sweep_plane(patch_id, patch_id_fp, q_prim_vf)
15140
15141 integer, intent(in) :: patch_id
15142#ifdef MFC_MIXED_PRECISION
15143 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
15144#else
15145 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
15146#endif
15147 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
15148
15149 integer :: i, j, k !< Generic loop iterators
15150 real(wp) :: a, b, c, d
15151 integer :: xRows, yRows, nRows, iix, iiy, max_files
15152# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15153 integer :: f, iter, ios, ios2, unit, unit2, idx, idy, index_x, index_y, jump, line_count, ycount
15154# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15155 real(wp) :: x_len, x_step, y_len, y_step
15156# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15157 real(wp) :: dummy_x, dummy_y, dummy_z, x0, y0
15158# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15159 integer :: global_offset_x, global_offset_y ! MPI subdomain offset
15160# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15161 real(wp) :: delta_x, delta_y
15162# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15163 character(len=100), dimension(sys_size) :: fileNames ! Arrays to store all data from files
15164# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15165 character(len=200) :: errmsg
15166# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15167 real(wp), allocatable :: stored_values(:, :, :)
15168# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15169 real(wp), allocatable :: x_coords(:), y_coords(:)
15170# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15171 logical :: files_loaded = .false.
15172# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15173 real(wp) :: domain_xstart, domain_xend, domain_ystart, domain_yend
15174# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15175 character(len=*), parameter :: init_dir = "/home/MFC/FilesDirectory" ! For example /home/MFC/examples/1D_Shock/D/
15176# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15177 character(len=20) :: file_num_str ! For storing the file number as a string
15178# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15179 character(len=20) :: zeros_part ! For the trailing zeros part
15180# 1516 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15181 character(len=6), parameter :: zeros_default = "000000" ! Default zeros (can be changed)
15182 ! Place any declaration of intermediate variables here
15183# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15184 real(wp) :: rhoH, rhoL, pRef, pInt, h, lam, wl, amp, intH, alph, Mach
15185# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15186 real(wp) :: eps
15187# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15188
15189# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15190 ! IGR Jets
15191# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15192 ! Arrays to stor position and radii of jets from input file
15193# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15194 real(wp), dimension(:), allocatable :: y_th_arr, z_th_arr, r_th_arr
15195# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15196 ! Variables to describe initial condition of jet
15197# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15198 real(wp) :: r, ux_th, ux_am, p_th, p_am, rho_th, rho_am, y_th, z_th, r_th, eps_smooth
15199# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15200 real(wp) :: rcut, xcut ! Intermediate variables for creating smooth initial condition
15201# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15202
15203# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15204 real(wp), dimension(0:n, 0:p) :: rcut_arr
15205# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15206 integer :: l, q, s ! Iterators for reading input files
15207# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15208 integer :: start, end ! Ints to keep track of position in file
15209# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15210 character(len=1000) :: line ! String to store line in ile
15211# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15212 character(len=25) :: value ! String to store value in line
15213# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15214 integer :: NJet ! Number of jets
15215# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15216
15217# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15218 eps = 1e-9_wp
15219# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15220
15221# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15222 if (patch_icpp(patch_id)%hcid == 303) then
15223# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15224 eps_smooth = 3._wp
15225# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15226 open (unit=10, file="njet.txt", status="old", action="read")
15227# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15228 read (10, *) njet
15229# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15230 close (10)
15231# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15232
15233# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15234 allocate (y_th_arr(0:njet - 1))
15235# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15236 allocate (z_th_arr(0:njet - 1))
15237# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15238 allocate (r_th_arr(0:njet - 1))
15239# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15240
15241# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15242 open (unit=10, file="jets.csv", status="old", action="read")
15243# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15244 do q = 0, njet - 1
15245# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15246 read (10, '(A)') line ! Read a full line as a string
15247# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15248 start = 1
15249# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15250
15251# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15252 do l = 0, 2
15253# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15254 end = index(line(start:), ',') ! Find the next comma
15255# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15256 if (end == 0) then
15257# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15258 value = trim(adjustl(line(start:))) ! Last value in the line
15259# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15260 else
15261# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15262 value = trim(adjustl(line(start:start + end - 2))) ! Extract substring
15263# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15264 start = start + end ! Move to next value
15265# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15266 end if
15267# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15268 if (l == 0) then
15269# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15270 read (value, *) y_th_arr(q) ! Convert string to numeric value
15271# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15272 elseif (l == 1) then
15273# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15274 read (value, *) z_th_arr(q)
15275# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15276 else
15277# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15278 read (value, *) r_th_arr(q)
15279# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15280 end if
15281# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15282 end do
15283# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15284 end do
15285# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15286 close (10)
15287# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15288
15289# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15290 do q = 0, p
15291# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15292 do l = 0, n
15293# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15294 rcut = 0._wp
15295# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15296 do s = 0, njet - 1
15297# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15298 r = sqrt((y_cc(l) - y_th_arr(s))**2._wp + (z_cc(q) - z_th_arr(s))**2._wp)
15299# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15300 rcut = rcut + f_cut_on(r - r_th_arr(s), eps_smooth)
15301# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15302 end do
15303# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15304 rcut_arr(l, q) = rcut
15305# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15306 end do
15307# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15308 end do
15309# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15310 end if
15311# 1517 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15312
15313
15314 ! Transferring the centroid information of the plane to be swept
15315 x_centroid = patch_icpp(patch_id)%x_centroid
15316 y_centroid = patch_icpp(patch_id)%y_centroid
15317 z_centroid = patch_icpp(patch_id)%z_centroid
15318 smooth_patch_id = patch_icpp(patch_id)%smooth_patch_id
15319 smooth_coeff = patch_icpp(patch_id)%smooth_coeff
15320
15321 ! Obtaining coefficients of the equation describing the sweep plane
15322 a = patch_icpp(patch_id)%normal(1)
15323 b = patch_icpp(patch_id)%normal(2)
15324 c = patch_icpp(patch_id)%normal(3)
15325 d = -a*x_centroid - b*y_centroid - c*z_centroid
15326
15327 ! Initializing the pseudo volume fraction value to 1. The value will
15328 ! be modified as the patch is laid out on the grid, but only in the
15329 ! case that smearing of the sweep plane patch's boundary is enabled.
15330 eta = 1._wp
15331
15332 ! Checking whether the region swept by the plane covers a particular
15333 ! cell in the domain and verifying whether the current patch has the
15334 ! permission to write to that cell. If both queries check out, the
15335 ! primitive variables of the current patch are written to this cell.
15336 do k = 0, p
15337 do j = 0, n
15338 do i = 0, m
15339
15340 if (grid_geometry == 3) then
15342 else
15343 cart_y = y_cc(j)
15344 cart_z = z_cc(k)
15345 end if
15346
15347 if (patch_icpp(patch_id)%smoothen) then
15348 eta = 5.e-1_wp + 5.e-1_wp*tanh(smooth_coeff/min(dx, dy, dz) &
15349 *(a*x_cc(i) + &
15350 b*cart_y + &
15351 c*cart_z + d) &
15352 /sqrt(a**2 + b**2 + c**2))
15353 end if
15354
15355 if ((a*x_cc(i) + b*cart_y + c*cart_z + d >= 0._wp &
15356 .and. &
15357 patch_icpp(patch_id)%alter_patch(patch_id_fp(i, j, k))) &
15358 .or. &
15359 patch_id_fp(i, j, k) == smooth_patch_id) &
15360 then
15361
15362 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
15363 eta, q_prim_vf, patch_id_fp)
15364
15365
15366 if (patch_icpp(patch_id)%hcid /= dflt_int) then
15367
15368# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15369 select case (patch_icpp(patch_id)%hcid)
15370# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15371 case (300) ! Rayleigh-Taylor instability
15372# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15373 rhoh = 3._wp
15374# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15375 rhol = 1._wp
15376# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15377 pref = 1.e5_wp
15378# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15379 pint = pref
15380# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15381 h = 0.7_wp
15382# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15383 lam = 0.2_wp
15384# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15385 wl = 2._wp*pi/lam
15386# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15387 amp = 0.025_wp/wl
15388# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15389
15390# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15391 inth = amp*(sin(2._wp*pi*x_cc(i)/lam - pi/2._wp) + sin(2._wp*pi*z_cc(k)/lam - pi/2._wp)) + h
15392# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15393
15394# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15395 alph = 5.e-1_wp*(1._wp + tanh((y_cc(j) - inth)/2.5e-3_wp))
15396# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15397
15398# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15399 if (alph < eps) alph = eps
15400# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15401 if (alph > 1._wp - eps) alph = 1._wp - eps
15402# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15403
15404# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15405 if (y_cc(j) > inth) then
15406# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15407 q_prim_vf(advxb)%sf(i, j, k) = alph
15408# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15409 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
15410# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15411 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
15412# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15413 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
15414# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15415 q_prim_vf(e_idx)%sf(i, j, k) = pref + rhoh*9.81_wp*(1.2_wp - y_cc(j))
15416# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15417 else
15418# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15419 q_prim_vf(advxb)%sf(i, j, k) = alph
15420# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15421 q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
15422# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15423 q_prim_vf(contxb)%sf(i, j, k) = alph*rhoh
15424# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15425 q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhol
15426# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15427 pint = pref + rhoh*9.81_wp*(1.2_wp - inth)
15428# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15429 q_prim_vf(e_idx)%sf(i, j, k) = pint + rhol*9.81_wp*(inth - y_cc(j))
15430# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15431 end if
15432# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15433
15434# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15435 case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
15436# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15437 h = 0.0_wp
15438# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15439 lam = 1.0_wp
15440# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15441 amp = patch_icpp(patch_id)%a(2)
15442# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15443 inth = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
15444# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15445 if (x_cc(i) > inth) then
15446# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15447 q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
15448# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15449 q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
15450# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15451 q_prim_vf(e_idx)%sf(i, j, k) = patch_icpp(1)%pres
15452# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15453 q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
15454# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15455 q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
15456# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15457 end if
15458# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15459
15460# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15461 case (302) ! 3D Jet with IGR
15462# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15463 ux_th = 10*sqrt(1.4*0.4)
15464# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15465 ux_am = 0.0*sqrt(1.4)
15466# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15467 p_th = 2.0_wp
15468# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15469 p_am = 1.0_wp
15470# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15471 rho_th = 1._wp
15472# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15473 rho_am = 1._wp
15474# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15475 y_th = 0.0_wp
15476# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15477 z_th = 0.0_wp
15478# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15479 r_th = 1._wp
15480# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15481 eps_smooth = 1._wp
15482# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15483 eps = 1e-6
15484# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15485
15486# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15487 r = sqrt((y_cc(j) - y_th)**2._wp + (z_cc(k) - z_th)**2._wp)
15488# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15489 rcut = f_cut_on(r - r_th, eps_smooth)
15490# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15491 xcut = f_cut_on(x_cc(i), eps_smooth)
15492# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15493
15494# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15495 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
15496# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15497 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
15498# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15499 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
15500# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15501
15502# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15503 if (num_fluids == 1) then
15504# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15505 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
15506# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15507 else
15508# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15509 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
15510# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15511 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
15512# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15513 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
15514# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15515 end if
15516# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15517
15518# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15519 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
15520# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15521
15522# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15523 case (303) ! 3D Multijet
15524# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15525
15526# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15527 eps_smooth = 3.0_wp
15528# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15529 ux_th = 10*sqrt(1.4*0.4)
15530# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15531 ux_am = 2.5*sqrt(1.4*0.4)
15532# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15533 p_th = 0.8_wp
15534# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15535 p_am = 0.4_wp
15536# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15537 rho_th = 1._wp
15538# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15539 rho_am = 1._wp
15540# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15541 eps = 1e-6
15542# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15543
15544# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15545 rcut = rcut_arr(j, k)
15546# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15547 xcut = f_cut_on(x_cc(i), eps_smooth)
15548# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15549
15550# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15551 q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
15552# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15553 q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
15554# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15555 q_prim_vf(momxe)%sf(i, j, k) = 0._wp
15556# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15557
15558# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15559 if (num_fluids == 1) then
15560# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15561 q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
15562# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15563 else
15564# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15565 q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
15566# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15567 q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
15568# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15569 q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
15570# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15571 end if
15572# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15573
15574# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15575 q_prim_vf(e_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
15576# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15577
15578# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15579 case (370)
15580# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15581 ! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
15582# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15583
15584# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15585 if (.not. files_loaded) then
15586# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15587 max_files = merge(sys_size, sys_size - 1, num_dims == 1)
15588# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15589 do f = 1, max_files
15590# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15591 write (file_num_str, '(I0)') f
15592# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15593 filenames(f) = trim(init_dir)//"prim."//trim(file_num_str)//".00."//zeros_default//".dat"
15594# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15595 end do
15596# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15597
15598# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15599 ! Common file reading setup
15600# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15601 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
15602# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15603 if (ios2 /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(1)))
15604# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15605
15606# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15607 select case (num_dims)
15608# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15609 case (1, 2) ! 1D and 2D cases are similar
15610# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15611 ! Count lines
15612# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15613 line_count = 0
15614# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15615 do
15616# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15617 read (unit2, *, iostat=ios2) dummy_x, dummy_y
15618# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15619 if (ios2 /= 0) exit
15620# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15621 line_count = line_count + 1
15622# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15623 end do
15624# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15625 close (unit2)
15626# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15627
15628# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15629 xrows = line_count
15630# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15631 yrows = 1
15632# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15633 index_x = 0
15634# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15635 if (num_dims == 2) index_x = i
15636# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15637#ifdef MFC_DEBUG
15638# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15639 block
15640# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15641 use iso_fortran_env, only: output_unit
15642# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15643
15644# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15645 print *, 'm_icpp_patches.fpp:1572: ', '@:ALLOCATE(x_coords(xRows), stored_values(xRows, 1, sys_size))'
15646# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15647
15648# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15649 call flush (output_unit)
15650# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15651 end block
15652# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15653#endif
15654# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15655 allocate (x_coords(xrows), stored_values(xrows, 1, sys_size))
15656# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15657
15658# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15659
15660# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15661
15662# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15663#if defined(MFC_OpenACC)
15664# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15665!$acc enter data create(x_coords, stored_values)
15666# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15667#elif defined(MFC_OpenMP)
15668# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15669!$omp target enter data map(always,alloc:x_coords, stored_values)
15670# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15671#endif
15672# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15673
15674# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15675 ! Read data from all files
15676# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15677 do f = 1, max_files
15678# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15679 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
15680# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15681 if (ios /= 0) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
15682# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15683
15684# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15685 do iter = 1, xrows
15686# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15687 read (unit, *, iostat=ios) x_coords(iter), stored_values(iter, 1, f)
15688# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15689 if (ios /= 0) call s_mpi_abort("Error reading file: "//trim(filenames(f)))
15690# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15691 end do
15692# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15693 close (unit)
15694# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15695 end do
15696# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15697
15698# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15699 ! Calculate offsets
15700# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15701 domain_xstart = x_coords(1)
15702# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15703 x_step = x_cc(1) - x_cc(0)
15704# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15705 delta_x = merge(x_cc(0) - domain_xstart + x_step/2.0, &
15706# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15707 x_cc(index_x) - domain_xstart + x_step/2.0, num_dims == 1)
15708# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15709 global_offset_x = nint(abs(delta_x)/x_step)
15710# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15711
15712# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15713 case (3) ! 3D case - determine grid structure
15714# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15715 ! Find yRows by counting rows with same x
15716# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15717 read (unit2, *, iostat=ios2) x0, y0, dummy_z
15718# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15719 if (ios2 /= 0) call s_mpi_abort("Error reading first line")
15720# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15721
15722# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15723 yrows = 1
15724# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15725 do
15726# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15727 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
15728# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15729 if (ios2 /= 0) exit
15730# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15731 if (dummy_x == x0 .and. dummy_y /= y0) then
15732# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15733 yrows = yrows + 1
15734# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15735 else
15736# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15737 exit
15738# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15739 end if
15740# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15741 end do
15742# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15743 close (unit2)
15744# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15745
15746# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15747 ! Count total rows
15748# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15749 open (newunit=unit2, file=trim(filenames(1)), status='old', action='read', iostat=ios2)
15750# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15751 nrows = 0
15752# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15753 do
15754# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15755 read (unit2, *, iostat=ios2) dummy_x, dummy_y, dummy_z
15756# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15757 if (ios2 /= 0) exit
15758# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15759 nrows = nrows + 1
15760# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15761 end do
15762# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15763 close (unit2)
15764# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15765
15766# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15767 xrows = nrows/yrows
15768# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15769#ifdef MFC_DEBUG
15770# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15771 block
15772# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15773 use iso_fortran_env, only: output_unit
15774# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15775
15776# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15777 print *, 'm_icpp_patches.fpp:1572: ', '@:ALLOCATE(x_coords(nrows), y_coords(nrows), stored_values(xRows, yRows, sys_size))'
15778# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15779
15780# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15781 call flush (output_unit)
15782# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15783 end block
15784# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15785#endif
15786# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15787 allocate (x_coords(nrows), y_coords(nrows), stored_values(xrows, yrows, sys_size))
15788# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15789
15790# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15791
15792# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15793
15794# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15795
15796# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15797#if defined(MFC_OpenACC)
15798# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15799!$acc enter data create(x_coords, y_coords, stored_values)
15800# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15801#elif defined(MFC_OpenMP)
15802# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15803!$omp target enter data map(always,alloc:x_coords, y_coords, stored_values)
15804# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15805#endif
15806# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15807 index_x = i
15808# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15809 index_y = j
15810# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15811
15812# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15813 ! Read all files
15814# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15815 do f = 1, max_files
15816# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15817 open (newunit=unit, file=trim(filenames(f)), status='old', action='read', iostat=ios)
15818# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15819 if (ios /= 0) then
15820# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15821 if (f == 1) call s_mpi_abort("Error opening file: "//trim(filenames(f)))
15822# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15823 cycle
15824# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15825 end if
15826# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15827
15828# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15829 iter = 0
15830# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15831 do iix = 1, xrows
15832# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15833 do iiy = 1, yrows
15834# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15835 iter = iter + 1
15836# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15837 if (f == 1) then
15838# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15839 read (unit, *, iostat=ios) x_coords(iter), y_coords(iter), stored_values(iix, iiy, f)
15840# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15841 else
15842# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15843 read (unit, *, iostat=ios) dummy_x, dummy_y, stored_values(iix, iiy, f)
15844# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15845 end if
15846# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15847 if (ios /= 0) call s_mpi_abort("Error reading data")
15848# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15849 end do
15850# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15851 end do
15852# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15853 close (unit)
15854# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15855 end do
15856# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15857
15858# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15859 ! Calculate offsets
15860# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15861 x_step = x_cc(1) - x_cc(0)
15862# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15863 y_step = y_cc(1) - y_cc(0)
15864# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15865 delta_x = x_cc(index_x) - x_coords(1) + x_step/2.0_wp
15866# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15867 delta_y = y_cc(index_y) - y_coords(1) + y_step/2.0_wp
15868# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15869 global_offset_x = nint(abs(delta_x)/x_step)
15870# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15871 global_offset_y = nint(abs(delta_y)/y_step)
15872# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15873 end select
15874# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15875
15876# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15877 files_loaded = .true.
15878# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15879 end if
15880# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15881
15882# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15883 ! Data assignment
15884# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15885 select case (num_dims)
15886# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15887 case (1)
15888# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15889 idx = i + 1 + global_offset_x
15890# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15891 do f = 1, sys_size
15892# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15893 q_prim_vf(f)%sf(i, 0, 0) = stored_values(idx, 1, f)
15894# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15895 end do
15896# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15897
15898# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15899 case (2)
15900# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15901 idx = i + 1 + global_offset_x - index_x
15902# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15903 do f = 1, sys_size - 1
15904# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15905 jump = merge(1, 0, f >= momxe)
15906# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15907 q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
15908# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15909 end do
15910# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15911 q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
15912# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15913
15914# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15915 case (3)
15916# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15917 idx = i + 1 + global_offset_x - index_x
15918# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15919 idy = j + 1 + global_offset_y - index_y
15920# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15921 do f = 1, sys_size - 1
15922# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15923 jump = merge(1, 0, f >= momxe)
15924# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15925 q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
15926# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15927 end do
15928# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15929 q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
15930# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15931 end select
15932# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15933
15934# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15935 case (380)
15936# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15937 ! This is patch is hard-coded for test suite optimization used in the
15938# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15939 ! 3D_TaylorGreenVortex case:
15940# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15941 ! This analytic patch used geometry 9
15942# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15943 mach = 0.1
15944# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15945 if (patch_id == 1) then
15946# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15947 q_prim_vf(e_idx)%sf(i, j, k) = 101325 + (mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
15948# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15949 q_prim_vf(momxb + 0)%sf(i, j, k) = mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
15950# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15951 q_prim_vf(momxb + 1)%sf(i, j, k) = -mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
15952# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15953 end if
15954# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15955
15956# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15957 case default
15958# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15959 call s_int_to_str(patch_id, istr)
15960# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15961 call s_mpi_abort("Invalid hcid specified for patch "//trim(istr))
15962# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15963 end select
15964# 1572 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15965
15966 end if
15967
15968 ! Updating the patch identities bookkeeping variable
15969 if (1._wp - eta < sgm_eps) patch_id_fp(i, j, k) = patch_id
15970 end if
15971
15972 end do
15973 end do
15974 end do
15975 if (allocated(stored_values)) then
15976# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15977#ifdef MFC_DEBUG
15978# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15979 block
15980# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15981 use iso_fortran_env, only: output_unit
15982# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15983
15984# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15985 print *, 'm_icpp_patches.fpp:1582: ', '@:DEALLOCATE(stored_values)'
15986# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15987
15988# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15989 call flush (output_unit)
15990# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15991 end block
15992# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15993#endif
15994# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15995
15996# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15997#if defined(MFC_OpenACC)
15998# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
15999!$acc exit data delete(stored_values)
16000# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16001#elif defined(MFC_OpenMP)
16002# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16003!$omp target exit data map(release:stored_values)
16004# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16005#endif
16006# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16007 deallocate (stored_values)
16008# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16009#ifdef MFC_DEBUG
16010# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16011 block
16012# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16013 use iso_fortran_env, only: output_unit
16014# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16015
16016# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16017 print *, 'm_icpp_patches.fpp:1582: ', '@:DEALLOCATE(x_coords)'
16018# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16019
16020# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16021 call flush (output_unit)
16022# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16023 end block
16024# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16025#endif
16026# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16027
16028# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16029#if defined(MFC_OpenACC)
16030# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16031!$acc exit data delete(x_coords)
16032# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16033#elif defined(MFC_OpenMP)
16034# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16035!$omp target exit data map(release:x_coords)
16036# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16037#endif
16038# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16039 deallocate (x_coords)
16040# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16041 end if
16042# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16043
16044# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16045 if (allocated(y_coords)) then
16046# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16047#ifdef MFC_DEBUG
16048# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16049 block
16050# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16051 use iso_fortran_env, only: output_unit
16052# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16053
16054# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16055 print *, 'm_icpp_patches.fpp:1582: ', '@:DEALLOCATE(y_coords)'
16056# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16057
16058# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16059 call flush (output_unit)
16060# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16061 end block
16062# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16063#endif
16064# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16065
16066# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16067#if defined(MFC_OpenACC)
16068# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16069!$acc exit data delete(y_coords)
16070# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16071#elif defined(MFC_OpenMP)
16072# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16073!$omp target exit data map(release:y_coords)
16074# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16075#endif
16076# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16077 deallocate (y_coords)
16078# 1582 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16079 end if
16080
16081 end subroutine s_icpp_sweep_plane
16082
16083 !> The STL patch is a 2/3D geometry that is imported from an STL file.
16084 !! @param patch_id is the patch identifier
16085 !! @param patch_id_fp Array to track patch ids
16086 !! @param q_prim_vf Primitive variables
16087 subroutine s_icpp_model(patch_id, patch_id_fp, q_prim_vf)
16088
16089 integer, intent(in) :: patch_id
16090#ifdef MFC_MIXED_PRECISION
16091 integer(kind=1), dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
16092#else
16093 integer, dimension(0:m, 0:n, 0:p), intent(inout) :: patch_id_fp
16094#endif
16095 type(scalar_field), dimension(1:sys_size), intent(inout) :: q_prim_vf
16096
16097 ! Variables for IBM+STL
16098 real(wp) :: normals(1:3) !< Boundary normal buffer
16099 integer :: boundary_vertex_count, boundary_edge_count, total_vertices !< Boundary vertex
16100 real(wp), allocatable, dimension(:, :, :) :: boundary_v !< Boundary vertex buffer
16101 real(wp) :: distance !< Levelset distance buffer
16102 logical :: interpolate !< Logical variable to determine whether or not the model should be interpolated
16103
16104 integer :: i, j, k !< Generic loop iterators
16105
16106 type(t_bbox) :: bbox, bbox_old
16107 type(t_model) :: model
16108 type(ic_model_parameters) :: params
16109
16110 real(wp), dimension(1:3) :: point, model_center
16111
16112 real(wp) :: grid_mm(1:3, 1:2)
16113
16114 integer :: cell_num
16115 integer :: ncells
16116
16117 real(wp), dimension(1:4, 1:4) :: transform, transform_n
16118
16119 if (proc_rank == 0) then
16120 print *, " * Reading model: "//trim(patch_icpp(patch_id)%model_filepath)
16121 end if
16122
16123 model = f_model_read(patch_icpp(patch_id)%model_filepath)
16124 params%scale(:) = patch_icpp(patch_id)%model_scale(:)
16125 params%translate(:) = patch_icpp(patch_id)%model_translate(:)
16126 params%rotate(:) = patch_icpp(patch_id)%model_rotate(:)
16127 params%spc = patch_icpp(patch_id)%model_spc
16128 params%threshold = patch_icpp(patch_id)%model_threshold
16129
16130 if (proc_rank == 0) then
16131 print *, " * Transforming model."
16132 end if
16133
16134 ! Get the model center before transforming the model
16135 bbox_old = f_create_bbox(model)
16136 model_center(1:3) = (bbox_old%min(1:3) + bbox_old%max(1:3))/2._wp
16137
16138 ! Compute the transform matrices for vertices and normals
16139 transform = f_create_transform_matrix(params, model_center)
16140 transform_n = f_create_transform_matrix(params)
16141
16142 call s_transform_model(model, transform, transform_n)
16143
16144 ! Recreate the bounding box after transformation
16145 bbox = f_create_bbox(model)
16146
16147 ! Show the number of vertices in the original STL model
16148 if (proc_rank == 0) then
16149 print *, ' * Number of input model vertices:', 3*model%ntrs
16150 end if
16151
16152 call s_check_boundary(model, boundary_v, boundary_vertex_count, boundary_edge_count)
16153
16154 ! Show the number of edges and boundary edges in 2D STL models
16155 if (proc_rank == 0 .and. p == 0) then
16156 print *, ' * Number of 2D model boundary edges:', boundary_edge_count
16157 end if
16158
16159 if (proc_rank == 0) then
16160 write (*, "(A, 3(2X, F20.10))") " > Model: Min:", bbox%min(1:3)
16161 write (*, "(A, 3(2X, F20.10))") " > Cen:", (bbox%min(1:3) + bbox%max(1:3))/2._wp
16162 write (*, "(A, 3(2X, F20.10))") " > Max:", bbox%max(1:3)
16163
16164 !call s_model_write("__out__.stl", model)
16165 !call s_model_write("__out__.obj", model)
16166
16167 grid_mm(1, :) = (/minval(x_cc) - 0.e5_wp*dx, maxval(x_cc) + 0.e5_wp*dx/)
16168 grid_mm(2, :) = (/minval(y_cc) - 0.e5_wp*dy, maxval(y_cc) + 0.e5_wp*dy/)
16169
16170 if (p > 0) then
16171 grid_mm(3, :) = (/minval(z_cc) - 0.e5_wp*dz, maxval(z_cc) + 0.e5_wp*dz/)
16172 else
16173 grid_mm(3, :) = (/0._wp, 0._wp/)
16174 end if
16175
16176 write (*, "(A, 3(2X, F20.10))") " > Domain: Min:", grid_mm(:, 1)
16177 write (*, "(A, 3(2X, F20.10))") " > Cen:", (grid_mm(:, 1) + grid_mm(:, 2))/2._wp
16178 write (*, "(A, 3(2X, F20.10))") " > Max:", grid_mm(:, 2)
16179 end if
16180
16181 ncells = (m + 1)*(n + 1)*(p + 1)
16182 do i = 0, m; do j = 0, n; do k = 0, p
16183
16184 cell_num = i*(n + 1)*(p + 1) + j*(p + 1) + (k + 1)
16185 if (proc_rank == 0 .and. mod(cell_num, ncells/100) == 0) then
16186 write (*, "(A, I3, A)", advance="no") &
16187 char(13)//" * Generating grid: ", &
16188 nint(100*real(cell_num)/ncells), "%"
16189 end if
16190
16191 point = (/x_cc(i), y_cc(j), 0._wp/)
16192 if (p > 0) then
16193 point(3) = z_cc(k)
16194 end if
16195
16196 if (grid_geometry == 3) then
16197 point = f_convert_cyl_to_cart(point)
16198 end if
16199
16200 eta = f_model_is_inside(model, point, (/dx, dy, dz/), patch_icpp(patch_id)%model_spc)
16201
16202 if (eta > patch_icpp(patch_id)%model_threshold) then
16203 eta = 1._wp
16204 else if (.not. patch_icpp(patch_id)%smoothen) then
16205 eta = 0._wp
16206 end if
16207
16208 call s_assign_patch_primitive_variables(patch_id, i, j, k, &
16209 eta, q_prim_vf, patch_id_fp)
16210
16211 ! Note: Should probably use *eta* to compute primitive variables
16212 ! if defining them analytically.
16213
16214 end do; end do; end do
16215
16216 if (proc_rank == 0) then
16217 print *, ""
16218 print *, " * Cleaning up."
16219 end if
16220
16221 call s_model_free(model)
16222
16223 end subroutine s_icpp_model
16224
16225 !> @brief Converts cylindrical (r, theta) coordinates to Cartesian (y, z) module variables.
16227
16228# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16229#if MFC_OpenACC
16230# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16231!$acc routine seq
16232# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16233#elif MFC_OpenMP
16234# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16235
16236# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16237
16238# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16239!$omp declare target device_type(any)
16240# 1730 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16241#endif
16242
16243 real(wp), intent(in) :: cyl_y, cyl_z
16244
16245 cart_y = cyl_y*sin(cyl_z)
16246 cart_z = cyl_y*cos(cyl_z)
16247
16249
16250 !> @brief Returns a 3D Cartesian coordinate vector from a cylindrical (x, r, theta) input vector.
16251 function f_convert_cyl_to_cart(cyl) result(cart)
16252
16253
16254# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16255#if MFC_OpenACC
16256# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16257!$acc routine seq
16258# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16259#elif MFC_OpenMP
16260# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16261
16262# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16263
16264# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16265!$omp declare target device_type(any)
16266# 1742 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16267#endif
16268
16269 real(wp), dimension(1:3), intent(in) :: cyl
16270 real(wp), dimension(1:3) :: cart
16271
16272 cart = (/cyl(1), &
16273 cyl(2)*sin(cyl(3)), &
16274 cyl(2)*cos(cyl(3))/)
16275
16276 end function f_convert_cyl_to_cart
16277
16278 !> @brief Computes the spherical azimuthal angle from cylindrical (x, r) coordinates.
16280
16281# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16282#if MFC_OpenACC
16283# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16284!$acc routine seq
16285# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16286#elif MFC_OpenMP
16287# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16288
16289# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16290
16291# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16292!$omp declare target device_type(any)
16293# 1755 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16294#endif
16295
16296 real(wp), intent(IN) :: cyl_x, cyl_y
16297
16298 sph_phi = atan(cyl_y/cyl_x)
16299
16301
16302 !> Archimedes spiral function
16303 !! @param myth Angle
16304 !! @param offset Thickness
16305 !! @param a Starting position
16306 elemental function f_r(myth, offset, a)
16307
16308
16309# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16310#if MFC_OpenACC
16311# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16312!$acc routine seq
16313# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16314#elif MFC_OpenMP
16315# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16316
16317# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16318
16319# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16320!$omp declare target device_type(any)
16321# 1769 "/home/runner/work/MFC/MFC/src/pre_process/m_icpp_patches.fpp"
16322#endif
16323 real(wp), intent(in) :: myth, offset, a
16324 real(wp) :: b
16325 real(wp) :: f_r
16326
16327 !r(th) = a + b*th
16328
16329 b = 2._wp*a/(2._wp*pi)
16330 f_r = a + b*myth + offset
16331 end function f_r
16332
16333end module m_icpp_patches
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
Assigns initial primitive variables to computational cells based on patch geometry.
procedure(s_assign_patch_xxxxx_primitive_variables), pointer, public s_assign_patch_primitive_variables
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
integer proc_rank
Rank of the local processor.
integer sys_size
Number of unknowns in the system of equations.
integer num_patches
Number of patches composing initial condition.
type(int_bounds_info) b_idx
Indexes of first and last magnetic field eqns.
integer num_dims
Number of spatial dimensions.
real(wp), dimension(:), allocatable x_cc
type(ic_patch_parameters), dimension(num_patches_max) patch_icpp
Database of the initial condition patch parameters (icpp) for each of the patches employed in the con...
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Allocate memory and read initial condition data for IC extrusion.
subroutine s_icpp_ellipse(patch_id, patch_id_fp, q_prim_vf)
The elliptical patch is a 2D geometry. The geometry of the patch is well-defined when its centroid an...
real(wp) function, dimension(1:3) f_convert_cyl_to_cart(cyl)
Returns a 3D Cartesian coordinate vector from a cylindrical (x, r, theta) input vector.
subroutine s_icpp_circle(patch_id, patch_id_fp, q_prim_vf)
The circular patch is a 2D geometry that may be used, for example, in creating a bubble or a droplet....
subroutine s_icpp_2d_taylorgreen_vortex(patch_id, patch_id_fp, q_prim_vf)
The Taylor Green vortex is 2D decaying vortex that may be used, for example, to verify the effects of...
subroutine s_icpp_cuboid(patch_id, patch_id_fp, q_prim_vf)
The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary,...
subroutine s_icpp_varcircle(patch_id, patch_id_fp, q_prim_vf)
The varcircle patch is a 2D geometry that may be used . It generatres an annulus.
subroutine s_convert_cylindrical_to_spherical_coord(cyl_x, cyl_y)
Computes the spherical azimuthal angle from cylindrical (x, r) coordinates.
character(len=5) istr
subroutine s_icpp_sweep_plane(patch_id, patch_id_fp, q_prim_vf)
The swept plane patch is a 3D geometry that may be used, for example, in creating a solid boundary,...
subroutine s_icpp_rectangle(patch_id, patch_id_fp, q_prim_vf)
The rectangular patch is a 2D geometry that may be used, for example, in creating a solid boundary,...
real(wp) sph_phi
Variables to be used to hold cell locations in Cartesian coordinates if 3D simulation is using cylind...
impure subroutine, public s_apply_icpp_patches(patch_id_fp, q_prim_vf)
Dispatches each initial condition patch to its geometry-specific initialization routine.
real(wp) smooth_coeff
These variables are analogous in both meaning and use to the similarly named components in the ic_pat...
subroutine s_icpp_line_segment(patch_id, patch_id_fp, q_prim_vf)
The line segment patch is a 1D geometry that may be used, for example, in creating a Riemann problem....
type(bounds_info) y_boundary
subroutine s_icpp_sphere(patch_id, patch_id_fp, q_prim_vf)
The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet...
real(wp) eta
In the case that smoothing of patch boundaries is enabled and the boundary between two adjacent patch...
subroutine s_icpp_1d_bubble_pulse(patch_id, patch_id_fp, q_prim_vf)
Initializes a 1D bubble-pulse patch with analytical primitive variable profiles.
subroutine s_icpp_model(patch_id, patch_id_fp, q_prim_vf)
The STL patch is a 2/3D geometry that is imported from an STL file.
subroutine s_convert_cylindrical_to_cartesian_coord(cyl_y, cyl_z)
Converts cylindrical (r, theta) coordinates to Cartesian (y, z) module variables.
elemental real(wp) function f_r(myth, offset, a)
Archimedes spiral function.
type(bounds_info) x_boundary
type(bounds_info) z_boundary
These variables combine the centroid and length parameters associated with a particular patch to yiel...
subroutine s_icpp_sweep_line(patch_id, patch_id_fp, q_prim_vf)
The swept line patch is a 2D geometry that may be used, for example, in creating a solid boundary,...
subroutine s_icpp_spherical_harmonic(patch_id, patch_id_fp, q_prim_vf)
This patch generates the shape of the spherical harmonics as a perturbation to a perfect sphere.
subroutine s_icpp_ellipsoid(patch_id, patch_id_fp, q_prim_vf)
The ellipsoidal patch is a 3D geometry. The geometry of the patch is well-defined when its centroid a...
subroutine s_icpp_cylinder(patch_id, patch_id_fp, q_prim_vf)
The cylindrical patch is a 3D geometry that may be used, for example, in setting up a cylindrical sol...
impure subroutine s_icpp_spiral(patch_id, patch_id_fp, q_prim_vf)
The spiral patch is a 2D geometry that may be used, The geometry of the patch is well-defined when it...
subroutine s_icpp_3dvarcircle(patch_id, patch_id_fp, q_prim_vf)
Initializes a 3D variable-thickness circular annulus patch extruded along the z-axis.
Binary STL file reader and processor for immersed boundary geometry.
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
impure subroutine s_mpi_abort(prnt, code)
The subroutine terminates the MPI execution environment.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
real(wp), dimension(:), allocatable, public gammas
real(wp), dimension(:), allocatable, public gs_min
real(wp), dimension(:), allocatable, public pi_infs
Derived type adding beginning (beg) and end bounds info as attributes.
Derived type annexing a scalar field (SF).