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 == 15) then
637# 57 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
638 call s_prohibit_abort("patch_icpp(i)%geometry == 15", "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 == dflt_int) then
643# 59 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
644 call s_prohibit_abort("patch_icpp(i)%geometry == dflt_int", "Invalid patch geometry number. "// "patch_icpp("//trim(istr)//")%geometry must be set.")
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
649 ! Constraints on the geometric initial condition patch parameters
650 if (patch_icpp(i)%geometry == 1) then
652 elseif (patch_icpp(i)%geometry == 2) then
654 elseif (patch_icpp(i)%geometry == 3) then
656 elseif (patch_icpp(i)%geometry == 4) then
658 elseif (patch_icpp(i)%geometry == 5) then
660 elseif (patch_icpp(i)%geometry == 8) then
662 elseif (patch_icpp(i)%geometry == 9) then
664 elseif (patch_icpp(i)%geometry == 10) then
666 elseif (patch_icpp(i)%geometry == 11) then
668 elseif (patch_icpp(i)%geometry == 12) then
670 elseif (patch_icpp(i)%geometry == 13) 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 == 9 .or. &
710 patch_icpp(i)%geometry == 10 .or. &
711 patch_icpp(i)%geometry == 11 .or. &
712 patch_icpp(i)%geometry == 12 .or. &
713 patch_icpp(i)%geometry == 13 .or. &
714 patch_icpp(i)%geometry == 14)) then
716 else
718 end if
719 end do
720
721 ! Constraints on flow variables initial condition patch parameters
722 do i = 1, num_patches
723 if (i <= num_patches) then
725 else
727 end if
728 end do
729
730 end subroutine s_check_patches
731
732 !> This subroutine checks the line segment patch input
733 !! @param patch_id Patch identifier
734 impure subroutine s_check_line_segment_patch_geometry(patch_id)
735
736 integer, intent(in) :: patch_id
737 call s_int_to_str(patch_id, istr)
738
739 if (n > 0) then
740# 149 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
741 call s_prohibit_abort("n > 0", "Line segment patch "//trim(istr)//": n must be zero")
742# 149 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
743 end if
744 if (patch_icpp(patch_id)%length_x <= 0._wp) then
745# 150 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
746 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Line segment patch "//trim(istr)//": length_x must be greater than zero")
747# 150 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
748 end if
749 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
750# 151 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
751 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Line segment patch "//trim(istr)//": x_centroid must be set")
752# 151 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
753 end if
754 if (cyl_coord) then
755# 152 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
756 call s_prohibit_abort("cyl_coord", "Line segment patch "//trim(istr)//": cyl_coord is not supported")
757# 152 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
758 end if
759
761
762 !> This subroutine checks the circle patch input
763 !! @param patch_id Patch identifier
764 impure subroutine s_check_circle_patch_geometry(patch_id)
765
766 integer, intent(in) :: patch_id
767 call s_int_to_str(patch_id, istr)
768
769 if (n == 0) then
770# 163 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
771 call s_prohibit_abort("n == 0", "Circle patch "//trim(istr)//": n must be zero")
772# 163 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
773 end if
774 if (p > 0) then
775# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
776 call s_prohibit_abort("p > 0", "Circle patch "//trim(istr)//": p must be greater than zero")
777# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
778 end if
779 if (patch_icpp(patch_id)%radius <= 0._wp) then
780# 165 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
781 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Circle patch "//trim(istr)//": radius must be greater than zero")
782# 165 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
783 end if
784 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
785# 166 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
786 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Circle patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Circle patch "//trim(istr)//": y_centroid must be set")
792# 167 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
793 end if
794
795 end subroutine s_check_circle_patch_geometry
796
797 !> This subroutine checks the rectangle patch input
798 !! @param patch_id Patch identifier
799 impure subroutine s_check_rectangle_patch_geometry(patch_id)
800
801 integer, intent(in) :: patch_id
802 call s_int_to_str(patch_id, istr)
803
804 if (n == 0) then
805# 178 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
806 call s_prohibit_abort("n == 0", "Rectangle patch "//trim(istr)//": n must be greater than zero")
807# 178 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
808 end if
809 if (p > 0) then
810# 179 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
811 call s_prohibit_abort("p > 0", "Rectangle patch "//trim(istr)//": p must be zero")
812# 179 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
813 end if
814 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
815# 180 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
816 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Rectangle patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Rectangle patch "//trim(istr)//": y_centroid must be set")
822# 181 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
823 end if
824 if (patch_icpp(patch_id)%length_x <= 0._wp) then
825# 182 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
826 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Rectangle patch "//trim(istr)//": length_x must be greater than zero")
827# 182 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
828 end if
829 if (patch_icpp(patch_id)%length_y <= 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_y <= 0._wp", "Rectangle patch "//trim(istr)//": length_y must be greater than zero")
832# 183 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
833 end if
834
836
837 !> This subroutine checks the line sweep patch input
838 !! @param patch_id Patch identifier
839 impure subroutine s_check_line_sweep_patch_geometry(patch_id)
840
841 integer, intent(in) :: patch_id
842 call s_int_to_str(patch_id, istr)
843
844 if (n == 0) then
845# 194 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
846 call s_prohibit_abort("n == 0", "Line sweep patch "//trim(istr)//": n must be greater than zero")
847# 194 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
848 end if
849 if (p > 0) then
850# 195 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
851 call s_prohibit_abort("p > 0", "Line sweep patch "//trim(istr)//": p must be zero")
852# 195 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
853 end if
854 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
855# 196 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
856 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Line sweep patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Line sweep patch "//trim(istr)//": y_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)%normal(1))) 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)%normal(1))", "Line sweep patch "//trim(istr)//": normal(1) 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(2))) 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(2))", "Line sweep patch "//trim(istr)//": normal(2) must be set")
872# 199 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
873 end if
874 if (.not. f_is_default(patch_icpp(patch_id)%normal(3))) then
875# 200 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
876 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")
877# 200 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
878 end if
879
881
882 !> This subroutine checks the ellipse patch input
883 !! @param patch_id Patch identifier
884 impure subroutine s_check_ellipse_patch_geometry(patch_id)
885
886 integer, intent(in) :: patch_id
887 call s_int_to_str(patch_id, istr)
888
889 if (n == 0) then
890# 211 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
891 call s_prohibit_abort("n == 0", "Ellipse patch "//trim(istr)//": n must be greater than zero")
892# 211 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
893 end if
894 if (p > 0) then
895# 212 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
896 call s_prohibit_abort("p > 0", "Ellipse patch "//trim(istr)//": p must be zero")
897# 212 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
898 end if
899 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
900# 213 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
901 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Ellipse patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Ellipse patch "//trim(istr)//": y_centroid must be set")
907# 214 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
908 end if
909 if (patch_icpp(patch_id)%radii(1) <= 0._wp) then
910# 215 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
911 call s_prohibit_abort("patch_icpp(patch_id)%radii(1) <= 0._wp", "Ellipse patch "//trim(istr)//": radii(1) must be greater than zero")
912# 215 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
913 end if
914 if (patch_icpp(patch_id)%radii(2) <= 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(2) <= 0._wp", "Ellipse patch "//trim(istr)//": radii(2) must be greater than zero")
917# 216 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
918 end if
919 if (.not. f_is_default(patch_icpp(patch_id)%radii(3))) then
920# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
921 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(3))", "Ellipse patch "//trim(istr)//": radii(3) must not be set")
922# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
923 end if
924
925 end subroutine s_check_ellipse_patch_geometry
926
927 !> This subroutine checks the model patch input
928 !! @param patch_id Patch identifier
930
931 integer, intent(in) :: patch_id
932 call s_int_to_str(patch_id, istr)
933
934 if (n == 0) then
935# 228 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
936 call s_prohibit_abort("n == 0", "Taylor Green vortex patch "//trim(istr)//": n must be greater than zero")
937# 228 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
938 end if
939 if (p > 0) then
940# 229 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
941 call s_prohibit_abort("p > 0", "Taylor Green vortex patch "//trim(istr)//": p must be zero")
942# 229 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
943 end if
944 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
945# 230 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
946 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Taylor Green vortex patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Taylor Green vortex patch "//trim(istr)//": y_centroid must be set")
952# 231 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
953 end if
954 if (patch_icpp(patch_id)%length_x <= 0._wp) then
955# 232 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
956 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")
957# 232 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
958 end if
959 if (patch_icpp(patch_id)%length_y <= 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_y <= 0._wp", "Taylor Green vortex patch "//trim(istr)//": length_y 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)%vel(2) <= 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)%vel(2) <= 0._wp", "Taylor Green vortex patch "//trim(istr)//": vel(2) must be greater than zero")
967# 234 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
968 end if
969
971
972 !> This subroutine checks the model patch input
973 !! @param patch_id Patch identifier
974 impure subroutine s_check_sphere_patch_geometry(patch_id)
975
976 integer, intent(in) :: patch_id
977 call s_int_to_str(patch_id, istr)
978
979 if (p == 0) then
980# 245 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
981 call s_prohibit_abort("p == 0", "Sphere patch "//trim(istr)//": p must be greater than zero")
982# 245 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
983 end if
984 if (patch_icpp(patch_id)%radius <= 0._wp) then
985# 246 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
986 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Sphere patch "//trim(istr)//": radius must be greater than zero")
987# 246 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
988 end if
989 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
990# 247 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
991 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Sphere patch "//trim(istr)//": x_centroid must be set")
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)%y_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)%y_centroid)", "Sphere patch "//trim(istr)//": y_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)%z_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)%z_centroid)", "Sphere patch "//trim(istr)//": z_centroid must be set")
1002# 249 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1003 end if
1004
1005 end subroutine s_check_sphere_patch_geometry
1006
1007 impure subroutine s_check_2d_modal_patch_geometry(patch_id)
1008 integer, intent(in) :: patch_id
1009
1010 call s_int_to_str(patch_id, istr)
1011
1012 if (n == 0) then
1013# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1014 call s_prohibit_abort("n == 0", "2D modal patch "//trim(istr)//": n must be greater than zero")
1015# 258 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1016 end if
1017 if (p > 0) then
1018# 259 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1019 call s_prohibit_abort("p > 0", "2D modal patch "//trim(istr)//": p must be zero")
1020# 259 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1021 end if
1022 if (patch_icpp(patch_id)%radius <= 0._wp) then
1023# 260 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1024 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "2D modal patch "//trim(istr)//": radius must be greater than zero")
1025# 260 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1026 end if
1027 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1028# 261 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1029 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "2D modal patch "//trim(istr)//": x_centroid must be set")
1030# 261 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1031 end if
1032 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1033# 262 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1034 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "2D modal patch "//trim(istr)//": y_centroid must be set")
1035# 262 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1036 end if
1037
1038 end subroutine s_check_2d_modal_patch_geometry
1039
1041 integer, intent(in) :: patch_id
1042
1043 call s_int_to_str(patch_id, istr)
1044
1045 if (p == 0) then
1046# 271 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1047 call s_prohibit_abort("p == 0", "Spherical harmonic patch "//trim(istr)//": p must be greater than zero")
1048# 271 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1049 end if
1050 if (patch_icpp(patch_id)%radius <= 0._wp) then
1051# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1052 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Spherical harmonic patch "//trim(istr)//": radius must be greater than zero")
1053# 272 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1054 end if
1055 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1056# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1057 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Spherical harmonic patch "//trim(istr)//": x_centroid must be set")
1058# 273 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1059 end if
1060 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1061# 274 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1062 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Spherical harmonic patch "//trim(istr)//": y_centroid must be set")
1063# 274 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1064 end if
1065 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1066# 275 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1067 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Spherical harmonic patch "//trim(istr)//": z_centroid must be set")
1068# 275 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1069 end if
1070
1072
1073 !> This subroutine checks the model patch input
1074 !! @param patch_id Patch identifier
1075 impure subroutine s_check_cuboid_patch_geometry(patch_id)
1076
1077 ! Patch identifier
1078 integer, intent(in) :: patch_id
1079 call s_int_to_str(patch_id, istr)
1080
1081 if (p == 0) then
1082# 287 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1083 call s_prohibit_abort("p == 0", "Cuboid patch "//trim(istr)//": p must be greater than zero")
1084# 287 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1085 end if
1086 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1087# 288 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1088 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Cuboid patch "//trim(istr)//": x_centroid must be set")
1089# 288 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1090 end if
1091 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1092# 289 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1093 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Cuboid patch "//trim(istr)//": y_centroid must be set")
1094# 289 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1095 end if
1096 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1097# 290 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1098 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Cuboid patch "//trim(istr)//": z_centroid must be set")
1099# 290 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1100 end if
1101 if (patch_icpp(patch_id)%length_x <= 0._wp) then
1102# 291 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1103 call s_prohibit_abort("patch_icpp(patch_id)%length_x <= 0._wp", "Cuboid patch "//trim(istr)//": length_x must be greater than zero")
1104# 291 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1105 end if
1106 if (patch_icpp(patch_id)%length_y <= 0._wp) then
1107# 292 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1108 call s_prohibit_abort("patch_icpp(patch_id)%length_y <= 0._wp", "Cuboid patch "//trim(istr)//": length_y must be greater than zero")
1109# 292 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1110 end if
1111 if (patch_icpp(patch_id)%length_z <= 0._wp) then
1112# 293 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1113 call s_prohibit_abort("patch_icpp(patch_id)%length_z <= 0._wp", "Cuboid patch "//trim(istr)//": length_z must be greater than zero")
1114# 293 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1115 end if
1116
1117 end subroutine s_check_cuboid_patch_geometry
1118
1119 !> This subroutine checks the model patch input
1120 !! @param patch_id Patch identifier
1121 impure subroutine s_check_cylinder_patch_geometry(patch_id)
1122
1123 ! Patch identifier
1124 integer, intent(in) :: patch_id
1125 call s_int_to_str(patch_id, istr)
1126
1127 if (p == 0) then
1128# 305 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1129 call s_prohibit_abort("p == 0", "Cylinder patch "//trim(istr)//": p must be greater than zero")
1130# 305 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1131 end if
1132 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1133# 306 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1134 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Cylinder patch "//trim(istr)//": x_centroid must be set")
1135# 306 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1136 end if
1137 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1138# 307 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1139 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Cylinder patch "//trim(istr)//": y_centroid must be set")
1140# 307 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1141 end if
1142 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1143# 308 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1144 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Cylinder patch "//trim(istr)//": z_centroid must be set")
1145# 308 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1146 end if
1147 if (patch_icpp(patch_id)%radius <= 0._wp) then
1148# 309 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1149 call s_prohibit_abort("patch_icpp(patch_id)%radius <= 0._wp", "Cylinder patch "//trim(istr)//": radius must be greater than zero")
1150# 309 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1151 end if
1152
1153 ! Check if exactly one length is defined
1154 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
1155# 312 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1156 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")
1157# 312 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1158 end if
1159# 317 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1160
1161 ! Ensure the defined length is positive
1162 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
1163# 319 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1164 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")
1165# 319 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1166 end if
1167# 324 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1168
1169 end subroutine s_check_cylinder_patch_geometry
1170
1171 !> This subroutine checks the model patch input
1172 !! @param patch_id Patch identifier
1173 impure subroutine s_check_plane_sweep_patch_geometry(patch_id)
1174
1175 ! Patch identifier
1176 integer, intent(in) :: patch_id
1177 call s_int_to_str(patch_id, istr)
1178
1179 if (p == 0) then
1180# 335 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1181 call s_prohibit_abort("p == 0", "Plane sweep patch "//trim(istr)//": p must be greater than zero")
1182# 335 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1183 end if
1184 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1185# 336 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1186 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Plane sweep patch "//trim(istr)//": x_centroid must be set")
1187# 336 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1188 end if
1189 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1190# 337 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1191 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Plane sweep patch "//trim(istr)//": y_centroid must be set")
1192# 337 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1193 end if
1194 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1195# 338 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1196 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Plane sweep patch "//trim(istr)//": z_centroid must be set")
1197# 338 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1198 end if
1199 if (f_is_default(patch_icpp(patch_id)%normal(1))) then
1200# 339 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1201 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(1))", "Plane sweep patch "//trim(istr)//": normal(1) must be set")
1202# 339 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1203 end if
1204 if (f_is_default(patch_icpp(patch_id)%normal(2))) then
1205# 340 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1206 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(2))", "Plane sweep patch "//trim(istr)//": normal(2) must be set")
1207# 340 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1208 end if
1209 if (f_is_default(patch_icpp(patch_id)%normal(3))) then
1210# 341 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1211 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%normal(3))", "Plane sweep patch "//trim(istr)//": normal(3) must be set")
1212# 341 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1213 end if
1214
1216
1217 !> This subroutine checks the model patch input
1218 !! @param patch_id Patch identifier
1219 impure subroutine s_check_ellipsoid_patch_geometry(patch_id)
1220
1221 integer, intent(in) :: patch_id
1222 call s_int_to_str(patch_id, istr)
1223
1224 if (p == 0) then
1225# 352 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1226 call s_prohibit_abort("p == 0", "Ellipsoid patch "//trim(istr)//": p must be greater than zero")
1227# 352 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1228 end if
1229 if (f_is_default(patch_icpp(patch_id)%x_centroid)) then
1230# 353 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1231 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%x_centroid)", "Ellipsoid patch "//trim(istr)//": x_centroid must be set")
1232# 353 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1233 end if
1234 if (f_is_default(patch_icpp(patch_id)%y_centroid)) then
1235# 354 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1236 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%y_centroid)", "Ellipsoid patch "//trim(istr)//": y_centroid must be set")
1237# 354 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1238 end if
1239 if (f_is_default(patch_icpp(patch_id)%z_centroid)) then
1240# 355 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1241 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%z_centroid)", "Ellipsoid patch "//trim(istr)//": z_centroid must be set")
1242# 355 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1243 end if
1244 if (patch_icpp(patch_id)%radii(1) <= 0._wp) then
1245# 356 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1246 call s_prohibit_abort("patch_icpp(patch_id)%radii(1) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(1) must be greater than zero")
1247# 356 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1248 end if
1249 if (patch_icpp(patch_id)%radii(2) <= 0._wp) then
1250# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1251 call s_prohibit_abort("patch_icpp(patch_id)%radii(2) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(2) must be greater than zero")
1252# 357 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1253 end if
1254 if (patch_icpp(patch_id)%radii(3) <= 0._wp) then
1255# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1256 call s_prohibit_abort("patch_icpp(patch_id)%radii(3) <= 0._wp", "Ellipsoid patch "//trim(istr)//": radii(3) must be greater than zero")
1257# 358 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1258 end if
1259
1261
1262 !!> This subroutine verifies that the geometric parameters of
1263 !! the inactive patch remain unaltered by the user inputs.
1264 !! @param patch_id Patch identifier
1265 impure subroutine s_check_inactive_patch_geometry(patch_id)
1266
1267 integer, intent(in) :: patch_id
1268 call s_int_to_str(patch_id, istr)
1269
1270 if (.not. f_is_default(patch_icpp(patch_id)%x_centroid)) then
1271# 370 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1272 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%x_centroid)", "Inactive patch "//trim(istr)//": x_centroid must not be set")
1273# 370 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1274 end if
1275 if (.not. f_is_default(patch_icpp(patch_id)%y_centroid)) then
1276# 371 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1277 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%y_centroid)", "Inactive patch "//trim(istr)//": y_centroid must not be set")
1278# 371 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1279 end if
1280 if (.not. f_is_default(patch_icpp(patch_id)%z_centroid)) then
1281# 372 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1282 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%z_centroid)", "Inactive patch "//trim(istr)//": z_centroid must not be set")
1283# 372 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1284 end if
1285 if (.not. f_is_default(patch_icpp(patch_id)%length_x)) then
1286# 373 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1287 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_x)", "Inactive patch "//trim(istr)//": length_x must not be set")
1288# 373 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1289 end if
1290 if (.not. f_is_default(patch_icpp(patch_id)%length_y)) then
1291# 374 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1292 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_y)", "Inactive patch "//trim(istr)//": length_y must not be set")
1293# 374 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1294 end if
1295 if (.not. f_is_default(patch_icpp(patch_id)%length_z)) then
1296# 375 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1297 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%length_z)", "Inactive patch "//trim(istr)//": length_z must not be set")
1298# 375 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1299 end if
1300 if (.not. f_is_default(patch_icpp(patch_id)%radius)) then
1301# 376 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1302 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radius)", "Inactive patch "//trim(istr)//": radius must not be set")
1303# 376 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1304 end if
1305 if (.not. f_is_default(patch_icpp(patch_id)%epsilon)) then
1306# 377 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1307 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%epsilon)", "Inactive patch "//trim(istr)//": epsilon must not be set")
1308# 377 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1309 end if
1310 if (.not. f_is_default(patch_icpp(patch_id)%beta)) then
1311# 378 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1312 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%beta)", "Inactive patch "//trim(istr)//": beta must not be set")
1313# 378 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1314 end if
1315 if (.not. f_is_default(patch_icpp(patch_id)%normal(1))) then
1316# 379 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1317 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(1))", "Inactive patch "//trim(istr)//": normal(1) must not be set")
1318# 379 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1319 end if
1320 if (.not. f_is_default(patch_icpp(patch_id)%normal(2))) then
1321# 380 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1322 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(2))", "Inactive patch "//trim(istr)//": normal(2) must not be set")
1323# 380 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1324 end if
1325 if (.not. f_is_default(patch_icpp(patch_id)%normal(3))) then
1326# 381 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1327 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%normal(3))", "Inactive patch "//trim(istr)//": normal(3) must not be set")
1328# 381 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1329 end if
1330 if (.not. f_is_default(patch_icpp(patch_id)%radii(1))) then
1331# 382 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1332 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(1))", "Inactive patch "//trim(istr)//": radii(1) must not be set")
1333# 382 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1334 end if
1335 if (.not. f_is_default(patch_icpp(patch_id)%radii(2))) then
1336# 383 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1337 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(2))", "Inactive patch "//trim(istr)//": radii(2) must not be set")
1338# 383 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1339 end if
1340 if (.not. f_is_default(patch_icpp(patch_id)%radii(3))) then
1341# 384 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1342 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%radii(3))", "Inactive patch "//trim(istr)//": radii(3) must not be set")
1343# 384 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1344 end if
1345
1346 end subroutine s_check_inactive_patch_geometry
1347
1348 !> This subroutine verifies the active patch's right to overwrite the preceding patches
1349 !! @param patch_id Patch identifier
1350 impure subroutine s_check_active_patch_alteration_rights(patch_id)
1351
1352 integer, intent(in) :: patch_id
1353 call s_int_to_str(patch_id, istr)
1354
1355 if (.not. patch_icpp(patch_id)%alter_patch(0)) then
1356# 395 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1357 call s_prohibit_abort(.not." patch_icpp(patch_id)%alter_patch(0)", "Patch "//trim(istr)//": alter_patch(0) must be true")
1358# 395 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1359 end if
1360 if (any(patch_icpp(patch_id)%alter_patch(patch_id:))) then
1361# 396 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1362 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")
1363# 396 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1364 end if
1365# 398 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1366
1368
1369 !> This subroutine verifies that inactive patches cannot overwrite other patches
1370 !! @param patch_id Patch identifier
1372
1373 ! Patch identifier
1374 integer, intent(in) :: patch_id
1375 call s_int_to_str(patch_id, istr)
1376
1377 if (.not. patch_icpp(patch_id)%alter_patch(0)) then
1378# 409 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1379 call s_prohibit_abort(.not." patch_icpp(patch_id)%alter_patch(0)", "Inactive patch "//trim(istr)//": cannot have alter_patch(0) altered")
1380# 409 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1381 end if
1382 if (any(patch_icpp(patch_id)%alter_patch(1:))) then
1383# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1384 call s_prohibit_abort("any(patch_icpp(patch_id)%alter_patch(1:))", "Inactive patch "//trim(istr)//": cannot have any alter_patch(i) enabled")
1385# 410 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1386 end if
1387
1389
1390 !> This subroutine checks the smoothing parameters
1391 !! @param patch_id Patch identifier
1392 impure subroutine s_check_supported_patch_smoothing(patch_id)
1393
1394 integer, intent(in) :: patch_id
1395 call s_int_to_str(patch_id, istr)
1396
1397 if (patch_icpp(patch_id)%smoothen) then
1398 if (patch_icpp(patch_id)%smooth_patch_id >= patch_id) 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_patch_id >= patch_id", "Smoothen enabled. Patch "//trim(istr)//": smooth_patch_id must be less than patch_id")
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 if (patch_icpp(patch_id)%smooth_patch_id == 0) then
1405# 424 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1406 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")
1407# 424 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1408 end if
1409# 426 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1410 if (patch_icpp(patch_id)%smooth_coeff <= 0._wp) then
1411# 426 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1412 call s_prohibit_abort("patch_icpp(patch_id)%smooth_coeff <= 0._wp", "Smoothen enabled. Patch "//trim(istr)//": smooth_coeff must be greater than zero")
1413# 426 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1414 end if
1415# 428 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1416 else
1417 if (patch_icpp(patch_id)%smooth_patch_id /= patch_id) then
1418# 429 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1419 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")
1420# 429 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1421 end if
1422# 431 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1423 if (.not. f_is_default(patch_icpp(patch_id)%smooth_coeff)) then
1424# 431 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1425 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")
1426# 431 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1427 end if
1428# 433 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1429 end if
1430
1432
1433 !> This subroutine verifies that inactive patches cannot be smoothed
1434 !! @param patch_id Patch identifier
1435 impure subroutine s_check_unsupported_patch_smoothing(patch_id)
1436
1437 ! Patch identifier
1438 integer, intent(in) :: patch_id
1439 call s_int_to_str(patch_id, istr)
1440
1441 if (patch_icpp(patch_id)%smoothen) then
1442# 445 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1443 call s_prohibit_abort("patch_icpp(patch_id)%smoothen", "Inactive patch "//trim(istr)//": cannot have smoothen enabled")
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 if (patch_icpp(patch_id)%smooth_patch_id /= patch_id) then
1448# 447 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1449 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")
1450# 447 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1451 end if
1452# 449 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1453 if (.not. f_is_default(patch_icpp(patch_id)%smooth_coeff)) then
1454# 449 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1455 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%smooth_coeff)", "Inactive patch "//trim(istr)//": smooth_coeff must not be set")
1456# 449 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1457 end if
1458# 451 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1459
1461
1462 !> This subroutine checks the primitive variables
1463 !! @param patch_id Patch identifier
1465
1466 integer, intent(in) :: patch_id
1467
1468 logical, dimension(3) :: is_set_b
1469
1470 call s_int_to_str(patch_id, istr)
1471
1472 if (f_is_default(patch_icpp(patch_id)%vel(1))) then
1473# 464 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1474 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%vel(1))", "Patch "//trim(istr)//": vel(1) must be set")
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 (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
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."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")
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 (n > 0 .and. f_is_default(patch_icpp(patch_id)%vel(2))) then
1485# 468 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1486 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")
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 (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
1491# 470 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1492 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")
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 (p > 0 .and. f_is_default(patch_icpp(patch_id)%vel(3))) then
1497# 472 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1498 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")
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 (mhd .and. (f_is_default(patch_icpp(patch_id)%vel(2)) .or. f_is_default(patch_icpp(patch_id)%vel(3)))) then
1503# 474 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1504 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")
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)%rho <= 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)%rho <= 0._wp", "Patch "//trim(istr)//": rho must be greater than 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 (model_eqns == 1 .and. patch_icpp(patch_id)%gamma <= 0._wp) then
1515# 478 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1516 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")
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 == 1 .and. patch_icpp(patch_id)%pi_inf < 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 == 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")
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 if (patch_icpp(patch_id)%geometry == 5 .and. patch_icpp(patch_id)%pi_inf > 0) then
1527# 482 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1528 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")
1529# 482 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1530 end if
1531# 484 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1532 if (model_eqns == 2 .and. any(patch_icpp(patch_id)%alpha_rho(1:num_fluids) < 0._wp)) then
1533# 484 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1534 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")
1535# 484 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1536 end if
1537# 486 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1538
1539 is_set_b(1) = .not. f_is_default(patch_icpp(patch_id)%Bx)
1540 is_set_b(2) = .not. f_is_default(patch_icpp(patch_id)%By)
1541 is_set_b(3) = .not. f_is_default(patch_icpp(patch_id)%Bz)
1542
1543 if (.not. mhd .and. any(is_set_b)) then
1544# 491 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1545 call s_prohibit_abort(.not..and." mhd any(is_set_B)", "Bx, By, and Bz must not be set if MHD is not enabled")
1546# 491 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1547 end if
1548# 493 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1549 if (mhd .and. n == 0 .and. is_set_b(1)) then
1550# 493 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1551 call s_prohibit_abort(.and..and."mhd n == 0 is_set_B(1)", "Bx must not be set in 1D MHD simulations")
1552# 493 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1553 end if
1554 if (mhd .and. n > 0 .and. .not. is_set_b(1)) then
1555# 494 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1556 call s_prohibit_abort(.and..and..not."mhd n > 0 is_set_B(1)", "Bx must be set in 2D/3D MHD simulations")
1557# 494 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1558 end if
1559 if (mhd .and. .not. (is_set_b(2) .and. is_set_b(3))) then
1560# 495 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1561 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")
1562# 495 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1563 end if
1564
1565 if (model_eqns == 2 .and. num_fluids < num_fluids_max) then
1566 if (.not. f_all_default(patch_icpp(patch_id)%alpha_rho(num_fluids + 1:))) then
1567# 498 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1568 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")
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 if (.not. f_all_default(patch_icpp(patch_id)%alpha(num_fluids + 1:))) then
1573# 500 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1574 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")
1575# 500 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1576 end if
1577# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1578 if (f_is_default(patch_icpp(patch_id)%alpha(num_fluids))) then
1579# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1580 call s_prohibit_abort("f_is_default(patch_icpp(patch_id)%alpha(num_fluids))", "Patch "//trim(istr)//": alpha(num_fluids) must be set")
1581# 502 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1582 end if
1583# 504 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1584 end if
1585
1586 if (chemistry) then
1587 !@:ASSERT(all(patch_icpp(patch_id)%Y(1:num_species) >= 0._wp), "Patch " // trim(iStr) // ".")
1588 !@:ASSERT(any(patch_icpp(patch_id)%Y(1:num_species) > verysmall), "Patch " // trim(iStr) // ".")
1589 end if
1590
1592
1593 !> This subroutine verifies that the primitive variables
1594 !! associated with the given inactive patch remain unaltered
1595 !! by the user inputs.
1596 !! @param patch_id Patch identifier
1598
1599 integer, intent(in) :: patch_id
1600 call s_int_to_str(patch_id, istr)
1601
1602 if (.not. f_all_default(patch_icpp(patch_id)%alpha_rho)) 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)%alpha_rho)", "Inactive patch "//trim(istr)//": alpha_rho 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)%rho)) 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)%rho)", "Inactive patch "//trim(istr)//": rho 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)%vel)) 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)%vel)", "Inactive patch "//trim(istr)//": vel 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)%pres)) 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)%pres)", "Inactive patch "//trim(istr)//": pres 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_all_default(patch_icpp(patch_id)%alpha)) then
1627# 530 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1628 call s_prohibit_abort(.not." f_all_default(patch_icpp(patch_id)%alpha)", "Inactive patch "//trim(istr)//": alpha 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 if (.not. f_is_default(patch_icpp(patch_id)%gamma)) then
1633# 532 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1634 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%gamma)", "Inactive patch "//trim(istr)//": gamma must not be set")
1635# 532 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1636 end if
1637# 534 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1638 if (.not. f_is_default(patch_icpp(patch_id)%pi_inf)) then
1639# 534 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1640 call s_prohibit_abort(.not." f_is_default(patch_icpp(patch_id)%pi_inf)", "Inactive patch "//trim(istr)//": pi_inf must not be set")
1641# 534 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1642 end if
1643# 536 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1644
1646
1647 !> @brief Verifies that the model file referenced by the given patch exists on disk.
1648 impure subroutine s_check_model_geometry(patch_id)
1649
1650 integer, intent(in) :: patch_id
1651
1652 logical :: file_exists
1653
1654 inquire (file=patch_icpp(patch_id)%model_filepath, exist=file_exists)
1655
1656 if (.not. file_exists) then
1657# 548 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1658 call s_prohibit_abort(.not." file_exists", "Model file "//trim(patch_icpp(patch_id)%model_filepath)// " requested by patch "//trim(istr)//" does not exist")
1659# 548 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1660 end if
1661# 550 "/home/runner/work/MFC/MFC/src/pre_process/m_check_patches.fpp"
1662
1663 end subroutine s_check_model_geometry
1664
1665end 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_3d_spherical_harmonic_patch_geometry(patch_id)
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_2d_modal_patch_geometry(patch_id)
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_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 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.