MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_compute_cbc.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
2!>
3!! @file
4!! @brief CBC computation module
5# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
6! This file exists so that Fypp can be run without generating case.fpp files for
7! each target. This is useful when generating documentation, for example. This
8! should also let MFC be built with CMake directly, without invoking mfc.sh.
9
10! For pre-process.
11# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
12
13! For moving immersed boundaries in simulation
14# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 5 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp" 2
16# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
17# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
19# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32
33# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34
35# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36
37# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38
39# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40
41# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42! New line at end of file is required for FYPP
43# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
44# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
45# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
46# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59
60# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61
62# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63
64# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65
66# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67
68# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69! New line at end of file is required for FYPP
70# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
71
72# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77
78# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79
80# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113
114# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115
116# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117
118# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119
120# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121
122# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138
139# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140
141# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142
143# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144
145# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146
147# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148! New line at end of file is required for FYPP
149# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
150# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
151# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
152# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157
158# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163
164# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165
166# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167
168# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169
170# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171
172# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173
174# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175! New line at end of file is required for FYPP
176# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
177
178# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179
180# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181
182# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183
184# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185
186# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187
188# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223
224# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225
226# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227
228# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229
230# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231
232# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233! New line at end of file is required for FYPP
234# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
235
236# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237
238# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241
242# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243
244# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249
250# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255
256# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261
262# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265
266# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267
268# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271
272# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273
274# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276! New line at end of file is required for FYPP
277# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
278
279# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
280
281! Caution:
282! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
283! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
284! For an example see misc/nvidia_uvm/bind.sh.
285# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286
287# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288
289# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290
291# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
292
293# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
294
295# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
296
297# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
298
299# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300! New line at end of file is required for FYPP
301# 6 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp" 2
302
303!> @brief Characteristic boundary condition (CBC) computations for subsonic inflow, outflow, and slip walls
306 implicit none
307
308 private; public :: s_compute_slip_wall_l, &
316
317contains
318 !> Base L1 calculation
319 function f_base_l1(lambda, rho, c, dpres_ds, dvel_ds) result(L1)
320
321# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
322#if MFC_OpenACC
323# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
324!$acc routine seq
325# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
326#elif MFC_OpenMP
327# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
328
329# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
330
331# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
332!$omp declare target device_type(any)
333# 24 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
334#endif
335 real(wp), dimension(3), intent(in) :: lambda
336 real(wp), intent(in) :: rho, c, dpres_ds
337# 30 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
338 real(wp), dimension(num_dims), intent(in) :: dvel_ds
339# 32 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
340 real(wp) :: l1
341 l1 = lambda(1)*(dpres_ds - rho*c*dvel_ds(dir_idx(1)))
342 end function f_base_l1
343
344 !> Fill density L variables
345 subroutine s_fill_density_l(L, lambda_factor, lambda2, c, mf, dalpha_rho_ds, dpres_ds)
346
347# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
348#if MFC_OpenACC
349# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
350!$acc routine seq
351# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
352#elif MFC_OpenMP
353# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
354
355# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
356
357# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
358!$omp declare target device_type(any)
359# 38 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
360#endif
361# 42 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
362 real(wp), dimension(sys_size), intent(inout) :: L
363# 44 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
364# 47 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
365 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
366# 49 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
367 real(wp), intent(in) :: lambda_factor, lambda2, c
368 real(wp), intent(in) :: dpres_ds
369 integer :: i
370
371 ! $:GPU_LOOP(parallelism='[seq]')
372 do i = 2, momxb
373 l(i) = lambda_factor*lambda2*(c*c*dalpha_rho_ds(i - 1) - mf(i - 1)*dpres_ds)
374 end do
375 end subroutine s_fill_density_l
376
377 !> Fill velocity L variables
378 subroutine s_fill_velocity_l(L, lambda_factor, lambda2, dvel_ds)
379
380# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
381#if MFC_OpenACC
382# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
383!$acc routine seq
384# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
385#elif MFC_OpenMP
386# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
387
388# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
389
390# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
391!$omp declare target device_type(any)
392# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
393#endif
394# 65 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
395 real(wp), dimension(sys_size), intent(inout) :: L
396# 67 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
397# 70 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
398 real(wp), dimension(num_dims), intent(in) :: dvel_ds
399# 72 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
400 real(wp), intent(in) :: lambda_factor, lambda2
401 integer :: i
402
403 ! $:GPU_LOOP(parallelism='[seq]')
404 do i = momxb + 1, momxe
405 l(i) = lambda_factor*lambda2*dvel_ds(dir_idx(i - contxe))
406 end do
407 end subroutine s_fill_velocity_l
408
409 !> Fill advection L variables
410 subroutine s_fill_advection_l(L, lambda_factor, lambda2, dadv_ds)
411
412# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
413#if MFC_OpenACC
414# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
415!$acc routine seq
416# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
417#elif MFC_OpenMP
418# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
419
420# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
421
422# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
423!$omp declare target device_type(any)
424# 83 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
425#endif
426# 87 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
427 real(wp), dimension(sys_size), intent(inout) :: L
428# 89 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
429# 92 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
430 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
431# 94 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
432 real(wp), intent(in) :: lambda_factor, lambda2
433 integer :: i
434
435 ! $:GPU_LOOP(parallelism='[seq]')
436 do i = e_idx, advxe - 1
437 l(i) = lambda_factor*lambda2*dadv_ds(i - momxe)
438 end do
439 end subroutine s_fill_advection_l
440
441 !> Fill chemistry L variables
442 subroutine s_fill_chemistry_l(L, lambda_factor, lambda2, dYs_ds)
443
444# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
445#if MFC_OpenACC
446# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
447!$acc routine seq
448# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
449#elif MFC_OpenMP
450# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
451
452# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
453
454# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
455!$omp declare target device_type(any)
456# 105 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
457#endif
458# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
459 real(wp), dimension(sys_size), intent(inout) :: L
460# 111 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
461# 114 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
462 real(wp), dimension(num_species), intent(in) :: dYs_ds
463# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
464 real(wp), intent(in) :: lambda_factor, lambda2
465 integer :: i
466
467 if (.not. chemistry) return
468
469 ! $:GPU_LOOP(parallelism='[seq]')
470 do i = chemxb, chemxe
471 l(i) = lambda_factor*lambda2*dys_ds(i - chemxb + 1)
472 end do
473 end subroutine s_fill_chemistry_l
474
475 !> Slip wall CBC (Thompson 1990, pg. 451)
476 subroutine s_compute_slip_wall_l(lambda, L, rho, c, dpres_ds, dvel_ds)
477
478# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
479#ifdef _CRAYFTN
480# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
481#if MFC_OpenACC
482# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
483!$acc routine seq
484# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
485#elif MFC_OpenMP
486# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
487
488# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
489
490# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
491!$omp declare target device_type(any)
492# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
493#else
494# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
495!DIR$ INLINEALWAYS s_compute_slip_wall_L
496# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
497#endif
498# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
499#elif MFC_OpenACC
500# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
501!$acc routine seq
502# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
503#elif MFC_OpenMP
504# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
505
506# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
507
508# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
509!$omp declare target device_type(any)
510# 129 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
511#endif
512# 131 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
513
514 real(wp), dimension(3), intent(in) :: lambda
515# 136 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
516 real(wp), dimension(sys_size), intent(inout) :: l
517# 138 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
518# 141 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
519 real(wp), dimension(num_dims), intent(in) :: dvel_ds
520# 143 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
521 real(wp), intent(in) :: rho, c, dpres_ds
522 integer :: i
523
524 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
525 l(2:advxe - 1) = 0._wp
526 l(advxe) = l(1)
527 end subroutine s_compute_slip_wall_l
528
529 !> Nonreflecting subsonic buffer CBC (Thompson 1987, pg. 13)
530 subroutine s_compute_nonreflecting_subsonic_buffer_l(lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dYs_ds)
531
532# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
533#ifdef _CRAYFTN
534# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
535#if MFC_OpenACC
536# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
537!$acc routine seq
538# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
539#elif MFC_OpenMP
540# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
541
542# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
543
544# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
545!$omp declare target device_type(any)
546# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
547#else
548# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
549!DIR$ INLINEALWAYS s_compute_nonreflecting_subsonic_buffer_L
550# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
551#endif
552# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
553#elif MFC_OpenACC
554# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
555!$acc routine seq
556# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
557#elif MFC_OpenMP
558# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
559
560# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
561
562# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
563!$omp declare target device_type(any)
564# 153 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
565#endif
566# 155 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
567
568 real(wp), dimension(3), intent(in) :: lambda
569# 160 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
570 real(wp), dimension(sys_size), intent(inout) :: l
571# 162 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
572# 168 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
573 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
574 real(wp), dimension(num_dims), intent(in) :: dvel_ds
575 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
576 real(wp), dimension(num_species), intent(in) :: dys_ds
577# 173 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
578 real(wp), intent(in) :: rho, c
579 real(wp), intent(in) :: dpres_ds
580
581 real(wp) :: lambda_factor
582
583 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(1)))
584 l(1) = lambda_factor*lambda(1)*(dpres_ds - rho*c*dvel_ds(dir_idx(1)))
585
586 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(2)))
587 call s_fill_density_l(l, lambda_factor, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
588 call s_fill_velocity_l(l, lambda_factor, lambda(2), dvel_ds)
589 call s_fill_advection_l(l, lambda_factor, lambda(2), dadv_ds)
590 call s_fill_chemistry_l(l, lambda_factor, lambda(2), dys_ds)
591
592 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(3)))
593 l(advxe) = lambda_factor*lambda(3)*(dpres_ds + rho*c*dvel_ds(dir_idx(1)))
595
596 !> Nonreflecting subsonic inflow CBC (Thompson 1990, pg. 455)
597 subroutine s_compute_nonreflecting_subsonic_inflow_l(lambda, L, rho, c, dpres_ds, dvel_ds)
598
599# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
600#ifdef _CRAYFTN
601# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
602#if MFC_OpenACC
603# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
604!$acc routine seq
605# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
606#elif MFC_OpenMP
607# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
608
609# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
610
611# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
612!$omp declare target device_type(any)
613# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
614#else
615# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
616!DIR$ INLINEALWAYS s_compute_nonreflecting_subsonic_inflow_L
617# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
618#endif
619# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
620#elif MFC_OpenACC
621# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
622!$acc routine seq
623# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
624#elif MFC_OpenMP
625# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
626
627# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
628
629# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
630!$omp declare target device_type(any)
631# 193 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
632#endif
633# 195 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
634
635 real(wp), dimension(3), intent(in) :: lambda
636# 200 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
637 real(wp), dimension(sys_size), intent(inout) :: l
638# 202 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
639# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
640 real(wp), dimension(num_dims), intent(in) :: dvel_ds
641# 207 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
642 real(wp), intent(in) :: rho, c, dpres_ds
643
644 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
645 l(2:advxe) = 0._wp
646 if (chemistry) l(chemxb:chemxe) = 0._wp
648
649 !> Nonreflecting subsonic outflow CBC (Thompson 1990, pg. 454)
650 subroutine s_compute_nonreflecting_subsonic_outflow_l(lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dYs_ds)
651
652# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
653#ifdef _CRAYFTN
654# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
655#if MFC_OpenACC
656# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
657!$acc routine seq
658# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
659#elif MFC_OpenMP
660# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
661
662# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
663
664# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
665!$omp declare target device_type(any)
666# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
667#else
668# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
669!DIR$ INLINEALWAYS s_compute_nonreflecting_subsonic_outflow_L
670# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
671#endif
672# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
673#elif MFC_OpenACC
674# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
675!$acc routine seq
676# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
677#elif MFC_OpenMP
678# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
679
680# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
681
682# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
683!$omp declare target device_type(any)
684# 216 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
685#endif
686# 218 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
687
688 real(wp), dimension(3), intent(in) :: lambda
689# 223 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
690 real(wp), dimension(sys_size), intent(inout) :: l
691# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
692# 231 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
693 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
694 real(wp), dimension(num_dims), intent(in) :: dvel_ds
695 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
696 real(wp), dimension(num_species), intent(in) :: dys_ds
697# 236 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
698 real(wp), intent(in) :: rho, c
699 real(wp), intent(in) :: dpres_ds
700
701 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
702 call s_fill_density_l(l, 1._wp, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
703 call s_fill_velocity_l(l, 1._wp, lambda(2), dvel_ds)
704 call s_fill_advection_l(l, 1._wp, lambda(2), dadv_ds)
705 call s_fill_chemistry_l(l, 1._wp, lambda(2), dys_ds)
706 l(advxe) = 0._wp
708
709 !> Force-free subsonic outflow CBC (Thompson 1990, pg. 454)
710 subroutine s_compute_force_free_subsonic_outflow_l(lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds)
711
712# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
713#ifdef _CRAYFTN
714# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
715#if MFC_OpenACC
716# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
717!$acc routine seq
718# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
719#elif MFC_OpenMP
720# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
721
722# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
723
724# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
725!$omp declare target device_type(any)
726# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
727#else
728# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
729!DIR$ INLINEALWAYS s_compute_force_free_subsonic_outflow_L
730# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
731#endif
732# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
733#elif MFC_OpenACC
734# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
735!$acc routine seq
736# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
737#elif MFC_OpenMP
738# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
739
740# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
741
742# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
743!$omp declare target device_type(any)
744# 249 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
745#endif
746# 251 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
747
748 real(wp), dimension(3), intent(in) :: lambda
749# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
750 real(wp), dimension(sys_size), intent(inout) :: l
751# 258 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
752# 263 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
753 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
754 real(wp), dimension(num_dims), intent(in) :: dvel_ds
755 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
756# 267 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
757 real(wp), intent(in) :: rho, c
758 real(wp), intent(in) :: dpres_ds
759
760 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
761 call s_fill_density_l(l, 1._wp, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
762 call s_fill_velocity_l(l, 1._wp, lambda(2), dvel_ds)
763 call s_fill_advection_l(l, 1._wp, lambda(2), dadv_ds)
764 l(advxe) = l(1) + 2._wp*rho*c*lambda(2)*dvel_ds(dir_idx(1))
766
767 !> Constant pressure subsonic outflow CBC (Thompson 1990, pg. 455)
768 subroutine s_compute_constant_pressure_subsonic_outflow_l(lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds)
769
770# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
771#ifdef _CRAYFTN
772# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
773#if MFC_OpenACC
774# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
775!$acc routine seq
776# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
777#elif MFC_OpenMP
778# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
779
780# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
781
782# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
783!$omp declare target device_type(any)
784# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
785#else
786# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
787!DIR$ INLINEALWAYS s_compute_constant_pressure_subsonic_outflow_L
788# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
789#endif
790# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
791#elif MFC_OpenACC
792# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
793!$acc routine seq
794# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
795#elif MFC_OpenMP
796# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
797
798# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
799
800# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
801!$omp declare target device_type(any)
802# 279 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
803#endif
804# 281 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
805
806 real(wp), dimension(3), intent(in) :: lambda
807# 286 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
808 real(wp), dimension(sys_size), intent(inout) :: l
809# 288 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
810# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
811 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
812 real(wp), dimension(num_dims), intent(in) :: dvel_ds
813 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
814# 297 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
815 real(wp), intent(in) :: rho, c
816 real(wp), intent(in) :: dpres_ds
817
818 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
819 call s_fill_density_l(l, 1._wp, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
820 call s_fill_velocity_l(l, 1._wp, lambda(2), dvel_ds)
821 call s_fill_advection_l(l, 1._wp, lambda(2), dadv_ds)
822 l(advxe) = -l(1)
824
825 !> Supersonic inflow CBC (Thompson 1990, pg. 453)
827
828# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
829#ifdef _CRAYFTN
830# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
831#if MFC_OpenACC
832# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
833!$acc routine seq
834# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
835#elif MFC_OpenMP
836# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
837
838# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
839
840# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
841!$omp declare target device_type(any)
842# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
843#else
844# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
845!DIR$ INLINEALWAYS s_compute_supersonic_inflow_L
846# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
847#endif
848# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
849#elif MFC_OpenACC
850# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
851!$acc routine seq
852# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
853#elif MFC_OpenMP
854# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
855
856# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
857
858# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
859!$omp declare target device_type(any)
860# 309 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
861#endif
862# 311 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
863# 314 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
864 real(wp), dimension(sys_size), intent(inout) :: l
865# 316 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
866 l(1:advxe) = 0._wp
867 if (chemistry) l(chemxb:chemxe) = 0._wp
868 end subroutine s_compute_supersonic_inflow_l
869
870 !> Supersonic outflow CBC (Thompson 1990, pg. 453)
871 subroutine s_compute_supersonic_outflow_l(lambda, L, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dYs_ds)
872
873# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
874#ifdef _CRAYFTN
875# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
876#if MFC_OpenACC
877# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
878!$acc routine seq
879# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
880#elif MFC_OpenMP
881# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
882
883# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
884
885# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
886!$omp declare target device_type(any)
887# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
888#else
889# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
890!DIR$ INLINEALWAYS s_compute_supersonic_outflow_L
891# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
892#endif
893# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
894#elif MFC_OpenACC
895# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
896!$acc routine seq
897# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
898#elif MFC_OpenMP
899# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
900
901# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
902
903# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
904!$omp declare target device_type(any)
905# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
906#endif
907# 324 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
908
909 real(wp), dimension(3), intent(in) :: lambda
910# 329 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
911 real(wp), dimension(sys_size), intent(inout) :: l
912# 331 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
913# 337 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
914 real(wp), dimension(num_fluids), intent(in) :: mf, dalpha_rho_ds
915 real(wp), dimension(num_dims), intent(in) :: dvel_ds
916 real(wp), dimension(num_fluids), intent(in) :: dadv_ds
917 real(wp), dimension(num_species), intent(in) :: dys_ds
918# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
919 real(wp), intent(in) :: rho, c
920 real(wp), intent(in) :: dpres_ds
921
922 l(1) = f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
923 call s_fill_density_l(l, 1._wp, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
924 call s_fill_velocity_l(l, 1._wp, lambda(2), dvel_ds)
925 call s_fill_advection_l(l, 1._wp, lambda(2), dadv_ds)
926 call s_fill_chemistry_l(l, 1._wp, lambda(2), dys_ds)
927 l(advxe) = lambda(3)*(dpres_ds + rho*c*dvel_ds(dir_idx(1)))
928 end subroutine s_compute_supersonic_outflow_l
929end module m_compute_cbc
integer, intent(in) l
Characteristic boundary condition (CBC) computations for subsonic inflow, outflow,...
subroutine s_fill_velocity_l(l, lambda_factor, lambda2, dvel_ds)
Fill velocity L variables.
subroutine, public s_compute_nonreflecting_subsonic_buffer_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dys_ds)
Nonreflecting subsonic buffer CBC (Thompson 1987, pg. 13).
subroutine, public s_compute_force_free_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds)
Force-free subsonic outflow CBC (Thompson 1990, pg. 454).
subroutine, public s_compute_nonreflecting_subsonic_inflow_l(lambda, l, rho, c, dpres_ds, dvel_ds)
Nonreflecting subsonic inflow CBC (Thompson 1990, pg. 455).
subroutine, public s_compute_supersonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dys_ds)
Supersonic outflow CBC (Thompson 1990, pg. 453).
subroutine s_fill_density_l(l, lambda_factor, lambda2, c, mf, dalpha_rho_ds, dpres_ds)
Fill density L variables.
subroutine, public s_compute_constant_pressure_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds)
Constant pressure subsonic outflow CBC (Thompson 1990, pg. 455).
subroutine s_fill_chemistry_l(l, lambda_factor, lambda2, dys_ds)
Fill chemistry L variables.
subroutine, public s_compute_slip_wall_l(lambda, l, rho, c, dpres_ds, dvel_ds)
Slip wall CBC (Thompson 1990, pg. 451).
subroutine, public s_compute_supersonic_inflow_l(l)
Supersonic inflow CBC (Thompson 1990, pg. 453).
subroutine, public s_compute_nonreflecting_subsonic_outflow_l(lambda, l, rho, c, mf, dalpha_rho_ds, dpres_ds, dvel_ds, dadv_ds, dys_ds)
Nonreflecting subsonic outflow CBC (Thompson 1990, pg. 454).
subroutine s_fill_advection_l(l, lambda_factor, lambda2, dadv_ds)
Fill advection L variables.
real(wp) function f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
Base L1 calculation.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
logical, parameter chemistry
Chemistry modeling.
integer, dimension(3) dir_idx
integer e_idx
Index of energy equation.