MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_check_patches.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
2!>
3!! @file
4!! @brief Contains module m_check_patches
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
14
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
18
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32! New line at end of file is required for FYPP
33# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59! New line at end of file is required for FYPP
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
61
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138! New line at end of file is required for FYPP
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165! New line at end of file is required for FYPP
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
167
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
169
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
171
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
173
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
175
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
177
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223! New line at end of file is required for FYPP
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
225
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
227
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
229
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
231
232# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
233
234# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
235
236# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237
238# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241
242# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243
244# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249
250# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255
256# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261
262# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264! New line at end of file is required for FYPP
265# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
266
267# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
268
269! Caution:
270! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
271! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
272! For an example see misc/nvidia_uvm/bind.sh.
273# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
274
275# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
276
277# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
278
279# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
280
281# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
282
283# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
284
285# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286
287# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288! New line at end of file is required for FYPP
289# 6 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp" 2
290
291!> @brief Validates geometry parameters and constraints for initial condition patches
292
293# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
294# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
295# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
296# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
297# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
298# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
299# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
300# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
301
302# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
303# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
304# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
305
306# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
307
308# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
309
310# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
311
312# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
313
314# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
315
316# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
317
318# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
319! New line at end of file is required for FYPP
320# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
321# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
322# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
323# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
324# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
325# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
326# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
327# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
328
329# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
330# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
331# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
332
333# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
334
335# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
336
337# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
338
339# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
340
341# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
342
343# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
344
345# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
346! New line at end of file is required for FYPP
347# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
348
349# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
350# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
351# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
352# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
353# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
354
355# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
356
357# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
358
359# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
360
361# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
362
363# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
364
365# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
366
367# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
368
369# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
370
371# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
372
373# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
374
375# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
376
377# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
378
379# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
380
381# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
382
383# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
384
385# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
386
387# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
388
389# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
390
391# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
392
393# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
394
395# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
396
397# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
398
399# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
400# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
401
402# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
403
404# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
405
406# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
407
408# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
409
410# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
411
412# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
413
414# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
415
416# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
417
418# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
419
420# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
421
422# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
423
424# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
425! New line at end of file is required for FYPP
426# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
427# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
428# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
429# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
430# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
431# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
432# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
433# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
434
435# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
436# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
437# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
438
439# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
440
441# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
442
443# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
444
445# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
446
447# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
448
449# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
450
451# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
452! New line at end of file is required for FYPP
453# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
454
455# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
456
457# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
458
459# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
460
461# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
462
463# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
464
465# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
466
467# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
468
469# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
470
471# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
472
473# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
474
475# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
476
477# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
478
479# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
480
481# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
482
483# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
484
485# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
486
487# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
488
489# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
490
491# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
492
493# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
494
495# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
496
497# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
498
499# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
500
501# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
502
503# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
504
505# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
506
507# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
508
509# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
510! New line at end of file is required for FYPP
511# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
512
513# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
514
515# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
516
517# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
518
519# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
520
521# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
522
523# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
524
525# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
526
527# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
528
529# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
530
531# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
532
533# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
534
535# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
536
537# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
538
539# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
540
541# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
542
543# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
544
545# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
546
547# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
548
549# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
550# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
551! New line at end of file is required for FYPP
552# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
553
554# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
555
556! Caution:
557! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
558! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
559! For an example see misc/nvidia_uvm/bind.sh.
560# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
561
562# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
563
564# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
565
566# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
567
568# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
569
570# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
571
572# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
573
574# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
575! New line at end of file is required for FYPP
576# 10 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp" 2
577
579
580 ! Dependencies
581 use m_derived_types !< definitions of the derived types
582
583 use m_global_parameters !< global parameters for the code
584
585 use m_mpi_proxy !< message passing interface (mpi) module proxy
586
587 use m_data_output !< procedures to write the grid data and the
588 !! conservative variables to files
589
590#ifdef MFC_MPI
591 use mpi !< message passing interface (mpi) module
592#endif
593
595
596 use m_helper_basic !< functions to compare floating point numbers
597
598 use m_helper
599
600 implicit none
601
602 private; public :: s_check_patches
603
604 character(len=10) :: istr
605
606contains
607
608 !> @brief Validates the geometry parameters of all active and inactive initial condition patches.
609 impure subroutine s_check_patches
610
611 integer :: i
612 character(len=10) :: num_patches_str
613
614 call s_int_to_str(num_patches, num_patches_str)
615
616 do i = 1, num_patches_max
617 if (i <= num_patches) then
618 ! call s_check_patch_geometry(i)
619 call s_int_to_str(i, istr)
620 if (patch_icpp(i)%geometry == 6) then
621# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
622 call s_prohibit_abort("patch_icpp(i)%geometry == 6", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry is deprecated.")
623# 53 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
624 end if
625# 55 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
626 if (patch_icpp(i)%geometry == 7) then
627# 55 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
628 call s_prohibit_abort("patch_icpp(i)%geometry == 7", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry is deprecated.")
629# 55 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
630 end if
631# 57 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
632 if (patch_icpp(i)%geometry == 13) then
633# 57 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
634 call s_prohibit_abort("patch_icpp(i)%geometry == 13", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry is deprecated.")
635# 57 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
636 end if
637# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
638 if (patch_icpp(i)%geometry == 15) then
639# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
640 call s_prohibit_abort("patch_icpp(i)%geometry == 15", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry is deprecated.")
641# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
642 end if
643# 61 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
644 if (patch_icpp(i)%geometry == dflt_int) then
645# 61 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
646 call s_prohibit_abort("patch_icpp(i)%geometry == dflt_int", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry must be set.")
647# 61 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
648 end if
649# 63 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
650
651 ! Constraints on the geometric initial condition patch parameters
652 if (patch_icpp(i)%geometry == 1) then
654 elseif (patch_icpp(i)%geometry == 2) then
656 elseif (patch_icpp(i)%geometry == 3) then
658 elseif (patch_icpp(i)%geometry == 4) then
660 elseif (patch_icpp(i)%geometry == 5) then
662 elseif (patch_icpp(i)%geometry == 8) then
664 elseif (patch_icpp(i)%geometry == 9) then
666 elseif (patch_icpp(i)%geometry == 10) then
668 elseif (patch_icpp(i)%geometry == 11) then
670 elseif (patch_icpp(i)%geometry == 12) then
672 elseif (patch_icpp(i)%geometry == 14) then
674 elseif (patch_icpp(i)%geometry == 20) then
676 elseif (patch_icpp(i)%geometry == 21) then
678 else
679 call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(istr)//")%geometry "// &
680 "must be between 1 and 21")
681 end if
682 else
683 if (patch_icpp(i)%geometry /= dflt_int) then
684# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
685 call s_prohibit_abort("patch_icpp(i)%geometry /= dflt_int", "Inactive patch defined. "// "patch_icpp("//trim(istr)//")%geometry not be set for inactive patches. "// "Patch "//trim(istr)//" is inactive as the number of patches is "//trim(num_patches_str))
686# 96 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
687 end if
688# 99 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
690 end if
691 end do
692
693 ! Constraints on overwrite rights initial condition patch parameters
694 do i = 1, num_patches
695 if (i <= num_patches) then
697 else
699 end if
700 end do
701
702 ! Constraints on smoothing initial condition patch parameters
703 do i = 1, num_patches
704 if (i > 1 .and. (patch_icpp(i)%geometry == 2 .or. &
705 patch_icpp(i)%geometry == 3 .or. &
706 patch_icpp(i)%geometry == 4 .or. &
707 patch_icpp(i)%geometry == 5 .or. &
708 patch_icpp(i)%geometry == 8 .or. &
709 patch_icpp(i)%geometry == 0 .or. &
710 patch_icpp(i)%geometry == 0 .or. &
711 patch_icpp(i)%geometry == 9 .or. &
712 patch_icpp(i)%geometry == 10 .or. &
713 patch_icpp(i)%geometry == 11 .or. &
714 patch_icpp(i)%geometry == 12 .or. &
715 patch_icpp(i)%geometry == 14)) then
717 else
719 end if
720 end do
721
722 ! Constraints on flow variables initial condition patch parameters
723 do i = 1, num_patches
724 if (i <= num_patches) then
726 else
728 end if
729 end do
730
731 end subroutine s_check_patches
732
733 !> This subroutine checks the line segment patch input
734 !! @param patch_id Patch identifier
735 impure subroutine s_check_line_segment_patch_geometry(patch_id)
736
737 integer, intent(in) :: patch_id
738 call s_int_to_str(patch_id, istr)
739
740 if (n > 0) then
741# 150 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
742 call s_prohibit_abort("n > 0", "Line segment patch "//trim(istr)//": n must be zero")
743# 150 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
744 end if
745 if (patch_icpp(patch_id)%length_x <= 0._wp) then
746# 151 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
747 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Line segment patch "//trim(istr)//": length_x must be greater than zero")
748# 151 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
749 end if
750 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
751# 152 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
752 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Line segment patch "//trim(istr)//": x_centroid must be set")
753# 152 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
754 end if
755 if (cyl_coord) then
756# 153 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
757 call s_prohibit_abort("cyl_coord", "Line segment patch "//trim(istr)//": cyl_coord is not supported")
758# 153 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
759 end if
760
762
763 !> This subroutine checks the circle patch input
764 !! @param patch_id Patch identifier
765 impure subroutine s_check_circle_patch_geometry(patch_id)
766
767 integer, intent(in) :: patch_id
768 call s_int_to_str(patch_id, istr)
769
770 if (n == 0) then
771# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
772 call s_prohibit_abort("n == 0", "Circle patch "//trim(istr)//": n must be zero")
773# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
774 end if
775 if (p > 0) then
776# 165 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
777 call s_prohibit_abort("p > 0", "Circle patch "//trim(istr)//": p must be greater than zero")
778# 165 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
779 end if
780 if (patch_icpp(patch_id)%radius <= 0._wp) then
781# 166 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
782 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Circle patch "//trim(istr)//": radius must be greater than zero")
783# 166 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
784 end if
785 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
786# 167 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
787 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Circle patch "//trim(istr)//": x_centroid must be set")
788# 167 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
789 end if
790 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
791# 168 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
792 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Circle patch "//trim(istr)//": y_centroid must be set")
793# 168 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
794 end if
795
796 end subroutine s_check_circle_patch_geometry
797
798 !> This subroutine checks the rectangle patch input
799 !! @param patch_id Patch identifier
800 impure subroutine s_check_rectangle_patch_geometry(patch_id)
801
802 integer, intent(in) :: patch_id
803 call s_int_to_str(patch_id, istr)
804
805 if (n == 0) then
806# 179 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
807 call s_prohibit_abort("n == 0", "Rectangle patch "//trim(istr)//": n must be greater than zero")
808# 179 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
809 end if
810 if (p > 0) then
811# 180 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
812 call s_prohibit_abort("p > 0", "Rectangle patch "//trim(istr)//": p must be zero")
813# 180 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
814 end if
815 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
816# 181 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
817 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Rectangle patch "//trim(istr)//": x_centroid must be set")
818# 181 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
819 end if
820 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
821# 182 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
822 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Rectangle patch "//trim(istr)//": y_centroid must be set")
823# 182 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
824 end if
825 if (patch_icpp(patch_id)%length_x <= 0._wp) then
826# 183 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
827 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Rectangle patch "//trim(istr)//": length_x must be greater than zero")
828# 183 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
829 end if
830 if (patch_icpp(patch_id)%length_y <= 0._wp) then
831# 184 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
832 call s_prohibit_abort("patch_icpp(patch_id)%length_y <= 0._wp", "Rectangle patch "//trim(istr)//": length_y must be greater than zero")
833# 184 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
834 end if
835
837
838 !> This subroutine checks the line sweep patch input
839 !! @param patch_id Patch identifier
840 impure subroutine s_check_line_sweep_patch_geometry(patch_id)
841
842 integer, intent(in) :: patch_id
843 call s_int_to_str(patch_id, istr)
844
845 if (n == 0) then
846# 195 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
847 call s_prohibit_abort("n == 0", "Line sweep patch "//trim(istr)//": n must be greater than zero")
848# 195 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
849 end if
850 if (p > 0) then
851# 196 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
852 call s_prohibit_abort("p > 0", "Line sweep patch "//trim(istr)//": p must be zero")
853# 196 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
854 end if
855 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
856# 197 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
857 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Line sweep patch "//trim(istr)//": x_centroid must be set")
858# 197 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
859 end if
860 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
861# 198 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
862 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Line sweep patch "//trim(istr)//": y_centroid must be set")
863# 198 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
864 end if
865 if (f_is_default(patch_icpp(patch_id)%normal(1))) then
866# 199 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
867 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(1))", "Line sweep patch "//trim(istr)//": normal(1) must be set")
868# 199 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
869 end if
870 if (f_is_default(patch_icpp(patch_id)%normal(2))) then
871# 200 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
872 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(2))", "Line sweep patch "//trim(istr)//": normal(2) must be set")
873# 200 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
874 end if
875 if (.not. f_is_default(patch_icpp(patch_id)%normal(3))) then
876# 201 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
877 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(3))", "Line sweep patch "//trim(istr)//": normal(3) must not be set")
878# 201 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
879 end if
880
882
883 !> This subroutine checks the ellipse patch input
884 !! @param patch_id Patch identifier
885 impure subroutine s_check_ellipse_patch_geometry(patch_id)
886
887 integer, intent(in) :: patch_id
888 call s_int_to_str(patch_id, istr)
889
890 if (n == 0) then
891# 212 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
892 call s_prohibit_abort("n == 0", "Ellipse patch "//trim(istr)//": n must be greater than zero")
893# 212 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
894 end if
895 if (p > 0) then
896# 213 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
897 call s_prohibit_abort("p > 0", "Ellipse patch "//trim(istr)//": p must be zero")
898# 213 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
899 end if
900 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
901# 214 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
902 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Ellipse patch "//trim(istr)//": x_centroid must be set")
903# 214 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
904 end if
905 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
906# 215 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
907 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Ellipse patch "//trim(istr)//": y_centroid must be set")
908# 215 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
909 end if
910 if (patch_icpp(patch_id)%radii(1) <= 0._wp) then
911# 216 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
912 call s_prohibit_abort("patch_icpp(patch_id)%radii(1) <= 0._wp", "Ellipse patch "//trim(istr)//": radii(1) must be greater than zero")
913# 216 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
914 end if
915 if (patch_icpp(patch_id)%radii(2) <= 0._wp) then
916# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
917 call s_prohibit_abort("patch_icpp(patch_id)%radii(2) <= 0._wp", "Ellipse patch "//trim(istr)//": radii(2) must be greater than zero")
918# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
919 end if
920 if (.not. f_is_default(patch_icpp(patch_id)%radii(3))) then
921# 218 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
922 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(3))", "Ellipse patch "//trim(istr)//": radii(3) must not be set")
923# 218 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
924 end if
925
926 end subroutine s_check_ellipse_patch_geometry
927
928 !> This subroutine checks the model patch input
929 !! @param patch_id Patch identifier
931
932 integer, intent(in) :: patch_id
933 call s_int_to_str(patch_id, istr)
934
935 if (n == 0) then
936# 229 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
937 call s_prohibit_abort("n == 0", "Taylor Green vortex patch "//trim(istr)//": n must be greater than zero")
938# 229 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
939 end if
940 if (p > 0) then
941# 230 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
942 call s_prohibit_abort("p > 0", "Taylor Green vortex patch "//trim(istr)//": p must be zero")
943# 230 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
944 end if
945 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
946# 231 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
947 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Taylor Green vortex patch "//trim(istr)//": x_centroid must be set")
948# 231 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
949 end if
950 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
951# 232 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
952 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Taylor Green vortex patch "//trim(istr)//": y_centroid must be set")
953# 232 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
954 end if
955 if (patch_icpp(patch_id)%length_x <= 0._wp) then
956# 233 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
957 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Taylor Green vortex patch "//trim(istr)//": length_x must be greater than zero")
958# 233 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
959 end if
960 if (patch_icpp(patch_id)%length_y <= 0._wp) then
961# 234 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
962 call s_prohibit_abort("patch_icpp(patch_id)%length_y <= 0._wp", "Taylor Green vortex patch "//trim(istr)//": length_y must be greater than zero")
963# 234 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
964 end if
965 if (patch_icpp(patch_id)%vel(2) <= 0._wp) then
966# 235 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
967 call s_prohibit_abort("patch_icpp(patch_id)%vel(2) <= 0._wp", "Taylor Green vortex patch "//trim(istr)//": vel(2) must be greater than zero")
968# 235 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
969 end if
970
972
973 !> This subroutine checks the model patch input
974 !! @param patch_id Patch identifier
975 impure subroutine s_check_sphere_patch_geometry(patch_id)
976
977 integer, intent(in) :: patch_id
978 call s_int_to_str(patch_id, istr)
979
980 if (p == 0) then
981# 246 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
982 call s_prohibit_abort("p == 0", "Sphere patch "//trim(istr)//": p must be greater than zero")
983# 246 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
984 end if
985 if (patch_icpp(patch_id)%radius <= 0._wp) then
986# 247 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
987 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Sphere patch "//trim(istr)//": radius must be greater than zero")
988# 247 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
989 end if
990 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
991# 248 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
992 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Sphere patch "//trim(istr)//": x_centroid must be set")
993# 248 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
994 end if
995 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
996# 249 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
997 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Sphere patch "//trim(istr)//": y_centroid must be set")
998# 249 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
999 end if
1000 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1001# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1002 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Sphere patch "//trim(istr)//": z_centroid must be set")
1003# 250 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1004 end if
1005
1006 end subroutine s_check_sphere_patch_geometry
1007
1008 !> This subroutine checks the model patch input
1009 !! @param patch_id Patch identifier
1011 integer, intent(in) :: patch_id
1012
1013 call s_int_to_str(patch_id, istr)
1014
1015 if (p == 0) then
1016# 261 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1017 call s_prohibit_abort("p == 0", "Spherical harmonic patch "//trim(istr)//": p must be greater than zero")
1018# 261 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1019 end if
1020 if (patch_icpp(patch_id)%radius <= 0._wp) then
1021# 262 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1022 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Spherical harmonic patch "//trim(istr)//": radius must be greater than zero")
1023# 262 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1024 end if
1025 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1026# 263 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1027 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Spherical harmonic patch "//trim(istr)//": x_centroid must be set")
1028# 263 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1029 end if
1030 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1031# 264 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1032 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Spherical harmonic patch "//trim(istr)//": y_centroid must be set")
1033# 264 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1034 end if
1035 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1036# 265 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1037 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Spherical harmonic patch "//trim(istr)//": z_centroid must be set")
1038# 265 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1039 end if
1040 if (.not. f_approx_in_array(patch_icpp(patch_id)%epsilon, (/1._wp, 2._wp, 3._wp, 4._wp, 5._wp/))) then
1041# 266 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1042 call s_prohibit_abort(.not." f_approx_in_array(patch_icpp(patch_id)%epsilon, (/1._wp, 2._wp, 3._wp, 4._wp, 5._wp/))", "Spherical harmonic patch "//trim(istr)//": epsilon must be one of 1, 2, 3, 4, 5")
1043# 266 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1044 end if
1045# 268 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1046 if (patch_icpp(patch_id)%beta < 0._wp) then
1047# 268 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1048 call s_prohibit_abort("patch_icpp(patch_id)%beta < 0._wp", "Spherical harmonic patch "//trim(istr)//": beta must be greater than or equal to zero")
1049# 268 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1050 end if
1051# 270 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1052 if (patch_icpp(patch_id)%beta > patch_icpp(patch_id)%epsilon) then
1053# 270 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1054 call s_prohibit_abort("patch_icpp(patch_id)%beta > patch_icpp(patch_id)%epsilon", "Spherical harmonic patch "//trim(istr)//": beta must be less than or equal to epsilon")
1055# 270 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1056 end if
1057# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1058
1060
1061 !> This subroutine checks the model patch input
1062 !! @param patch_id Patch identifier
1063 impure subroutine s_check_cuboid_patch_geometry(patch_id)
1064
1065 ! Patch identifier
1066 integer, intent(in) :: patch_id
1067 call s_int_to_str(patch_id, istr)
1068
1069 if (p == 0) then
1070# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1071 call s_prohibit_abort("p == 0", "Cuboid patch "//trim(istr)//": p must be greater than zero")
1072# 283 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1073 end if
1074 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1075# 284 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1076 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Cuboid patch "//trim(istr)//": x_centroid must be set")
1077# 284 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1078 end if
1079 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1080# 285 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1081 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Cuboid patch "//trim(istr)//": y_centroid must be set")
1082# 285 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1083 end if
1084 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1085# 286 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1086 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Cuboid patch "//trim(istr)//": z_centroid must be set")
1087# 286 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1088 end if
1089 if (patch_icpp(patch_id)%length_x <= 0._wp) then
1090# 287 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1091 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Cuboid patch "//trim(istr)//": length_x must be greater than zero")
1092# 287 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1093 end if
1094 if (patch_icpp(patch_id)%length_y <= 0._wp) then
1095# 288 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1096 call s_prohibit_abort("patch_icpp(patch_id)%length_y <= 0._wp", "Cuboid patch "//trim(istr)//": length_y must be greater than zero")
1097# 288 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1098 end if
1099 if (patch_icpp(patch_id)%length_z <= 0._wp) then
1100# 289 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1101 call s_prohibit_abort("patch_icpp(patch_id)%length_z <= 0._wp", "Cuboid patch "//trim(istr)//": length_z must be greater than zero")
1102# 289 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1103 end if
1104
1105 end subroutine s_check_cuboid_patch_geometry
1106
1107 !> This subroutine checks the model patch input
1108 !! @param patch_id Patch identifier
1109 impure subroutine s_check_cylinder_patch_geometry(patch_id)
1110
1111 ! Patch identifier
1112 integer, intent(in) :: patch_id
1113 call s_int_to_str(patch_id, istr)
1114
1115 if (p == 0) then
1116# 301 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1117 call s_prohibit_abort("p == 0", "Cylinder patch "//trim(istr)//": p must be greater than zero")
1118# 301 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1119 end if
1120 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1121# 302 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1122 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Cylinder patch "//trim(istr)//": x_centroid must be set")
1123# 302 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1124 end if
1125 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1126# 303 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1127 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Cylinder patch "//trim(istr)//": y_centroid must be set")
1128# 303 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1129 end if
1130 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1131# 304 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1132 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Cylinder patch "//trim(istr)//": z_centroid must be set")
1133# 304 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1134 end if
1135 if (patch_icpp(patch_id)%radius <= 0._wp) then
1136# 305 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1137 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Cylinder patch "//trim(istr)//": radius must be greater than zero")
1138# 305 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1139 end if
1140
1141 ! Check if exactly one length is defined
1142 if (count([ patch_icpp(patch_id)%length_x > 0._wp, patch_icpp(patch_id)%length_y > 0._wp, patch_icpp(patch_id)%length_z > 0._wp ]) /= 1) then
1143# 308 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1144 call s_prohibit_abort("count([ patch_icpp(patch_id)%length_x > 0._wp, patch_icpp(patch_id)%length_y > 0._wp, patch_icpp(patch_id)%length_z > 0._wp ]) /= 1", "Cylinder patch "//trim(istr)//": Exactly one of length_x, length_y, or length_z must be defined and positive")
1145# 308 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1146 end if
1147# 313 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1148
1149 ! Ensure the defined length is positive
1150 if ((.not. f_is_default(patch_icpp(patch_id)%length_x) .and. patch_icpp(patch_id)%length_x <= 0._wp) .or. (.not. f_is_default(patch_icpp(patch_id)%length_y) .and. patch_icpp(patch_id)%length_y <= 0._wp) .or. (.not. f_is_default(patch_icpp(patch_id)%length_z) .and. patch_icpp(patch_id)%length_z <= 0._wp)) then
1151# 315 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1152 call s_prohibit_abort(.not..and..or..not..and..or..not..and."( f_is_default(patch_icpp(patch_id)%length_x) patch_icpp(patch_id)%length_x <= 0._wp) ( f_is_default(patch_icpp(patch_id)%length_y) patch_icpp(patch_id)%length_y <= 0._wp) ( f_is_default(patch_icpp(patch_id)%length_z) patch_icpp(patch_id)%length_z <= 0._wp)", "Cylinder patch "//trim(istr)//": The defined length_{} must be greater than zero")
1153# 315 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1154 end if
1155# 320 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1156
1157 end subroutine s_check_cylinder_patch_geometry
1158
1159 !> This subroutine checks the model patch input
1160 !! @param patch_id Patch identifier
1161 impure subroutine s_check_plane_sweep_patch_geometry(patch_id)
1162
1163 ! Patch identifier
1164 integer, intent(in) :: patch_id
1165 call s_int_to_str(patch_id, istr)
1166
1167 if (p == 0) then
1168# 331 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1169 call s_prohibit_abort("p == 0", "Plane sweep patch "//trim(istr)//": p must be greater than zero")
1170# 331 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1171 end if
1172 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1173# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1174 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Plane sweep patch "//trim(istr)//": x_centroid must be set")
1175# 332 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1176 end if
1177 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1178# 333 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1179 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Plane sweep patch "//trim(istr)//": y_centroid must be set")
1180# 333 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1181 end if
1182 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1183# 334 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1184 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Plane sweep patch "//trim(istr)//": z_centroid must be set")
1185# 334 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1186 end if
1187 if (f_is_default(patch_icpp(patch_id)%normal(1))) then
1188# 335 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1189 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(1))", "Plane sweep patch "//trim(istr)//": normal(1) must be set")
1190# 335 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1191 end if
1192 if (f_is_default(patch_icpp(patch_id)%normal(2))) then
1193# 336 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1194 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(2))", "Plane sweep patch "//trim(istr)//": normal(2) must be set")
1195# 336 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1196 end if
1197 if (f_is_default(patch_icpp(patch_id)%normal(3))) then
1198# 337 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1199 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(3))", "Plane sweep patch "//trim(istr)//": normal(3) must be set")
1200# 337 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1201 end if
1202
1204
1205 !> This subroutine checks the model patch input
1206 !! @param patch_id Patch identifier
1207 impure subroutine s_check_ellipsoid_patch_geometry(patch_id)
1208
1209 integer, intent(in) :: patch_id
1210 call s_int_to_str(patch_id, istr)
1211
1212 if (p == 0) then
1213# 348 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1214 call s_prohibit_abort("p == 0", "Ellipsoid patch "//trim(istr)//": p must be greater than zero")
1215# 348 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1216 end if
1217 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1218# 349 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1219 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Ellipsoid patch "//trim(istr)//": x_centroid must be set")
1220# 349 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1221 end if
1222 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1223# 350 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1224 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Ellipsoid patch "//trim(istr)//": y_centroid must be set")
1225# 350 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1226 end if
1227 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1228# 351 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1229 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Ellipsoid patch "//trim(istr)//": z_centroid must be set")
1230# 351 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1231 end if
1232 if (patch_icpp(patch_id)%radii(1) <= 0._wp) then
1233# 352 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1234 call s_prohibit_abort("patch_icpp(patch_id)%radii(1) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(1) must be greater than zero")
1235# 352 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1236 end if
1237 if (patch_icpp(patch_id)%radii(2) <= 0._wp) then
1238# 353 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1239 call s_prohibit_abort("patch_icpp(patch_id)%radii(2) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(2) must be greater than zero")
1240# 353 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1241 end if
1242 if (patch_icpp(patch_id)%radii(3) <= 0._wp) then
1243# 354 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1244 call s_prohibit_abort("patch_icpp(patch_id)%radii(3) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(3) must be greater than zero")
1245# 354 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1246 end if
1247
1249
1250 !!> This subroutine verifies that the geometric parameters of
1251 !! the inactive patch remain unaltered by the user inputs.
1252 !! @param patch_id Patch identifier
1253 impure subroutine s_check_inactive_patch_geometry(patch_id)
1254
1255 integer, intent(in) :: patch_id
1256 call s_int_to_str(patch_id, istr)
1257
1258 if (.not. f_is_default(patch_icpp(patch_id)%x_centroid)) then
1259# 366 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1260 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%x_centroid)", "Inactive patch "//trim(istr)//": x_centroid must not be set")
1261# 366 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1262 end if
1263 if (.not. f_is_default(patch_icpp(patch_id)%y_centroid)) then
1264# 367 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1265 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%y_centroid)", "Inactive patch "//trim(istr)//": y_centroid must not be set")
1266# 367 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1267 end if
1268 if (.not. f_is_default(patch_icpp(patch_id)%z_centroid)) then
1269# 368 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1270 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%z_centroid)", "Inactive patch "//trim(istr)//": z_centroid must not be set")
1271# 368 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1272 end if
1273 if (.not. f_is_default(patch_icpp(patch_id)%length_x)) then
1274# 369 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1275 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_x)", "Inactive patch "//trim(istr)//": length_x must not be set")
1276# 369 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1277 end if
1278 if (.not. f_is_default(patch_icpp(patch_id)%length_y)) then
1279# 370 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1280 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_y)", "Inactive patch "//trim(istr)//": length_y must not be set")
1281# 370 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1282 end if
1283 if (.not. f_is_default(patch_icpp(patch_id)%length_z)) then
1284# 371 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1285 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_z)", "Inactive patch "//trim(istr)//": length_z must not be set")
1286# 371 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1287 end if
1288 if (.not. f_is_default(patch_icpp(patch_id)%radius)) then
1289# 372 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1290 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radius)", "Inactive patch "//trim(istr)//": radius must not be set")
1291# 372 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1292 end if
1293 if (.not. f_is_default(patch_icpp(patch_id)%epsilon)) then
1294# 373 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1295 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%epsilon)", "Inactive patch "//trim(istr)//": epsilon must not be set")
1296# 373 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1297 end if
1298 if (.not. f_is_default(patch_icpp(patch_id)%beta)) then
1299# 374 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1300 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%beta)", "Inactive patch "//trim(istr)//": beta must not be set")
1301# 374 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1302 end if
1303 if (.not. f_is_default(patch_icpp(patch_id)%normal(1))) then
1304# 375 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1305 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(1))", "Inactive patch "//trim(istr)//": normal(1) must not be set")
1306# 375 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1307 end if
1308 if (.not. f_is_default(patch_icpp(patch_id)%normal(2))) then
1309# 376 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1310 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(2))", "Inactive patch "//trim(istr)//": normal(2) must not be set")
1311# 376 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1312 end if
1313 if (.not. f_is_default(patch_icpp(patch_id)%normal(3))) then
1314# 377 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1315 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(3))", "Inactive patch "//trim(istr)//": normal(3) must not be set")
1316# 377 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1317 end if
1318 if (.not. f_is_default(patch_icpp(patch_id)%radii(1))) then
1319# 378 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1320 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(1))", "Inactive patch "//trim(istr)//": radii(1) must not be set")
1321# 378 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1322 end if
1323 if (.not. f_is_default(patch_icpp(patch_id)%radii(2))) then
1324# 379 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1325 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(2))", "Inactive patch "//trim(istr)//": radii(2) must not be set")
1326# 379 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1327 end if
1328 if (.not. f_is_default(patch_icpp(patch_id)%radii(3))) then
1329# 380 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1330 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(3))", "Inactive patch "//trim(istr)//": radii(3) must not be set")
1331# 380 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1332 end if
1333
1334 end subroutine s_check_inactive_patch_geometry
1335
1336 !> This subroutine verifies the active patch's right to overwrite the preceding patches
1337 !! @param patch_id Patch identifier
1338 impure subroutine s_check_active_patch_alteration_rights(patch_id)
1339
1340 integer, intent(in) :: patch_id
1341 call s_int_to_str(patch_id, istr)
1342
1343 if (.not. patch_icpp(patch_id)%alter_patch(0)) then
1344# 391 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1345 call s_prohibit_abort(.not." patch_icpp(patch_id)%alter_patch(0)", "Patch "//trim(istr)//": alter_patch(0) must be true")
1346# 391 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1347 end if
1348 if (any(patch_icpp(patch_id)%alter_patch(patch_id:))) then
1349# 392 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1350 call s_prohibit_abort("any(patch_icpp(patch_id)%alter_patch(patch_id:))", "Patch "//trim(istr)// ":alter_patch(i) must be false for i >= "//trim(istr)//". Only preceding patches can be altered")
1351# 392 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1352 end if
1353# 394 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1354
1356
1357 !> This subroutine verifies that inactive patches cannot overwrite other patches
1358 !! @param patch_id Patch identifier
1360
1361 ! Patch identifier
1362 integer, intent(in) :: patch_id
1363 call s_int_to_str(patch_id, istr)
1364
1365 if (.not. patch_icpp(patch_id)%alter_patch(0)) then
1366# 405 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1367 call s_prohibit_abort(.not." patch_icpp(patch_id)%alter_patch(0)", "Inactive patch "//trim(istr)//": cannot have alter_patch(0) altered")
1368# 405 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1369 end if
1370 if (any(patch_icpp(patch_id)%alter_patch(1:))) then
1371# 406 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1372 call s_prohibit_abort("any(patch_icpp(patch_id)%alter_patch(1:))", "Inactive patch "//trim(istr)//": cannot have any alter_patch(i) enabled")
1373# 406 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1374 end if
1375
1377
1378 !> This subroutine checks the smoothing parameters
1379 !! @param patch_id Patch identifier
1380 impure subroutine s_check_supported_patch_smoothing(patch_id)
1381
1382 integer, intent(in) :: patch_id
1383 call s_int_to_str(patch_id, istr)
1384
1385 if (patch_icpp(patch_id)%smoothen) then
1386 if (patch_icpp(patch_id)%smooth_patch_id >= patch_id) then
1387# 418 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1388 call s_prohibit_abort("patch_icpp(patch_id)%smooth_patch_id >= patch_id", "Smoothen enabled. Patch "//trim(istr)//": smooth_patch_id must be less than patch_id")
1389# 418 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1390 end if
1391# 420 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1392 if (patch_icpp(patch_id)%smooth_patch_id == 0) then
1393# 420 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1394 call s_prohibit_abort("patch_icpp(patch_id)%smooth_patch_id == 0", "Smoothen enabled. Patch "//trim(istr)//": smooth_patch_id must be greater than zero")
1395# 420 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1396 end if
1397# 422 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1398 if (patch_icpp(patch_id)%smooth_coeff <= 0._wp) then
1399# 422 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1400 call s_prohibit_abort("patch_icpp(patch_id)%smooth_coeff <= 0._wp", "Smoothen enabled. Patch "//trim(istr)//": smooth_coeff must be greater than zero")
1401# 422 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1402 end if
1403# 424 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1404 else
1405 if (patch_icpp(patch_id)%smooth_patch_id /= patch_id) then
1406# 425 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1407 call s_prohibit_abort("patch_icpp(patch_id)%smooth_patch_id /= patch_id", "Smoothen disabled. Patch "//trim(istr)//": smooth_patch_id must be equal to patch_id")
1408# 425 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1409 end if
1410# 427 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1411 if (.not. f_is_default(patch_icpp(patch_id)%smooth_coeff)) then
1412# 427 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1413 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%smooth_coeff)", "Smoothen disabled. Patch "//trim(istr)//": smooth_coeff must not be set")
1414# 427 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1415 end if
1416# 429 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1417 end if
1418
1420
1421 !> This subroutine verifies that inactive patches cannot be smoothed
1422 !! @param patch_id Patch identifier
1423 impure subroutine s_check_unsupported_patch_smoothing(patch_id)
1424
1425 ! Patch identifier
1426 integer, intent(in) :: patch_id
1427 call s_int_to_str(patch_id, istr)
1428
1429 if (patch_icpp(patch_id)%smoothen) then
1430# 441 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1431 call s_prohibit_abort("patch_icpp(patch_id)%smoothen", "Inactive patch "//trim(istr)//": cannot have smoothen enabled")
1432# 441 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1433 end if
1434# 443 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1435 if (patch_icpp(patch_id)%smooth_patch_id /= patch_id) then
1436# 443 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1437 call s_prohibit_abort("patch_icpp(patch_id)%smooth_patch_id /= patch_id", "Inactive patch "//trim(istr)//": smooth_patch_id must be equal to patch_id")
1438# 443 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1439 end if
1440# 445 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1441 if (.not. f_is_default(patch_icpp(patch_id)%smooth_coeff)) then
1442# 445 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1443 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%smooth_coeff)", "Inactive patch "//trim(istr)//": smooth_coeff must not be set")
1444# 445 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1445 end if
1446# 447 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1447
1449
1450 !> This subroutine checks the primitive variables
1451 !! @param patch_id Patch identifier
1453
1454 integer, intent(in) :: patch_id
1455
1456 logical, dimension(3) :: is_set_b
1457
1458 call s_int_to_str(patch_id, istr)
1459
1460 if (f_is_default(patch_icpp(patch_id)%vel(1))) then
1461# 460 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1462 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%vel(1))", "Patch "//trim(istr)//": vel(1) must be set")
1463# 460 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1464 end if
1465# 462 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1466 if (n == 0 .and. (.not. f_is_default(patch_icpp(patch_id)%vel(2))) .and. (.not. f_approx_equal(patch_icpp(patch_id)%vel(2) , 0._wp)) .and. (.not. mhd)) then
1467# 462 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1468 call s_prohibit_abort(.and..not..and..not..and..not."n == 0 ( f_is_default(patch_icpp(patch_id)%vel(2))) ( f_approx_equal(patch_icpp(patch_id)%vel(2) , 0._wp)) ( mhd)", "Patch "//trim(istr)//": vel(2) must not be set when n = 0")
1469# 462 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1470 end if
1471# 464 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1472 if (n > 0 .and. f_is_default(patch_icpp(patch_id)%vel(2))) then
1473# 464 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1474 call s_prohibit_abort(.and."n > 0 f_is_default(patch_icpp(patch_id)%vel(2))", "Patch "//trim(istr)//": vel(2) must be set when n > 0")
1475# 464 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1476 end if
1477# 466 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1478 if (p == 0 .and. (.not. f_is_default(patch_icpp(patch_id)%vel(3))) .and. (.not. f_approx_equal(patch_icpp(patch_id)%vel(3) , 0._wp)) .and. (.not. mhd)) then
1479# 466 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1480 call s_prohibit_abort(.and..not..and..not..and..not."p == 0 ( f_is_default(patch_icpp(patch_id)%vel(3))) ( f_approx_equal(patch_icpp(patch_id)%vel(3) , 0._wp)) ( mhd)", "Patch "//trim(istr)//": vel(3) must not be set when p = 0")
1481# 466 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1482 end if
1483# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1484 if (p > 0 .and. f_is_default(patch_icpp(patch_id)%vel(3))) then
1485# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1486 call s_prohibit_abort(.and."p > 0 f_is_default(patch_icpp(patch_id)%vel(3))", "Patch "//trim(istr)//": vel(3) must be set when p > 0")
1487# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1488 end if
1489# 470 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1490 if (mhd .and. (f_is_default(patch_icpp(patch_id)%vel(2)) .or. f_is_default(patch_icpp(patch_id)%vel(3)))) then
1491# 470 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1492 call s_prohibit_abort(.and..or."mhd (f_is_default(patch_icpp(patch_id)%vel(2)) f_is_default(patch_icpp(patch_id)%vel(3)))", "Patch "//trim(istr)//": All velocities (vel(1:3)) must be set when mhd = true")
1493# 470 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1494 end if
1495# 472 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1496 if (model_eqns == 1 .and. patch_icpp(patch_id)%rho <= 0._wp) then
1497# 472 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1498 call s_prohibit_abort(.and."model_eqns == 1 patch_icpp(patch_id)%rho <= 0._wp", "Patch "//trim(istr)//": rho must be greater than zero when model_eqns = 1")
1499# 472 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1500 end if
1501# 474 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1502 if (model_eqns == 1 .and. patch_icpp(patch_id)%gamma <= 0._wp) then
1503# 474 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1504 call s_prohibit_abort(.and."model_eqns == 1 patch_icpp(patch_id)%gamma <= 0._wp", "Patch "//trim(istr)//": gamma must be greater than zero when model_eqns = 1")
1505# 474 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1506 end if
1507# 476 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1508 if (model_eqns == 1 .and. patch_icpp(patch_id)%pi_inf < 0._wp) then
1509# 476 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1510 call s_prohibit_abort(.and."model_eqns == 1 patch_icpp(patch_id)%pi_inf < 0._wp", "Patch "//trim(istr)//": pi_inf must be greater than or equal to zero when model_eqns = 1")
1511# 476 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1512 end if
1513# 478 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1514 if (patch_icpp(patch_id)%geometry == 5 .and. patch_icpp(patch_id)%pi_inf > 0) then
1515# 478 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1516 call s_prohibit_abort(.and."patch_icpp(patch_id)%geometry == 5 patch_icpp(patch_id)%pi_inf > 0", "Patch "//trim(istr)//": pi_inf must be less than or equal to zero when geometry = 5")
1517# 478 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1518 end if
1519# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1520 if (model_eqns == 2 .and. any(patch_icpp(patch_id)%alpha_rho(1:num_fluids) < 0._wp)) then
1521# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1522 call s_prohibit_abort(.and."model_eqns == 2 any(patch_icpp(patch_id)%alpha_rho(1:num_fluids) < 0._wp)", "Patch "//trim(istr)//": alpha_rho(1:num_fluids) must be greater than or equal to zero when model_eqns = 2")
1523# 480 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1524 end if
1525# 482 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1526
1527 is_set_b(1) = .not. f_is_default(patch_icpp(patch_id)%Bx)
1528 is_set_b(2) = .not. f_is_default(patch_icpp(patch_id)%By)
1529 is_set_b(3) = .not. f_is_default(patch_icpp(patch_id)%Bz)
1530
1531 if (.not. mhd .and. any(is_set_b)) then
1532# 487 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1533 call s_prohibit_abort(.not..and." mhd any(is_set_B)", "Bx, By, and Bz must not be set if MHD is not enabled")
1534# 487 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1535 end if
1536# 489 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1537 if (mhd .and. n == 0 .and. is_set_b(1)) then
1538# 489 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1539 call s_prohibit_abort(.and..and."mhd n == 0 is_set_B(1)", "Bx must not be set in 1D MHD simulations")
1540# 489 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1541 end if
1542 if (mhd .and. n > 0 .and. .not. is_set_b(1)) then
1543# 490 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1544 call s_prohibit_abort(.and..and..not."mhd n > 0 is_set_B(1)", "Bx must be set in 2D/3D MHD simulations")
1545# 490 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1546 end if
1547 if (mhd .and. .not. (is_set_b(2) .and. is_set_b(3))) then
1548# 491 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1549 call s_prohibit_abort(.and..not..and."mhd (is_set_B(2) is_set_B(3))", "By and Bz must be set in all MHD simulations")
1550# 491 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1551 end if
1552
1553 if (model_eqns == 2 .and. num_fluids < num_fluids_max) then
1554 if (.not. f_all_default(patch_icpp(patch_id)%alpha_rho(num_fluids + 1:))) then
1555# 494 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1556 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%alpha_rho(num_fluids + 1:))", "Patch "//trim(istr)//": alpha_rho(i) must not be set for i > num_fluids")
1557# 494 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1558 end if
1559# 496 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1560 if (.not. f_all_default(patch_icpp(patch_id)%alpha(num_fluids + 1:))) then
1561# 496 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1562 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%alpha(num_fluids + 1:))", "Patch "//trim(istr)//": alpha(i) must not be set for i > num_fluids")
1563# 496 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1564 end if
1565# 498 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1566 if (f_is_default(patch_icpp(patch_id)%alpha(num_fluids))) then
1567# 498 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1568 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%alpha(num_fluids))", "Patch "//trim(istr)//": alpha(num_fluids) must be set")
1569# 498 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1570 end if
1571# 500 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1572 end if
1573
1574 if (chemistry) then
1575 !@:ASSERT(all(patch_icpp(patch_id)%Y(1:num_species) >= 0._wp), "Patch " // trim(iStr) // ".")
1576 !@:ASSERT(any(patch_icpp(patch_id)%Y(1:num_species) > verysmall), "Patch " // trim(iStr) // ".")
1577 end if
1578
1580
1581 !> This subroutine verifies that the primitive variables
1582 !! associated with the given inactive patch remain unaltered
1583 !! by the user inputs.
1584 !! @param patch_id Patch identifier
1586
1587 integer, intent(in) :: patch_id
1588 call s_int_to_str(patch_id, istr)
1589
1590 if (.not. f_all_default(patch_icpp(patch_id)%alpha_rho)) then
1591# 518 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1592 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%alpha_rho)", "Inactive patch "//trim(istr)//": alpha_rho must not be set")
1593# 518 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1594 end if
1595# 520 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1596 if (.not. f_is_default(patch_icpp(patch_id)%rho)) then
1597# 520 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1598 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%rho)", "Inactive patch "//trim(istr)//": rho must not be set")
1599# 520 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1600 end if
1601# 522 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1602 if (.not. f_all_default(patch_icpp(patch_id)%vel)) then
1603# 522 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1604 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%vel)", "Inactive patch "//trim(istr)//": vel must not be set")
1605# 522 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1606 end if
1607# 524 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1608 if (.not. f_is_default(patch_icpp(patch_id)%pres)) then
1609# 524 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1610 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%pres)", "Inactive patch "//trim(istr)//": pres must not be set")
1611# 524 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1612 end if
1613# 526 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1614 if (.not. f_all_default(patch_icpp(patch_id)%alpha)) then
1615# 526 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1616 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%alpha)", "Inactive patch "//trim(istr)//": alpha must not be set")
1617# 526 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1618 end if
1619# 528 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1620 if (.not. f_is_default(patch_icpp(patch_id)%gamma)) then
1621# 528 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1622 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%gamma)", "Inactive patch "//trim(istr)//": gamma must not be set")
1623# 528 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1624 end if
1625# 530 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1626 if (.not. f_is_default(patch_icpp(patch_id)%pi_inf)) then
1627# 530 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1628 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%pi_inf)", "Inactive patch "//trim(istr)//": pi_inf must not be set")
1629# 530 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1630 end if
1631# 532 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1632
1634
1635 !> @brief Verifies that the model file referenced by the given patch exists on disk.
1636 impure subroutine s_check_model_geometry(patch_id)
1637
1638 integer, intent(in) :: patch_id
1639
1640 logical :: file_exists
1641
1642 inquire (file=patch_icpp(patch_id)%model_filepath, exist=file_exists)
1643
1644 if (.not. file_exists) then
1645# 544 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1646 call s_prohibit_abort(.not." file_exists", "Model file "//trim(patch_icpp(patch_id)%model_filepath)// " requested by patch "//trim(istr)//" does not exist")
1647# 544 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1648 end if
1649# 546 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1650
1651 end subroutine s_check_model_geometry
1652
1653end module m_check_patches
Validates geometry parameters and constraints for initial condition patches.
impure subroutine s_check_rectangle_patch_geometry(patch_id)
This subroutine checks the rectangle patch input.
impure subroutine s_check_line_segment_patch_geometry(patch_id)
This subroutine checks the line segment patch input.
character(len=10) istr
impure subroutine s_check_ellipsoid_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine s_check_circle_patch_geometry(patch_id)
This subroutine checks the circle patch input.
impure subroutine s_check_cylinder_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine s_check_inactive_patch_geometry(patch_id)
impure subroutine s_check_supported_patch_smoothing(patch_id)
This subroutine checks the smoothing parameters.
impure subroutine s_check_inactive_patch_primitive_variables(patch_id)
This subroutine verifies that the primitive variables associated with the given inactive patch remain...
impure subroutine s_check_ellipse_patch_geometry(patch_id)
This subroutine checks the ellipse patch input.
impure subroutine s_check_model_geometry(patch_id)
Verifies that the model file referenced by the given patch exists on disk.
impure subroutine s_check_2d_taylorgreen_vortex_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine s_check_active_patch_alteration_rights(patch_id)
This subroutine verifies the active patch's right to overwrite the preceding patches.
impure subroutine s_check_sphere_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine, public s_check_patches
Validates the geometry parameters of all active and inactive initial condition patches.
impure subroutine s_check_active_patch_primitive_variables(patch_id)
This subroutine checks the primitive variables.
impure subroutine s_check_inactive_patch_alteration_rights(patch_id)
This subroutine verifies that inactive patches cannot overwrite other patches.
impure subroutine s_check_plane_sweep_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine s_check_spherical_harmonic_patch_geometry(patch_id)
This subroutine checks the model patch input.
impure subroutine s_check_line_sweep_patch_geometry(patch_id)
This subroutine checks the line sweep patch input.
impure subroutine s_check_unsupported_patch_smoothing(patch_id)
This subroutine verifies that inactive patches cannot be smoothed.
impure subroutine s_check_cuboid_patch_geometry(patch_id)
This subroutine checks the model patch input.
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
Writes grid and initial condition data to serial or parallel output files.
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.
logical, parameter chemistry
Chemistry modeling.
integer num_fluids
Number of different fluids present in the flow.
integer num_patches
Number of patches composing initial condition.
integer model_eqns
Multicomponent flow model.
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...
logical mhd
Magnetohydrodynamics.
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical function, public f_all_default(var_array)
Checks if ALL elements of a real(wp) array are of default value.
logical function, public f_approx_in_array(a, b, tol_input)
This procedure checks if the point numbers of wp belongs to another array are within tolerance.
logical elemental function, public f_approx_equal(a, b, tol_input)
This procedure checks if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Checks if a real(wp) variable is of default value.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
elemental subroutine, public s_int_to_str(i, res)
Converts an integer to its trimmed string representation.
Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing.