1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
5# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
11# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
14# 12 "/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"
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"
29# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
50# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
51# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
52# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
84# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
162# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
163# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
164# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
196# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
255# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
285# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
288# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
291# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
294# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
316# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
321# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
327# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
333# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
336# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342# 6 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp" 2
358 function f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
result(L1)
361# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
363# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
365# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
367# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
369# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
371# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
373# 23 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
375 real(wp),
dimension(3),
intent(in) :: lambda
376 real(wp),
intent(in) :: rho, c, dpres_ds
377# 29 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
378 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
379# 31 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
381 l1 = lambda(1)*(dpres_ds - rho*c*dvel_ds(
dir_idx(1)))
389# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
391# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
393# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
395# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
397# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
399# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
401# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
403# 43 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
404 real(wp),
dimension(sys_size),
intent(inout) :: L
405# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
406# 48 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
407 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
408# 50 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
409 real(wp),
intent(in) :: lambda_factor, lambda2, c
410 real(wp),
intent(in) :: dpres_ds
413 do i = 2, eqn_idx%mom%beg
414 l(i) = lambda_factor*lambda2*(c*c*dalpha_rho_ds(i - 1) - mf(i - 1)*dpres_ds)
423# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
425# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
427# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
429# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
431# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
433# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
435# 63 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
437# 67 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
438 real(wp),
dimension(sys_size),
intent(inout) :: L
439# 69 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
440# 72 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
441 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
442# 74 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
443 real(wp),
intent(in) :: lambda_factor, lambda2
446 do i = eqn_idx%mom%beg + 1, eqn_idx%mom%end
447 l(i) = lambda_factor*lambda2*dvel_ds(
dir_idx(i - eqn_idx%cont%end))
456# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
458# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
460# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
462# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
464# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
466# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
468# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
470# 90 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
471 real(wp),
dimension(sys_size),
intent(inout) :: L
472# 92 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
473# 95 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
474 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
475# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
476 real(wp),
intent(in) :: lambda_factor, lambda2
479 do i = eqn_idx%E, eqn_idx%adv%end - 1
480 l(i) = lambda_factor*lambda2*dadv_ds(i - eqn_idx%mom%end)
489# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
491# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
493# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
495# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
497# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
499# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
501# 109 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
503# 113 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
504 real(wp),
dimension(sys_size),
intent(inout) :: L
505# 115 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
506# 118 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
507 real(wp),
dimension(num_species),
intent(in) :: dYs_ds
508# 120 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
509 real(wp),
intent(in) :: lambda_factor, lambda2
512 if (.not. chemistry)
return
514 do i = eqn_idx%species%beg, eqn_idx%species%end
515 l(i) = lambda_factor*lambda2*dys_ds(i - eqn_idx%species%beg + 1)
524# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
526# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
528# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
530# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
532# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
534# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
536# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
538# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
540# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
542# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
544# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
546# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
548# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
550# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
552# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
554# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
556# 134 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
559 real(wp),
dimension(3),
intent(in) :: lambda
560# 140 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
561 real(wp),
dimension(sys_size),
intent(inout) ::
l
562# 142 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
563# 145 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
564 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
565# 147 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
566 real(wp),
intent(in) :: rho, c, dpres_ds
568 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
569 l(2:eqn_idx%adv%end - 1) = 0._wp
570 l(eqn_idx%adv%end) =
l(1)
578# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
580# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
582# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
584# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
586# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
588# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
590# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
592# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
594# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
596# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
598# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
600# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
602# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
604# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
606# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
608# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
610# 158 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
613 real(wp),
dimension(3),
intent(in) :: lambda
614# 164 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
615 real(wp),
dimension(sys_size),
intent(inout) ::
l
616# 166 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
617# 172 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
618 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
619 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
620 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
621 real(wp),
dimension(num_species),
intent(in) :: dys_ds
622# 177 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
623 real(wp),
intent(in) :: rho, c
624 real(wp),
intent(in) :: dpres_ds
625 real(wp) :: lambda_factor
627 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(1)))
628 l(1) = lambda_factor*lambda(1)*(dpres_ds - rho*c*dvel_ds(
dir_idx(1)))
630 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(2)))
631 call s_fill_density_l(
l, lambda_factor, lambda(2), c, mf, dalpha_rho_ds, dpres_ds)
636 lambda_factor = (5.e-1_wp - 5.e-1_wp*sign(1._wp, lambda(3)))
637 l(eqn_idx%adv%end) = lambda_factor*lambda(3)*(dpres_ds + rho*c*dvel_ds(
dir_idx(1)))
645# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
647# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
649# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
651# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
653# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
655# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
657# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
659# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
661# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
663# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
665# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
667# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
669# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
671# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
673# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
675# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
677# 198 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
680 real(wp),
dimension(3),
intent(in) :: lambda
681# 204 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
682 real(wp),
dimension(sys_size),
intent(inout) ::
l
683# 206 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
684# 209 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
685 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
686# 211 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
687 real(wp),
intent(in) :: rho, c, dpres_ds
689 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
690 l(2:eqn_idx%adv%end) = 0._wp
691 if (chemistry)
l(eqn_idx%species%beg:eqn_idx%species%end) = 0._wp
699# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
701# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
703# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
705# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
707# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
709# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
711# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
713# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
715# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
717# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
719# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
721# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
723# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
725# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
727# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
729# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
731# 222 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
734 real(wp),
dimension(3),
intent(in) :: lambda
735# 228 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
736 real(wp),
dimension(sys_size),
intent(inout) ::
l
737# 230 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
738# 236 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
739 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
740 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
741 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
742 real(wp),
dimension(num_species),
intent(in) :: dys_ds
743# 241 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
744 real(wp),
intent(in) :: rho, c
745 real(wp),
intent(in) :: dpres_ds
747 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
752 l(eqn_idx%adv%end) = 0._wp
760# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
762# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
764# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
766# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
768# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
770# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
772# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
774# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
776# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
778# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
780# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
782# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
784# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
786# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
788# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
790# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
792# 256 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
795 real(wp),
dimension(3),
intent(in) :: lambda
796# 262 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
797 real(wp),
dimension(sys_size),
intent(inout) ::
l
798# 264 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
799# 269 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
800 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
801 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
802 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
803# 273 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
804 real(wp),
intent(in) :: rho, c
805 real(wp),
intent(in) :: dpres_ds
807 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
811 l(eqn_idx%adv%end) =
l(1) + 2._wp*rho*c*lambda(2)*dvel_ds(
dir_idx(1))
819# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
821# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
823# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
825# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
827# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
829# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
831# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
833# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
835# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
837# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
839# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
841# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
843# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
845# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
847# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
849# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
851# 287 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
854 real(wp),
dimension(3),
intent(in) :: lambda
855# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
856 real(wp),
dimension(sys_size),
intent(inout) ::
l
857# 295 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
858# 300 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
859 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
860 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
861 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
862# 304 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
863 real(wp),
intent(in) :: rho, c
864 real(wp),
intent(in) :: dpres_ds
866 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
870 l(eqn_idx%adv%end) = -
l(1)
878# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
880# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
882# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
884# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
886# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
888# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
890# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
892# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
894# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
896# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
898# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
900# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
902# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
904# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
906# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
908# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
910# 318 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
912# 322 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
913 real(wp),
dimension(sys_size),
intent(inout) ::
l
914# 324 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
915 l(1:eqn_idx%adv%end) = 0._wp
916 if (chemistry)
l(eqn_idx%species%beg:eqn_idx%species%end) = 0._wp
924# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
926# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
928# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
930# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
932# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
934# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
936# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
938# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
940# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
942# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
944# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
946# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
948# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
950# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
952# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
954# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
956# 332 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
959 real(wp),
dimension(3),
intent(in) :: lambda
960# 338 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
961 real(wp),
dimension(sys_size),
intent(inout) ::
l
962# 340 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
963# 346 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
964 real(wp),
dimension(num_fluids),
intent(in) :: mf, dalpha_rho_ds
965 real(wp),
dimension(num_dims),
intent(in) :: dvel_ds
966 real(wp),
dimension(num_fluids),
intent(in) :: dadv_ds
967 real(wp),
dimension(num_species),
intent(in) :: dys_ds
968# 351 "/home/runner/work/MFC/MFC/src/simulation/m_compute_cbc.fpp"
969 real(wp),
intent(in) :: rho, c
970 real(wp),
intent(in) :: dpres_ds
972 l(1) =
f_base_l1(lambda, rho, c, dpres_ds, dvel_ds)
977 l(eqn_idx%adv%end) = lambda(3)*(dpres_ds + rho*c*dvel_ds(
dir_idx(1)))
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...
integer, dimension(3) dir_idx