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