MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_weno.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2!>
3!! @file
4!! @brief Contains module m_weno
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# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
12
13! For moving immersed boundaries in simulation
14# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 5 "/home/runner/work/MFC/MFC/src/simulation/m_weno.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# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
31! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
32! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
33# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
34# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
35# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
36
37# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55! New line at end of file is required for FYPP
56# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
57# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
58# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
59# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
71! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
72! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
73# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
75# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
76
77# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
79
80# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81
82# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83
84# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
85
86# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
87
88# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
89
90# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
91
92# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
93
94# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
95! New line at end of file is required for FYPP
96# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
97
98# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113
114# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115
116# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117
118# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119
120# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121
122# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123
124# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150
151# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152
153# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154
155# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
156
157# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
158
159# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
160
161# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
162
163# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
164
165# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
166
167# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
168
169# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
170
171# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
172
173# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
174! New line at end of file is required for FYPP
175# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
176# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
177# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
178# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183
184# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
185# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187
188# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
189# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
190! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
191! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
192# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
193# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
194# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
195
196# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
197# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
198
199# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
200
201# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
202
203# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
204
205# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
206
207# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
208
209# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
210
211# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
212
213# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
214! New line at end of file is required for FYPP
215# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
216
217# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252
253# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254
255# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
256
257# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
258
259# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
260
261# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
262
263# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
264
265# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
266
267# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
268
269# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
270
271# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
272! New line at end of file is required for FYPP
273# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
274
275! GPU parallel region (scalar reductions, maxval/minval)
276# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277
278! GPU parallel loop over threads (most common GPU macro)
279# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280
281! Required closing for GPU_PARALLEL_LOOP
282# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283
284! Mark routine for device compilation
285# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286
287! Declare device-resident data
288# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289
290! Inner loop within a GPU parallel region
291# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292
293! Scoped GPU data region
294# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295
296! Host code with device pointers (for MPI with GPU buffers)
297# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298
299! Allocate device memory (unscoped)
300# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301
302! Free device memory
303# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304
305! Atomic operation on device
306# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
307
308! End atomic capture block
309# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
310
311! Copy data between host and device
312# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313
314! Synchronization barrier
315# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316
317! Import GPU library module (openacc or omp_lib)
318# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
319
320! Emit code only for AMD compiler
321# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322
323! Emit code for non-Cray compilers
324# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
325
326! Emit code only for Cray compiler
327# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
328
329! Emit code for non-NVIDIA compilers
330# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
331
332# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
333# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
334! New line at end of file is required for FYPP
335# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
336
337# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338
339! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
340! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
341! example see misc/nvidia_uvm/bind.sh.
342# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
343
344! Allocate and create GPU device memory
345# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
346
347! Free GPU device memory and deallocate
348# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349
350! Cray-specific GPU pointer setup for vector fields
351# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
352
353! Cray-specific GPU pointer setup for scalar fields
354# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
355
356! Cray-specific GPU pointer setup for acoustic source spatials
357# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
358
359# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
360
361# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
362! New line at end of file is required for FYPP
363# 6 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp" 2
364
365!> @brief WENO/WENO-Z/TENO reconstructions with optional monotonicity-preserving bounds and mapped weights
366module m_weno
367
371 use m_mpi_proxy
373 use m_nvtx
374
376
377 !> @name The cell-average variables that will be WENO-reconstructed unpacked into an array for performance
378 !> @{
379 real(wp), allocatable, dimension(:,:,:,:) :: v_rs_weno
380 !> @}
381
382# 23 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
383#if defined(MFC_OpenACC)
384# 23 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
385!$acc declare create(v_rs_weno)
386# 23 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
387#elif defined(MFC_OpenMP)
388# 23 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
389!$omp declare target (v_rs_weno)
390# 23 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
391#endif
392# 24 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
393
394 ! WENO Coefficients
395
396 !> @name Polynomial coefficients at the left and right cell-boundaries (CB) and at the left and right quadrature points (QP), in
397 !! the x-, y- and z-directions. Note that the first dimension of the array identifies the polynomial, the second dimension
398 !! identifies the position of its coefficients and the last dimension denotes the cell-location in the relevant coordinate
399 !! direction.
400 !> @{
401 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbl_x
402 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbl_y
403 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbl_z
404 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbr_x
405 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbr_y
406 real(wp), target, allocatable, dimension(:,:,:) :: poly_coef_cbr_z
407 !> @}
408
409# 39 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
410#if defined(MFC_OpenACC)
411# 39 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
412!$acc declare create(poly_coef_cbL_x, poly_coef_cbL_y, poly_coef_cbL_z)
413# 39 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
414#elif defined(MFC_OpenMP)
415# 39 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
416!$omp declare target (poly_coef_cbL_x, poly_coef_cbL_y, poly_coef_cbL_z)
417# 39 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
418#endif
419# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
420
421# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
422#if defined(MFC_OpenACC)
423# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
424!$acc declare create(poly_coef_cbR_x, poly_coef_cbR_y, poly_coef_cbR_z)
425# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
426#elif defined(MFC_OpenMP)
427# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
428!$omp declare target (poly_coef_cbR_x, poly_coef_cbR_y, poly_coef_cbR_z)
429# 40 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
430#endif
431# 41 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
432
433 !> @name The ideal weights at the left and the right cell-boundaries and at the left and the right quadrature points, in x-, y-
434 !! and z-directions. Note that the first dimension of the array identifies the weight, while the last denotes the cell-location
435 !! in the relevant coordinate direction.
436 !> @{
437 real(wp), target, allocatable, dimension(:,:) :: d_cbl_x
438 real(wp), target, allocatable, dimension(:,:) :: d_cbl_y
439 real(wp), target, allocatable, dimension(:,:) :: d_cbl_z
440 real(wp), target, allocatable, dimension(:,:) :: d_cbr_x
441 real(wp), target, allocatable, dimension(:,:) :: d_cbr_y
442 real(wp), target, allocatable, dimension(:,:) :: d_cbr_z
443 !> @}
444
445# 53 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
446#if defined(MFC_OpenACC)
447# 53 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
448!$acc declare create(d_cbL_x, d_cbL_y, d_cbL_z, d_cbR_x, d_cbR_y, d_cbR_z)
449# 53 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
450#elif defined(MFC_OpenMP)
451# 53 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
452!$omp declare target (d_cbL_x, d_cbL_y, d_cbL_z, d_cbR_x, d_cbR_y, d_cbR_z)
453# 53 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
454#endif
455# 54 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
456
457 !> @name Smoothness indicator coefficients in the x-, y-, and z-directions. Note that the first array dimension identifies the
458 !! smoothness indicator, the second identifies the position of its coefficients and the last denotes the cell-location in the
459 !! relevant coordinate direction.
460 !> @{
461 real(wp), target, allocatable, dimension(:,:,:) :: beta_coef_x
462 real(wp), target, allocatable, dimension(:,:,:) :: beta_coef_y
463 real(wp), target, allocatable, dimension(:,:,:) :: beta_coef_z
464 !> @}
465
466# 63 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
467#if defined(MFC_OpenACC)
468# 63 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
469!$acc declare create(beta_coef_x, beta_coef_y, beta_coef_z)
470# 63 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
471#elif defined(MFC_OpenMP)
472# 63 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
473!$omp declare target (beta_coef_x, beta_coef_y, beta_coef_z)
474# 63 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
475#endif
476# 64 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
477 ! END: WENO Coefficients
478
479 integer :: v_size !< Number of WENO-reconstructed cell-average variables
480
481# 67 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
482#if defined(MFC_OpenACC)
483# 67 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
484!$acc declare create(v_size)
485# 67 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
486#elif defined(MFC_OpenMP)
487# 67 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
488!$omp declare target (v_size)
489# 67 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
490#endif
491# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
492
493 logical :: uniform_grid(3) !< True if grid spacing is uniform in each direction
494
495# 70 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
496#if defined(MFC_OpenACC)
497# 70 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
498!$acc declare create(uniform_grid)
499# 70 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
500#elif defined(MFC_OpenMP)
501# 70 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
502!$omp declare target (uniform_grid)
503# 70 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
504#endif
505# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
506
507 !> @name Indical bounds in the s1-, s2- and s3-directions
508 !> @{
510#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
511
512# 76 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
513#if defined(MFC_OpenACC)
514# 76 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
515!$acc declare create(is1_weno, is2_weno, is3_weno)
516# 76 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
517#elif defined(MFC_OpenMP)
518# 76 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
519!$omp declare target (is1_weno, is2_weno, is3_weno)
520# 76 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
521#endif
522# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
523#endif
524 !
525 !> @}
526
527contains
528
529 !> Initialize the WENO module
530 impure subroutine s_initialize_weno_module
531
532 if (weno_order == 1) return
533
534 ! Allocating/Computing WENO Coefficients in x-direction
535 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
536 if (n == 0) then
537 is2_weno%beg = 0
538 else
539 is2_weno%beg = -buff_size
540 end if
541
542 is2_weno%end = n - is2_weno%beg
543
544 if (p == 0) then
545 is3_weno%beg = 0
546 else
547 is3_weno%beg = -buff_size
548 end if
549
550 is3_weno%end = p - is3_weno%beg
551
552#ifdef MFC_DEBUG
553# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
554 block
555# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
556 use iso_fortran_env, only: output_unit
557# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
558
559# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
560 print *, 'm_weno.fpp:106: ', '@:ALLOCATE(poly_coef_cbL_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
561# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
562
563# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
564 call flush (output_unit)
565# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
566 end block
567# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
568#endif
569# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
570 allocate (poly_coef_cbl_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
571# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
572
573# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
574
575# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
576#if defined(MFC_OpenACC)
577# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
578!$acc enter data create(poly_coef_cbL_x)
579# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
580#elif defined(MFC_OpenMP)
581# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
582!$omp target enter data map(always,alloc:poly_coef_cbL_x)
583# 106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
584#endif
585# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
586#ifdef MFC_DEBUG
587# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
588 block
589# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
590 use iso_fortran_env, only: output_unit
591# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
592
593# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
594 print *, 'm_weno.fpp:107: ', '@:ALLOCATE(poly_coef_cbR_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
595# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
596
597# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
598 call flush (output_unit)
599# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
600 end block
601# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
602#endif
603# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
604 allocate (poly_coef_cbr_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
605# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
606
607# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
608
609# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
610#if defined(MFC_OpenACC)
611# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
612!$acc enter data create(poly_coef_cbR_x)
613# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
614#elif defined(MFC_OpenMP)
615# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
616!$omp target enter data map(always,alloc:poly_coef_cbR_x)
617# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
618#endif
619# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
620
621#ifdef MFC_DEBUG
622# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
623 block
624# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
625 use iso_fortran_env, only: output_unit
626# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
627
628# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
629 print *, 'm_weno.fpp:109: ', '@:ALLOCATE(d_cbL_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))'
630# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
631
632# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
633 call flush (output_unit)
634# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
635 end block
636# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
637#endif
638# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
639 allocate (d_cbl_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))
640# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
641
642# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
643
644# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
645#if defined(MFC_OpenACC)
646# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
647!$acc enter data create(d_cbL_x)
648# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
649#elif defined(MFC_OpenMP)
650# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
651!$omp target enter data map(always,alloc:d_cbL_x)
652# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
653#endif
654# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
655#ifdef MFC_DEBUG
656# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
657 block
658# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
659 use iso_fortran_env, only: output_unit
660# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
661
662# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
663 print *, 'm_weno.fpp:110: ', '@:ALLOCATE(d_cbR_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))'
664# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
665
666# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
667 call flush (output_unit)
668# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
669 end block
670# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
671#endif
672# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
673 allocate (d_cbr_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))
674# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
675
676# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
677
678# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
679#if defined(MFC_OpenACC)
680# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
681!$acc enter data create(d_cbR_x)
682# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
683#elif defined(MFC_OpenMP)
684# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
685!$omp target enter data map(always,alloc:d_cbR_x)
686# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
687#endif
688# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
689
690#ifdef MFC_DEBUG
691# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
692 block
693# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
694 use iso_fortran_env, only: output_unit
695# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
696
697# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
698 print *, 'm_weno.fpp:112: ', '@:ALLOCATE(beta_coef_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))'
699# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
700
701# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
702 call flush (output_unit)
703# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
704 end block
705# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
706#endif
707# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
708 allocate (beta_coef_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))
709# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
710
711# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
712
713# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
714#if defined(MFC_OpenACC)
715# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
716!$acc enter data create(beta_coef_x)
717# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
718#elif defined(MFC_OpenMP)
719# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
720!$omp target enter data map(always,alloc:beta_coef_x)
721# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
722#endif
723# 114 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
724 ! Number of cross terms for dvd = (k-1)(k-1+1)/2, where weno_polyn = k-1 Note: k-1 not k because we are using value
725 ! differences (dvd) not the values themselves
726
728
729 ! Only MP-WENO and THINC read the packed copy; the reconstruction kernels read v_vf directly
730 if (mp_weno .or. int_comp > 0) then
731#ifdef MFC_DEBUG
732# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
733 block
734# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
735 use iso_fortran_env, only: output_unit
736# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
737
738# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
739 print *, 'm_weno.fpp:121: ', '@:ALLOCATE(v_rs_weno(is1_weno%beg:is1_weno%end, is2_weno%beg:is2_weno%end, is3_weno%beg:is3_weno%end, 1:sys_size))'
740# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
741
742# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
743 call flush (output_unit)
744# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
745 end block
746# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
747#endif
748# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
749 allocate (v_rs_weno(is1_weno%beg:is1_weno%end, is2_weno%beg:is2_weno%end, is3_weno%beg:is3_weno%end, 1:sys_size))
750# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
751
752# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
753
754# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
755#if defined(MFC_OpenACC)
756# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
757!$acc enter data create(v_rs_weno)
758# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
759#elif defined(MFC_OpenMP)
760# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
761!$omp target enter data map(always,alloc:v_rs_weno)
762# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
763#endif
764# 122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
765 end if
766
767 ! Allocating/Computing WENO Coefficients in y-direction
768 if (n == 0) return
769
770 is2_weno%beg = -buff_size; is2_weno%end = n - is2_weno%beg
771 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
772
773 if (p == 0) then
774 is3_weno%beg = 0
775 else
776 is3_weno%beg = -buff_size
777 end if
778
779 is3_weno%end = p - is3_weno%beg
780
781#ifdef MFC_DEBUG
782# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
783 block
784# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
785 use iso_fortran_env, only: output_unit
786# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
787
788# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
789 print *, 'm_weno.fpp:138: ', '@:ALLOCATE(poly_coef_cbL_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
790# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
791
792# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
793 call flush (output_unit)
794# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
795 end block
796# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
797#endif
798# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
799 allocate (poly_coef_cbl_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
800# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
801
802# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
803
804# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
805#if defined(MFC_OpenACC)
806# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
807!$acc enter data create(poly_coef_cbL_y)
808# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
809#elif defined(MFC_OpenMP)
810# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
811!$omp target enter data map(always,alloc:poly_coef_cbL_y)
812# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
813#endif
814# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
815#ifdef MFC_DEBUG
816# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
817 block
818# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
819 use iso_fortran_env, only: output_unit
820# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
821
822# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
823 print *, 'm_weno.fpp:139: ', '@:ALLOCATE(poly_coef_cbR_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
824# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
825
826# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
827 call flush (output_unit)
828# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
829 end block
830# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
831#endif
832# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
833 allocate (poly_coef_cbr_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
834# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
835
836# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
837
838# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
839#if defined(MFC_OpenACC)
840# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
841!$acc enter data create(poly_coef_cbR_y)
842# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
843#elif defined(MFC_OpenMP)
844# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
845!$omp target enter data map(always,alloc:poly_coef_cbR_y)
846# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
847#endif
848# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
849
850#ifdef MFC_DEBUG
851# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
852 block
853# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
854 use iso_fortran_env, only: output_unit
855# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
856
857# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
858 print *, 'm_weno.fpp:141: ', '@:ALLOCATE(d_cbL_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))'
859# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
860
861# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
862 call flush (output_unit)
863# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
864 end block
865# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
866#endif
867# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
868 allocate (d_cbl_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))
869# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
870
871# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
872
873# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
874#if defined(MFC_OpenACC)
875# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
876!$acc enter data create(d_cbL_y)
877# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
878#elif defined(MFC_OpenMP)
879# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
880!$omp target enter data map(always,alloc:d_cbL_y)
881# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
882#endif
883# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
884#ifdef MFC_DEBUG
885# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
886 block
887# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
888 use iso_fortran_env, only: output_unit
889# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
890
891# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
892 print *, 'm_weno.fpp:142: ', '@:ALLOCATE(d_cbR_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))'
893# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
894
895# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
896 call flush (output_unit)
897# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
898 end block
899# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
900#endif
901# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
902 allocate (d_cbr_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))
903# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
904
905# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
906
907# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
908#if defined(MFC_OpenACC)
909# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
910!$acc enter data create(d_cbR_y)
911# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
912#elif defined(MFC_OpenMP)
913# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
914!$omp target enter data map(always,alloc:d_cbR_y)
915# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
916#endif
917# 143 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
918
919#ifdef MFC_DEBUG
920# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
921 block
922# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
923 use iso_fortran_env, only: output_unit
924# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
925
926# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
927 print *, 'm_weno.fpp:144: ', '@:ALLOCATE(beta_coef_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))'
928# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
929
930# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
931 call flush (output_unit)
932# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
933 end block
934# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
935#endif
936# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
937 allocate (beta_coef_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))
938# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
939
940# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
941
942# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
943#if defined(MFC_OpenACC)
944# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
945!$acc enter data create(beta_coef_y)
946# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
947#elif defined(MFC_OpenMP)
948# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
949!$omp target enter data map(always,alloc:beta_coef_y)
950# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
951#endif
952# 146 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
953
955
956 ! Allocating/Computing WENO Coefficients in z-direction
957 if (p == 0) return
958
959 is2_weno%beg = -buff_size; is2_weno%end = n - is2_weno%beg
960 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
961 is3_weno%beg = -buff_size; is3_weno%end = p - is3_weno%beg
962
963#ifdef MFC_DEBUG
964# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
965 block
966# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
967 use iso_fortran_env, only: output_unit
968# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
969
970# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
971 print *, 'm_weno.fpp:156: ', '@:ALLOCATE(poly_coef_cbL_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
972# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
973
974# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
975 call flush (output_unit)
976# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
977 end block
978# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
979#endif
980# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
981 allocate (poly_coef_cbl_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
982# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
983
984# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
985
986# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
987#if defined(MFC_OpenACC)
988# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
989!$acc enter data create(poly_coef_cbL_z)
990# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
991#elif defined(MFC_OpenMP)
992# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
993!$omp target enter data map(always,alloc:poly_coef_cbL_z)
994# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
995#endif
996# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
997#ifdef MFC_DEBUG
998# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
999 block
1000# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1001 use iso_fortran_env, only: output_unit
1002# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1003
1004# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1005 print *, 'm_weno.fpp:157: ', '@:ALLOCATE(poly_coef_cbR_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
1006# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1007
1008# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1009 call flush (output_unit)
1010# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1011 end block
1012# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1013#endif
1014# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1015 allocate (poly_coef_cbr_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
1016# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1017
1018# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1019
1020# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1021#if defined(MFC_OpenACC)
1022# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1023!$acc enter data create(poly_coef_cbR_z)
1024# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1025#elif defined(MFC_OpenMP)
1026# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1027!$omp target enter data map(always,alloc:poly_coef_cbR_z)
1028# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1029#endif
1030# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1031
1032#ifdef MFC_DEBUG
1033# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1034 block
1035# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1036 use iso_fortran_env, only: output_unit
1037# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1038
1039# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1040 print *, 'm_weno.fpp:159: ', '@:ALLOCATE(d_cbL_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))'
1041# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1042
1043# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1044 call flush (output_unit)
1045# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1046 end block
1047# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1048#endif
1049# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1050 allocate (d_cbl_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))
1051# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1052
1053# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1054
1055# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1056#if defined(MFC_OpenACC)
1057# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1058!$acc enter data create(d_cbL_z)
1059# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1060#elif defined(MFC_OpenMP)
1061# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1062!$omp target enter data map(always,alloc:d_cbL_z)
1063# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1064#endif
1065# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1066#ifdef MFC_DEBUG
1067# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1068 block
1069# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1070 use iso_fortran_env, only: output_unit
1071# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1072
1073# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1074 print *, 'm_weno.fpp:160: ', '@:ALLOCATE(d_cbR_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))'
1075# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1076
1077# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1078 call flush (output_unit)
1079# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1080 end block
1081# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1082#endif
1083# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1084 allocate (d_cbr_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))
1085# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1086
1087# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1088
1089# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1090#if defined(MFC_OpenACC)
1091# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1092!$acc enter data create(d_cbR_z)
1093# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1094#elif defined(MFC_OpenMP)
1095# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1096!$omp target enter data map(always,alloc:d_cbR_z)
1097# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1098#endif
1099# 161 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1100
1101#ifdef MFC_DEBUG
1102# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1103 block
1104# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1105 use iso_fortran_env, only: output_unit
1106# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1107
1108# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1109 print *, 'm_weno.fpp:162: ', '@:ALLOCATE(beta_coef_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))'
1110# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1111
1112# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1113 call flush (output_unit)
1114# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1115 end block
1116# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1117#endif
1118# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1119 allocate (beta_coef_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn*(weno_polyn + 1)/2 - 1))
1120# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1121
1122# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1123
1124# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1125#if defined(MFC_OpenACC)
1126# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1127!$acc enter data create(beta_coef_z)
1128# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1129#elif defined(MFC_OpenMP)
1130# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1131!$omp target enter data map(always,alloc:beta_coef_z)
1132# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1133#endif
1134# 164 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1135
1137
1138 end subroutine s_initialize_weno_module
1139
1140 !> Compute WENO polynomial coefficients, ideal weights, and smoothness indicators for a given direction
1141 subroutine s_compute_weno_coefficients(weno_dir, is)
1142
1143 ! Compute WENO coefficients for a given coordinate direction. Shu (1997)
1144 integer, intent(in) :: weno_dir
1145 type(int_bounds_info), intent(in) :: is
1146 integer :: s
1147 real(wp), pointer, dimension(:) :: s_cb => null() !< Cell-boundary locations in the s-direction
1148 type(int_bounds_info) :: bc_s !< Boundary conditions (BC) in the s-direction
1149 integer :: i !< Generic loop iterator
1150 real(wp) :: w(1:8) !< Intermediate var for ideal weights: s_cb across overall stencil
1151 real(wp) :: y(1:4) !< Intermediate var for poly & beta: diff(s_cb) across sub-stencil
1152 real(wp) :: h0 !< Reference spacing for uniform-grid detection
1153
1154 ! Determine cell count, boundary locations, and BCs for selected WENO direction
1155
1156 if (weno_dir == 1) then
1157 s = m; s_cb => x_cb; bc_s = bc_x
1158 else if (weno_dir == 2) then
1159 s = n; s_cb => y_cb; bc_s = bc_y
1160 else
1161 s = p; s_cb => z_cb; bc_s = bc_z
1162 end if
1163
1164# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1165 ! Computing WENO3 Coefficients
1166 if (weno_dir == 1) then
1167# 196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1168 if (weno_order == 3) then
1169 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1170 ! Polynomial reconstruction coefficients
1171 poly_coef_cbr_x(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
1172# 200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1173 poly_coef_cbr_x(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
1174# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1175
1176 poly_coef_cbl_x(i + 1, 0, 0) = -poly_coef_cbr_x(i + 1, 0, 0)
1177# 203 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1178 poly_coef_cbl_x(i + 1, 1, 0) = -poly_coef_cbr_x(i + 1, 1, 0)
1179# 204 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1180
1181 ! Ideal (linear) weights
1182 d_cbr_x(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
1183# 207 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1184 d_cbl_x(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
1185# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1186
1187 d_cbr_x(1, i + 1) = 1._wp - d_cbr_x(0, i + 1)
1188# 210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1189 d_cbl_x(1, i + 1) = 1._wp - d_cbl_x(0, i + 1)
1190# 211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1191
1192 ! Smoothness indicator coefficients
1193 beta_coef_x(i + 1, 0, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i) - s_cb(i + 2))**2._wp
1194# 214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1195 beta_coef_x(i + 1, 1, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i - 1) - s_cb(i + 1))**2._wp
1196# 215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1197 end do
1198
1199 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1200 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1201 if (null_weights) then
1202 if (bc_s%beg == bc_riemann_extrap) then
1203 d_cbr_x(1, 0) = 0._wp; d_cbr_x(0, 0) = 1._wp
1204# 222 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1205 d_cbl_x(1, 0) = 0._wp; d_cbl_x(0, 0) = 1._wp
1206# 223 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1207 end if
1208
1209 if (bc_s%end == bc_riemann_extrap) then
1210 d_cbr_x(0, s) = 0._wp; d_cbr_x(1, s) = 1._wp
1211# 227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1212 d_cbl_x(0, s) = 0._wp; d_cbl_x(1, s) = 1._wp
1213# 228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1214 end if
1215 end if
1216 ! END: Computing WENO3 Coefficients
1217
1218 ! Computing WENO5 Coefficients
1219 else if (weno_order == 5) then
1220 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1221 ! Polynomial reconstruction coefficients
1222 poly_coef_cbr_x(i + 1, 0, &
1223# 237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1224 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
1225 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
1226 poly_coef_cbr_x(i + 1, 1, &
1227# 240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1228 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
1229 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
1230 poly_coef_cbr_x(i + 1, 1, &
1231# 243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1232 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
1233 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
1234 poly_coef_cbr_x(i + 1, 2, &
1235# 246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1236 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
1237 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
1238 poly_coef_cbl_x(i + 1, 0, &
1239# 249 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1240 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
1241 & *(s_cb(i + 3) - s_cb(i + 1)))
1242 poly_coef_cbl_x(i + 1, 1, &
1243# 252 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1244 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
1245 & + 2))*(s_cb(i) - s_cb(i + 2)))
1246 poly_coef_cbl_x(i + 1, 1, &
1247# 255 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1248 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
1249 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
1250 poly_coef_cbl_x(i + 1, 2, &
1251# 258 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1252 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
1253 & *(s_cb(i - 2) - s_cb(i + 1)))
1254
1255 poly_coef_cbr_x(i + 1, 0, &
1256# 262 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1257 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
1258 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
1259 poly_coef_cbr_x(i + 1, 2, &
1260# 265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1261 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
1262 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
1263 poly_coef_cbl_x(i + 1, 0, &
1264# 268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1265 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
1266 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
1267 poly_coef_cbl_x(i + 1, 2, &
1268# 271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1269 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
1270 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
1271
1272 ! Ideal (linear) weights
1273 d_cbr_x(0, &
1274# 276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1275 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
1276 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
1277 d_cbr_x(2, &
1278# 279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1279 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
1280 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
1281 d_cbl_x(0, &
1282# 282 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1283 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
1284 & *(s_cb(i + 3) - s_cb(i - 1)))
1285 d_cbl_x(2, &
1286# 285 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1287 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
1288 & *(s_cb(i - 2) - s_cb(i + 3)))
1289
1290 d_cbr_x(1, i + 1) = 1._wp - d_cbr_x(0, i + 1) - d_cbr_x(2, i + 1)
1291# 289 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1292 d_cbl_x(1, i + 1) = 1._wp - d_cbl_x(0, i + 1) - d_cbl_x(2, i + 1)
1293# 290 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1294
1295 ! Smoothness indicator coefficients
1296 beta_coef_x(i + 1, 0, &
1297# 293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1298 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1299 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
1300 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
1301
1302 beta_coef_x(i + 1, 0, &
1303# 298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1304 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1305 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
1306 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
1307 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
1308
1309 beta_coef_x(i + 1, 0, &
1310# 304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1311 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1312 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
1313 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
1314 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
1315
1316 beta_coef_x(i + 1, 1, &
1317# 310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1318 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1319 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
1320 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
1321
1322 beta_coef_x(i + 1, 1, &
1323# 315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1324 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
1325 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
1326 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
1327 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
1328
1329 beta_coef_x(i + 1, 1, &
1330# 321 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1331 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1332 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
1333 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
1334
1335 beta_coef_x(i + 1, 2, &
1336# 326 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1337 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1338 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
1339 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
1340 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
1341
1342 beta_coef_x(i + 1, 2, &
1343# 332 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1344 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1345 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
1346 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
1347 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
1348
1349 beta_coef_x(i + 1, 2, &
1350# 338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1351 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1352 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
1353 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
1354 end do
1355
1356 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1357 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1358 if (null_weights) then
1359 if (bc_s%beg == bc_riemann_extrap) then
1360 d_cbr_x(1:2,0) = 0._wp; d_cbr_x(0, 0) = 1._wp
1361# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1362 d_cbl_x(1:2,0) = 0._wp; d_cbl_x(0, 0) = 1._wp
1363# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1364 d_cbr_x(2, 1) = 0._wp; d_cbr_x(:,1) = d_cbr_x(:,1)/sum(d_cbr_x(:,1))
1365# 350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1366 d_cbl_x(2, 1) = 0._wp; d_cbl_x(:,1) = d_cbl_x(:,1)/sum(d_cbl_x(:,1))
1367# 351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1368 end if
1369
1370 if (bc_s%end == bc_riemann_extrap) then
1371 d_cbr_x(0, s - 1) = 0._wp; d_cbr_x(:,s - 1) = d_cbr_x(:, &
1372# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1373 & s - 1)/sum(d_cbr_x(:,s - 1))
1374# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1375 d_cbl_x(0, s - 1) = 0._wp; d_cbl_x(:,s - 1) = d_cbl_x(:, &
1376# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1377 & s - 1)/sum(d_cbl_x(:,s - 1))
1378# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1379 d_cbr_x(0:1,s) = 0._wp; d_cbr_x(2, s) = 1._wp
1380# 359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1381 d_cbl_x(0:1,s) = 0._wp; d_cbl_x(2, s) = 1._wp
1382# 360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1383 end if
1384 end if
1385 else
1386 if (.not. teno) then
1387 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1388 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
1389 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
1390 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
1391 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
1392 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
1393 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
1394 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
1395 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
1396 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
1397 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
1398 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
1399
1400 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
1401 d_cbr_x(0, &
1402# 379 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1403 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
1404 & *(w(1) - w(8)))
1405 d_cbr_x(1, &
1406# 382 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1407 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
1408 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
1409 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
1410 & *(w(2) - w(8)))
1411 d_cbr_x(2, &
1412# 387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1413 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
1414 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
1415 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
1416 & *(w(3) - w(8)))
1417 d_cbr_x(3, &
1418# 392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1419 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
1420 & *(w(3) - w(8)))
1421
1422 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
1423 d_cbl_x(0, &
1424# 397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1425 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
1426 & *(w(3) - w(8)))
1427 d_cbl_x(1, &
1428# 400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1429 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
1430 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
1431 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
1432 & *(w(3) - w(8)))
1433 d_cbl_x(2, &
1434# 405 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1435 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
1436 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
1437 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
1438 & *(w(2) - w(8)))
1439 d_cbl_x(3, &
1440# 410 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1441 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
1442 & *(w(1) - w(8)))
1443 ! Note: Left has the reversed order of both points and coefficients compared to the right
1444
1445 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
1446 poly_coef_cbr_x(i + 1, 0, &
1447# 416 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1448 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1449 & + y(2) + y(3) + y(4)))
1450 poly_coef_cbr_x(i + 1, 0, &
1451# 419 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1452 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
1453 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
1454 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1455 poly_coef_cbr_x(i + 1, 0, &
1456# 423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1457 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1458 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
1459 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
1460
1461 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
1462 poly_coef_cbr_x(i + 1, 1, &
1463# 429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1464 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1465 & + y(2) + y(3) + y(4)))
1466 poly_coef_cbr_x(i + 1, 1, &
1467# 432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1468 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
1469 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
1470 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1471 poly_coef_cbr_x(i + 1, 1, &
1472# 436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1473 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1474 & + y(2) + y(3) + y(4)))
1475
1476 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
1477 poly_coef_cbr_x(i + 1, 2, &
1478# 441 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1479 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
1480 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
1481 poly_coef_cbr_x(i + 1, 2, &
1482# 444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1483 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1484 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
1485 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1486 poly_coef_cbr_x(i + 1, 2, &
1487# 448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1488 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1489 & + y(2) + y(3) + y(4)))
1490
1491 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
1492 poly_coef_cbr_x(i + 1, 3, &
1493# 453 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1494 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
1495 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
1496 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1497 poly_coef_cbr_x(i + 1, 3, &
1498# 457 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1499 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
1500 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
1501 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1502 & + y(4)))
1503 poly_coef_cbr_x(i + 1, 3, &
1504# 462 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1505 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
1506 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
1507
1508 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
1509 poly_coef_cbl_x(i + 1, 3, &
1510# 467 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1511 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1512 & + y(2) + y(3) + y(4)))
1513 poly_coef_cbl_x(i + 1, 3, &
1514# 470 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1515 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
1516 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
1517 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1518 poly_coef_cbl_x(i + 1, 3, &
1519# 474 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1520 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1521 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
1522 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
1523
1524 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
1525 poly_coef_cbl_x(i + 1, 2, &
1526# 480 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1527 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1528 & + y(2) + y(3) + y(4)))
1529 poly_coef_cbl_x(i + 1, 2, &
1530# 483 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1531 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
1532 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
1533 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1534 poly_coef_cbl_x(i + 1, 2, &
1535# 487 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1536 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1537 & + y(2) + y(3) + y(4)))
1538
1539 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
1540 poly_coef_cbl_x(i + 1, 1, &
1541# 492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1542 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
1543 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
1544 poly_coef_cbl_x(i + 1, 1, &
1545# 495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1546 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1547 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
1548 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1549 poly_coef_cbl_x(i + 1, 1, &
1550# 499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1551 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1552 & + y(2) + y(3) + y(4)))
1553
1554 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
1555 poly_coef_cbl_x(i + 1, 0, &
1556# 504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1557 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
1558 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
1559 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1560 poly_coef_cbl_x(i + 1, 0, &
1561# 508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1562 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
1563 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
1564 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1565 & + y(4)))
1566 poly_coef_cbl_x(i + 1, 0, &
1567# 513 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1568 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
1569 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
1570
1571 poly_coef_cbl_x(i + 1,:,:) = -poly_coef_cbl_x(i + 1,:,:)
1572# 517 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1573 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
1574
1575 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
1576 beta_coef_x(i + 1, 3, &
1577# 521 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1578 & 0) = (4*y(4)**2*(5*y(1)**2*y(2)**2 + 20*y(1)**2*y(2)*y(3) + 15*y(1)**2*y(2)*y(4) &
1579 & + 20*y(1)**2*y(3)**2 + 30*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 10*y(1)*y(2) &
1580 & **3 + 60*y(1)*y(2)**2*y(3) + 45*y(1)*y(2)**2*y(4) + 110*y(1)*y(2)*y(3)**2 &
1581 & + 165*y(1)*y(2)*y(3)*y(4) + 260*y(1)*y(2)*y(4)**2 + 60*y(1)*y(3)**3 + 135*y(1) &
1582 & *y(3)**2*y(4) + 400*y(1)*y(3)*y(4)**2 + 225*y(1)*y(4)**3 + 5*y(2)**4 + 40*y(2) &
1583 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
1584 & + 260*y(2)**2*y(4)**2 + 120*y(2)*y(3)**3 + 270*y(2)*y(3)**2*y(4) + 800*y(2)*y(3) &
1585 & *y(4)**2 + 450*y(2)*y(4)**3 + 45*y(3)**4 + 135*y(3)**3*y(4) + 600*y(3)**2*y(4) &
1586 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
1587 & **2*(y(1) + y(2) + y(3) + y(4))**2)
1588 beta_coef_x(i + 1, 3, &
1589# 532 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1590 & 1) = -(4*y(4)**2*(10*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2)*y(4) + 20*y(1)**3*y(3) &
1591 & **2 + 25*y(1)**3*y(3)*y(4) + 105*y(1)**3*y(4)**2 + 40*y(1)**2*y(2)**2*y(3) &
1592 & + 20*y(1)**2*y(2)**2*y(4) + 130*y(1)**2*y(2)*y(3)**2 + 155*y(1)**2*y(2)*y(3)*y(4) &
1593 & + 535*y(1)**2*y(2)*y(4)**2 + 90*y(1)**2*y(3)**3 + 165*y(1)**2*y(3)**2*y(4) &
1594 & + 790*y(1)**2*y(3)*y(4)**2 + 415*y(1)**2*y(4)**3 + 60*y(1)*y(2)**3*y(3) + 30*y(1) &
1595 & *y(2)**3*y(4) + 270*y(1)*y(2)**2*y(3)**2 + 315*y(1)*y(2)**2*y(3)*y(4) + 975*y(1) &
1596 & *y(2)**2*y(4)**2 + 360*y(1)*y(2)*y(3)**3 + 645*y(1)*y(2)*y(3)**2*y(4) + 2850*y(1) &
1597 & *y(2)*y(3)*y(4)**2 + 1460*y(1)*y(2)*y(4)**3 + 150*y(1)*y(3)**4 + 360*y(1)*y(3) &
1598 & **3*y(4) + 2000*y(1)*y(3)**2*y(4)**2 + 2005*y(1)*y(3)*y(4)**3 + 2077*y(1)*y(4) &
1599 & **4 + 30*y(2)**4*y(3) + 15*y(2)**4*y(4) + 180*y(2)**3*y(3)**2 + 210*y(2)**3*y(3) &
1600 & *y(4) + 650*y(2)**3*y(4)**2 + 360*y(2)**2*y(3)**3 + 645*y(2)**2*y(3)**2*y(4) &
1601 & + 2850*y(2)**2*y(3)*y(4)**2 + 1460*y(2)**2*y(4)**3 + 300*y(2)*y(3)**4 + 720*y(2) &
1602 & *y(3)**3*y(4) + 4000*y(2)*y(3)**2*y(4)**2 + 4010*y(2)*y(3)*y(4)**3 + 4154*y(2) &
1603 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
1604 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
1605 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1606 beta_coef_x(i + 1, 3, &
1607# 549 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1608 & 2) = (4*y(4)**2*(10*y(2)**3*y(3) + 5*y(2)**3*y(4) + 50*y(2)**2*y(3)**2 + 60*y(2) &
1609 & **2*y(3)*y(4) + 10*y(1)*y(2)**2*y(3) + 215*y(2)**2*y(4)**2 + 5*y(1)*y(2)**2*y(4) &
1610 & + 70*y(2)*y(3)**3 + 130*y(2)*y(3)**2*y(4) + 30*y(1)*y(2)*y(3)**2 + 775*y(2)*y(3) &
1611 & *y(4)**2 + 35*y(1)*y(2)*y(3)*y(4) + 415*y(2)*y(4)**3 + 110*y(1)*y(2)*y(4)**2 &
1612 & + 30*y(3)**4 + 75*y(3)**3*y(4) + 20*y(1)*y(3)**3 + 665*y(3)**2*y(4)**2 + 35*y(1) &
1613 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
1614 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
1615 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1616 beta_coef_x(i + 1, 3, &
1617# 558 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1618 & 3) = (4*y(4)**2*(5*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 50*y(1)**4*y(4)**2 &
1619 & + 30*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 300*y(1)**3*y(2)*y(4)**2 &
1620 & + 30*y(1)**3*y(3)**3 + 45*y(1)**3*y(3)**2*y(4) + 415*y(1)**3*y(3)*y(4)**2 &
1621 & + 200*y(1)**3*y(4)**3 + 75*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
1622 & + 750*y(1)**2*y(2)**2*y(4)**2 + 150*y(1)**2*y(2)*y(3)**3 + 225*y(1)**2*y(2)*y(3) &
1623 & **2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 1000*y(1)**2*y(2)*y(4)**3 + 75*y(1) &
1624 & **2*y(3)**4 + 150*y(1)**2*y(3)**3*y(4) + 1390*y(1)**2*y(3)**2*y(4)**2 + 1315*y(1) &
1625 & **2*y(3)*y(4)**3 + 1081*y(1)**2*y(4)**4 + 90*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
1626 & **3*y(3)*y(4) + 900*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2)**2*y(3)**3 + 405*y(1) &
1627 & *y(2)**2*y(3)**2*y(4) + 3735*y(1)*y(2)**2*y(3)*y(4)**2 + 1800*y(1)*y(2)**2*y(4) &
1628 & **3 + 270*y(1)*y(2)*y(3)**4 + 540*y(1)*y(2)*y(3)**3*y(4) + 5025*y(1)*y(2)*y(3) &
1629 & **2*y(4)**2 + 4755*y(1)*y(2)*y(3)*y(4)**3 + 4224*y(1)*y(2)*y(4)**4 + 90*y(1)*y(3) &
1630 & **5 + 225*y(1)*y(3)**4*y(4) + 2190*y(1)*y(3)**3*y(4)**2 + 3060*y(1)*y(3)**2*y(4) &
1631 & **3 + 4529*y(1)*y(3)*y(4)**4 + 1762*y(1)*y(4)**5 + 45*y(2)**4*y(3)**2 + 45*y(2) &
1632 & **4*y(3)*y(4) + 450*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2)**3*y(3) &
1633 & **2*y(4) + 2490*y(2)**3*y(3)*y(4)**2 + 1200*y(2)**3*y(4)**3 + 270*y(2)**2*y(3) &
1634 & **4 + 540*y(2)**2*y(3)**3*y(4) + 5025*y(2)**2*y(3)**2*y(4)**2 + 4755*y(2)**2*y(3) &
1635 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
1636 & + 4380*y(2)*y(3)**3*y(4)**2 + 6120*y(2)*y(3)**2*y(4)**3 + 9058*y(2)*y(3)*y(4)**4 &
1637 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
1638 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
1639 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1640 & + y(3) + y(4))**2)
1641 beta_coef_x(i + 1, 3, &
1642# 582 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1643 & 4) = -(4*y(4)**2*(10*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 100*y(1) &
1644 & **2*y(2)*y(4)**2 + 10*y(1)**2*y(3)**3 + 15*y(1)**2*y(3)**2*y(4) + 205*y(1) &
1645 & **2*y(3)*y(4)**2 + 100*y(1)**2*y(4)**3 + 30*y(1)*y(2)**2*y(3)**2 + 30*y(1)*y(2) &
1646 & **2*y(3)*y(4) + 300*y(1)*y(2)**2*y(4)**2 + 60*y(1)*y(2)*y(3)**3 + 90*y(1)*y(2) &
1647 & *y(3)**2*y(4) + 1030*y(1)*y(2)*y(3)*y(4)**2 + 500*y(1)*y(2)*y(4)**3 + 30*y(1) &
1648 & *y(3)**4 + 60*y(1)*y(3)**3*y(4) + 835*y(1)*y(3)**2*y(4)**2 + 805*y(1)*y(3)*y(4) &
1649 & **3 + 1762*y(1)*y(4)**4 + 30*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 300*y(2) &
1650 & **3*y(4)**2 + 90*y(2)**2*y(3)**3 + 135*y(2)**2*y(3)**2*y(4) + 1445*y(2)**2*y(3) &
1651 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
1652 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
1653 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
1654 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
1655 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1656 beta_coef_x(i + 1, 3, &
1657# 596 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1658 & 5) = (4*y(4)**2*(5*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 &
1659 & + 10*y(2)*y(3)**3 + 15*y(2)*y(3)**2*y(4) + 205*y(2)*y(3)*y(4)**2 + 100*y(2)*y(4) &
1660 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
1661 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
1662 & + y(4))**2)
1663
1664 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
1665 beta_coef_x(i + 1, 2, &
1666# 604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1667 & 0) = (4*y(3)**2*(5*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 &
1668 & + 10*y(1)*y(2)**3 + 15*y(1)*y(2)**2*y(3) + 205*y(1)*y(2)*y(3)**2 + 100*y(1)*y(3) &
1669 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
1670 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
1671 & + y(4))**2)
1672 beta_coef_x(i + 1, 2, &
1673# 610 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1674 & 1) = (4*y(3)**2*(5*y(1)**3*y(2)*y(3) + 10*y(1)**3*y(2)*y(4) - 95*y(1)**3*y(3)**2 &
1675 & + 5*y(1)**3*y(3)*y(4) + 20*y(1)**2*y(2)**2*y(3) + 40*y(1)**2*y(2)**2*y(4) &
1676 & - 465*y(1)**2*y(2)*y(3)**2 + 55*y(1)**2*y(2)*y(3)*y(4) + 10*y(1)**2*y(2)*y(4)**2 &
1677 & - 285*y(1)**2*y(3)**3 + 20*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 &
1678 & + 30*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) - 825*y(1)*y(2)**2*y(3)**2 &
1679 & + 135*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 - 1040*y(1)*y(2)*y(3)**3 &
1680 & + 100*y(1)*y(2)*y(3)**2*y(4) + 35*y(1)*y(2)*y(3)*y(4)**2 - 1847*y(1)*y(3)**4 &
1681 & + 125*y(1)*y(3)**3*y(4) + 110*y(1)*y(3)**2*y(4)**2 + 15*y(2)**4*y(3) + 30*y(2) &
1682 & **4*y(4) - 550*y(2)**3*y(3)**2 + 90*y(2)**3*y(3)*y(4) + 20*y(2)**3*y(4)**2 &
1683 & - 1040*y(2)**2*y(3)**3 + 100*y(2)**2*y(3)**2*y(4) + 35*y(2)**2*y(3)*y(4)**2 &
1684 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
1685 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
1686 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
1687 & **2)
1688 beta_coef_x(i + 1, 2, &
1689# 625 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1690 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
1691 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
1692 & + 5*y(1)*y(2)**2*y(3) + 10*y(1)*y(2)**2*y(4) + 100*y(1)*y(3)**2*y(4) + 205*y(2) &
1693 & *y(3)**2*y(4) + 15*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
1694 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1695 & + y(4))**2)
1696 beta_coef_x(i + 1, 2, &
1697# 632 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1698 & 3) = (4*y(3)**2*(50*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 &
1699 & + 300*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 30*y(1)**3*y(2)*y(4)**2 &
1700 & + 200*y(1)**3*y(3)**3 + 25*y(1)**3*y(3)**2*y(4) + 35*y(1)**3*y(3)*y(4)**2 &
1701 & + 10*y(1)**3*y(4)**3 + 750*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
1702 & + 75*y(1)**2*y(2)**2*y(4)**2 + 1000*y(1)**2*y(2)*y(3)**3 + 125*y(1)**2*y(2)*y(3) &
1703 & **2*y(4) + 175*y(1)**2*y(2)*y(3)*y(4)**2 + 50*y(1)**2*y(2)*y(4)**3 + 1081*y(1) &
1704 & **2*y(3)**4 - 50*y(1)**2*y(3)**3*y(4) - 10*y(1)**2*y(3)**2*y(4)**2 + 45*y(1) &
1705 & **2*y(3)*y(4)**3 + 5*y(1)**2*y(4)**4 + 900*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
1706 & **3*y(3)*y(4) + 90*y(1)*y(2)**3*y(4)**2 + 1800*y(1)*y(2)**2*y(3)**3 + 225*y(1) &
1707 & *y(2)**2*y(3)**2*y(4) + 315*y(1)*y(2)**2*y(3)*y(4)**2 + 90*y(1)*y(2)**2*y(4)**3 &
1708 & + 4224*y(1)*y(2)*y(3)**4 - 120*y(1)*y(2)*y(3)**3*y(4) + 25*y(1)*y(2)*y(3)**2*y(4) &
1709 & **2 + 165*y(1)*y(2)*y(3)*y(4)**3 + 20*y(1)*y(2)*y(4)**4 + 3324*y(1)*y(3)**5 &
1710 & + 1407*y(1)*y(3)**4*y(4) - 100*y(1)*y(3)**3*y(4)**2 + 70*y(1)*y(3)**2*y(4)**3 &
1711 & + 15*y(1)*y(3)*y(4)**4 + 450*y(2)**4*y(3)**2 + 45*y(2)**4*y(3)*y(4) + 45*y(2) &
1712 & **4*y(4)**2 + 1200*y(2)**3*y(3)**3 + 150*y(2)**3*y(3)**2*y(4) + 210*y(2)**3*y(3) &
1713 & *y(4)**2 + 60*y(2)**3*y(4)**3 + 4224*y(2)**2*y(3)**4 - 120*y(2)**2*y(3)**3*y(4) &
1714 & + 25*y(2)**2*y(3)**2*y(4)**2 + 165*y(2)**2*y(3)*y(4)**3 + 20*y(2)**2*y(4)**4 &
1715 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
1716 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
1717 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
1718 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1719 & + y(3) + y(4))**2)
1720 beta_coef_x(i + 1, 2, &
1721# 655 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1722 & 4) = -(4*y(3)**2*(100*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 10*y(1) &
1723 & **2*y(2)*y(4)**2 - 95*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 + 300*y(1) &
1724 & *y(2)**2*y(3)**2 + 30*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 + 200*y(1) &
1725 & *y(2)*y(3)**3 - 260*y(1)*y(2)*y(3)**2*y(4) + 50*y(1)*y(2)*y(3)*y(4)**2 + 10*y(1) &
1726 & *y(2)*y(4)**3 + 1562*y(1)*y(3)**4 - 190*y(1)*y(3)**3*y(4) + 15*y(1)*y(3)**2*y(4) &
1727 & **2 + 5*y(1)*y(3)*y(4)**3 + 300*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 30*y(2) &
1728 & **3*y(4)**2 + 400*y(2)**2*y(3)**3 - 235*y(2)**2*y(3)**2*y(4) + 85*y(2)**2*y(3) &
1729 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
1730 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
1731 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
1732 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
1733 & **2)
1734 beta_coef_x(i + 1, 2, &
1735# 668 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1736 & 5) = (4*y(3)**2*(50*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 5*y(2)**2*y(4)**2 &
1737 & - 95*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 781*y(3)**4 + 50*y(3)**2*y(4)**2)) &
1738 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
1739
1740 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
1741 beta_coef_x(i + 1, 1, &
1742# 674 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1743 & 0) = (4*y(2)**2*(50*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 5*y(1)**2*y(3)**2 &
1744 & - 95*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 781*y(2)**4 + 50*y(2)**2*y(3)**2)) &
1745 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1746 beta_coef_x(i + 1, 1, &
1747# 678 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1748 & 1) = -(4*y(2)**2*(105*y(1)**3*y(2)**2 + 25*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2) &
1749 & *y(4) + 20*y(1)**3*y(3)**2 + 10*y(1)**3*y(3)*y(4) + 110*y(1)**2*y(2)**3 - 35*y(1) &
1750 & **2*y(2)**2*y(3) + 15*y(1)**2*y(2)**2*y(4) + 85*y(1)**2*y(2)*y(3)**2 + 50*y(1) &
1751 & **2*y(2)*y(3)*y(4) + 5*y(1)**2*y(2)*y(4)**2 + 30*y(1)**2*y(3)**3 + 30*y(1) &
1752 & **2*y(3)**2*y(4) + 10*y(1)**2*y(3)*y(4)**2 + 1467*y(1)*y(2)**4 - 460*y(1)*y(2) &
1753 & **3*y(3) - 190*y(1)*y(2)**3*y(4) - 235*y(1)*y(2)**2*y(3)**2 - 260*y(1)*y(2) &
1754 & **2*y(3)*y(4) - 95*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2)*y(3)**3 + 30*y(1)*y(2) &
1755 & *y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 3124*y(2)**5 + 3224*y(2)**4*y(3) &
1756 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
1757 & **2*y(3)**3 + 300*y(2)**2*y(3)**2*y(4) + 100*y(2)**2*y(3)*y(4)**2))/(5*(y(2) &
1758 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1759 & + y(3) + y(4))**2)
1760 beta_coef_x(i + 1, 1, &
1761# 691 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1762 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
1763 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
1764 & + 205*y(1)*y(2)**2*y(3) + 100*y(1)*y(2)**2*y(4) + 10*y(1)*y(3)**2*y(4) + 5*y(2) &
1765 & *y(3)**2*y(4) - 95*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
1766 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1767 & + y(4))**2)
1768 beta_coef_x(i + 1, 1, &
1769# 698 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1770 & 3) = (4*y(2)**2*(60*y(1)**4*y(2)**2 + 30*y(1)**4*y(2)*y(3) + 15*y(1)**4*y(2)*y(4) &
1771 & + 20*y(1)**4*y(3)**2 + 20*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 + 135*y(1) &
1772 & **3*y(2)**3 + 140*y(1)**3*y(2)**2*y(3) + 70*y(1)**3*y(2)**2*y(4) + 165*y(1) &
1773 & **3*y(2)*y(3)**2 + 165*y(1)**3*y(2)*y(3)*y(4) + 45*y(1)**3*y(2)*y(4)**2 + 60*y(1) &
1774 & **3*y(3)**3 + 90*y(1)**3*y(3)**2*y(4) + 50*y(1)**3*y(3)*y(4)**2 + 10*y(1)**3*y(4) &
1775 & **3 + 771*y(1)**2*y(2)**4 - 200*y(1)**2*y(2)**3*y(3) - 100*y(1)**2*y(2)**3*y(4) &
1776 & + 25*y(1)**2*y(2)**2*y(3)**2 + 25*y(1)**2*y(2)**2*y(3)*y(4) - 10*y(1)**2*y(2) &
1777 & **2*y(4)**2 + 210*y(1)**2*y(2)*y(3)**3 + 315*y(1)**2*y(2)*y(3)**2*y(4) + 175*y(1) &
1778 & **2*y(2)*y(3)*y(4)**2 + 35*y(1)**2*y(2)*y(4)**3 + 45*y(1)**2*y(3)**4 + 90*y(1) &
1779 & **2*y(3)**3*y(4) + 75*y(1)**2*y(3)**2*y(4)**2 + 30*y(1)**2*y(3)*y(4)**3 + 5*y(1) &
1780 & **2*y(4)**4 + 3039*y(1)*y(2)**5 + 2814*y(1)*y(2)**4*y(3) + 1407*y(1)*y(2)**4*y(4) &
1781 & - 120*y(1)*y(2)**3*y(3)**2 - 120*y(1)*y(2)**3*y(3)*y(4) - 50*y(1)*y(2)**3*y(4) &
1782 & **2 + 150*y(1)*y(2)**2*y(3)**3 + 225*y(1)*y(2)**2*y(3)**2*y(4) + 125*y(1)*y(2) &
1783 & **2*y(3)*y(4)**2 + 25*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2) &
1784 & *y(3)**3*y(4) + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1) &
1785 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
1786 & **4*y(3)**2 + 4224*y(2)**4*y(3)*y(4) + 1081*y(2)**4*y(4)**2 + 1200*y(2)**3*y(3) &
1787 & **3 + 1800*y(2)**3*y(3)**2*y(4) + 1000*y(2)**3*y(3)*y(4)**2 + 200*y(2)**3*y(4) &
1788 & **3 + 450*y(2)**2*y(3)**4 + 900*y(2)**2*y(3)**3*y(4) + 750*y(2)**2*y(3)**2*y(4) &
1789 & **2 + 300*y(2)**2*y(3)*y(4)**3 + 50*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) &
1790 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1791 beta_coef_x(i + 1, 1, &
1792# 720 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1793 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
1794 & **2*y(2)**2*y(4) + 35*y(1)**2*y(2)*y(3)**2 + 35*y(1)**2*y(2)*y(3)*y(4) + 5*y(1) &
1795 & **2*y(2)*y(4)**2 + 20*y(1)**2*y(3)**3 + 30*y(1)**2*y(3)**2*y(4) + 10*y(1)**2*y(3) &
1796 & *y(4)**2 - 1452*y(1)*y(2)**4 + 250*y(1)*y(2)**3*y(3) + 125*y(1)*y(2)**3*y(4) &
1797 & + 100*y(1)*y(2)**2*y(3)**2 + 100*y(1)*y(2)**2*y(3)*y(4) + 20*y(1)*y(2)**2*y(4) &
1798 & **2 + 90*y(1)*y(2)*y(3)**3 + 135*y(1)*y(2)*y(3)**2*y(4) + 55*y(1)*y(2)*y(3)*y(4) &
1799 & **2 + 5*y(1)*y(2)*y(4)**3 + 30*y(1)*y(3)**4 + 60*y(1)*y(3)**3*y(4) + 40*y(1)*y(3) &
1800 & **2*y(4)**2 + 10*y(1)*y(3)*y(4)**3 - 3219*y(2)**5 - 3694*y(2)**4*y(3) - 1847*y(2) &
1801 & **4*y(4) - 1040*y(2)**3*y(3)**2 - 1040*y(2)**3*y(3)*y(4) - 285*y(2)**3*y(4)**2 &
1802 & - 550*y(2)**2*y(3)**3 - 825*y(2)**2*y(3)**2*y(4) - 465*y(2)**2*y(3)*y(4)**2 &
1803 & - 95*y(2)**2*y(4)**3 + 15*y(2)*y(3)**4 + 30*y(2)*y(3)**3*y(4) + 20*y(2)*y(3) &
1804 & **2*y(4)**2 + 5*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
1805 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1806 beta_coef_x(i + 1, 1, &
1807# 734 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1808 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
1809 & **2*y(3)**2 + 205*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 + 10*y(2)*y(3)**3 &
1810 & + 15*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
1811 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
1812 & + y(3) + y(4))**2)
1813
1814 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
1815 beta_coef_x(i + 1, 0, &
1816# 742 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1817 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
1818 & **2*y(2)**2 + 205*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 + 10*y(1)*y(2)**3 &
1819 & + 15*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 5*y(2)**4 + 10*y(2)**3*y(3) &
1820 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1821 & + y(3) + y(4))**2)
1822 beta_coef_x(i + 1, 0, &
1823# 748 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1824 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
1825 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
1826 & **3*y(2)*y(4) + 700*y(1)**3*y(3)**2 + 500*y(1)**3*y(3)*y(4) + 100*y(1)**3*y(4) &
1827 & **2 + 1060*y(1)**2*y(2)**3 + 2205*y(1)**2*y(2)**2*y(3) + 835*y(1)**2*y(2)**2*y(4) &
1828 & + 1445*y(1)**2*y(2)*y(3)**2 + 1030*y(1)**2*y(2)*y(3)*y(4) + 205*y(1)**2*y(2)*y(4) &
1829 & **2 + 300*y(1)**2*y(3)**3 + 300*y(1)**2*y(3)**2*y(4) + 100*y(1)**2*y(3)*y(4)**2 &
1830 & + 75*y(1)*y(2)**4 + 180*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) + 135*y(1)*y(2) &
1831 & **2*y(3)**2 + 90*y(1)*y(2)**2*y(3)*y(4) + 15*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2) &
1832 & *y(3)**3 + 30*y(1)*y(2)*y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 30*y(2)**5 &
1833 & + 90*y(2)**4*y(3) + 30*y(2)**4*y(4) + 90*y(2)**3*y(3)**2 + 60*y(2)**3*y(3)*y(4) &
1834 & + 10*y(2)**3*y(4)**2 + 30*y(2)**2*y(3)**3 + 30*y(2)**2*y(3)**2*y(4) + 10*y(2) &
1835 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
1836 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1837 beta_coef_x(i + 1, 0, &
1838# 762 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1839 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
1840 & *y(1)**3 + 665*y(1)**2*y(2)**2 + 775*y(1)**2*y(2)*y(3) + 220*y(4)*y(1)**2*y(2) &
1841 & + 215*y(1)**2*y(3)**2 + 110*y(4)*y(1)**2*y(3) + 75*y(1)*y(2)**3 + 130*y(1)*y(2) &
1842 & **2*y(3) + 35*y(4)*y(1)*y(2)**2 + 60*y(1)*y(2)*y(3)**2 + 35*y(4)*y(1)*y(2)*y(3) &
1843 & + 5*y(1)*y(3)**3 + 5*y(4)*y(1)*y(3)**2 + 30*y(2)**4 + 70*y(2)**3*y(3) + 20*y(4) &
1844 & *y(2)**3 + 50*y(2)**2*y(3)**2 + 30*y(4)*y(2)**2*y(3) + 10*y(2)*y(3)**3 + 10*y(4) &
1845 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
1846 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1847 beta_coef_x(i + 1, 0, &
1848# 771 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1849 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
1850 & **5*y(4) + 4884*y(1)**4*y(2)**2 + 9058*y(1)**4*y(2)*y(3) + 4529*y(1)**4*y(2)*y(4) &
1851 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
1852 & + 2565*y(1)**3*y(2)**3 + 6120*y(1)**3*y(2)**2*y(3) + 3060*y(1)**3*y(2)**2*y(4) &
1853 & + 4755*y(1)**3*y(2)*y(3)**2 + 4755*y(1)**3*y(2)*y(3)*y(4) + 1315*y(1)**3*y(2) &
1854 & *y(4)**2 + 1200*y(1)**3*y(3)**3 + 1800*y(1)**3*y(3)**2*y(4) + 1000*y(1)**3*y(3) &
1855 & *y(4)**2 + 200*y(1)**3*y(4)**3 + 1395*y(1)**2*y(2)**4 + 4380*y(1)**2*y(2)**3*y(3) &
1856 & + 2190*y(1)**2*y(2)**3*y(4) + 5025*y(1)**2*y(2)**2*y(3)**2 + 5025*y(1)**2*y(2) &
1857 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
1858 & + 3735*y(1)**2*y(2)*y(3)**2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 415*y(1) &
1859 & **2*y(2)*y(4)**3 + 450*y(1)**2*y(3)**4 + 900*y(1)**2*y(3)**3*y(4) + 750*y(1) &
1860 & **2*y(3)**2*y(4)**2 + 300*y(1)**2*y(3)*y(4)**3 + 50*y(1)**2*y(4)**4 + 135*y(1) &
1861 & *y(2)**5 + 450*y(1)*y(2)**4*y(3) + 225*y(1)*y(2)**4*y(4) + 540*y(1)*y(2)**3*y(3) &
1862 & **2 + 540*y(1)*y(2)**3*y(3)*y(4) + 150*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2) &
1863 & **2*y(3)**3 + 405*y(1)*y(2)**2*y(3)**2*y(4) + 225*y(1)*y(2)**2*y(3)*y(4)**2 &
1864 & + 45*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2)*y(3)**3*y(4) &
1865 & + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1)*y(2)*y(4)**4 &
1866 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
1867 & + 270*y(2)**4*y(3)*y(4) + 75*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2) &
1868 & **3*y(3)**2*y(4) + 150*y(2)**3*y(3)*y(4)**2 + 30*y(2)**3*y(4)**3 + 45*y(2) &
1869 & **2*y(3)**4 + 90*y(2)**2*y(3)**3*y(4) + 75*y(2)**2*y(3)**2*y(4)**2 + 30*y(2) &
1870 & **2*y(3)*y(4)**3 + 5*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3)) &
1871 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1872 beta_coef_x(i + 1, 0, &
1873# 795 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1874 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
1875 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
1876 & **3*y(2)*y(4) + 1460*y(1)**3*y(3)**2 + 1460*y(1)**3*y(3)*y(4) + 415*y(1)**3*y(4) &
1877 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
1878 & **2*y(4) + 2850*y(1)**2*y(2)*y(3)**2 + 2850*y(1)**2*y(2)*y(3)*y(4) + 790*y(1) &
1879 & **2*y(2)*y(4)**2 + 650*y(1)**2*y(3)**3 + 975*y(1)**2*y(3)**2*y(4) + 535*y(1) &
1880 & **2*y(3)*y(4)**2 + 105*y(1)**2*y(4)**3 + 270*y(1)*y(2)**4 + 720*y(1)*y(2)**3*y(3) &
1881 & + 360*y(1)*y(2)**3*y(4) + 645*y(1)*y(2)**2*y(3)**2 + 645*y(1)*y(2)**2*y(3)*y(4) &
1882 & + 165*y(1)*y(2)**2*y(4)**2 + 210*y(1)*y(2)*y(3)**3 + 315*y(1)*y(2)*y(3)**2*y(4) &
1883 & + 155*y(1)*y(2)*y(3)*y(4)**2 + 25*y(1)*y(2)*y(4)**3 + 15*y(1)*y(3)**4 + 30*y(1) &
1884 & *y(3)**3*y(4) + 20*y(1)*y(3)**2*y(4)**2 + 5*y(1)*y(3)*y(4)**3 + 90*y(2)**5 &
1885 & + 300*y(2)**4*y(3) + 150*y(2)**4*y(4) + 360*y(2)**3*y(3)**2 + 360*y(2)**3*y(3) &
1886 & *y(4) + 90*y(2)**3*y(4)**2 + 180*y(2)**2*y(3)**3 + 270*y(2)**2*y(3)**2*y(4) &
1887 & + 130*y(2)**2*y(3)*y(4)**2 + 20*y(2)**2*y(4)**3 + 30*y(2)*y(3)**4 + 60*y(2)*y(3) &
1888 & **3*y(4) + 40*y(2)*y(3)**2*y(4)**2 + 10*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2)) &
1889 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1890 & + y(4))**2)
1891 beta_coef_x(i + 1, 0, &
1892# 813 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1893 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
1894 & **3*y(4) + 600*y(1)**2*y(2)**2 + 800*y(1)**2*y(2)*y(3) + 400*y(1)**2*y(2)*y(4) &
1895 & + 260*y(1)**2*y(3)**2 + 260*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 135*y(1) &
1896 & *y(2)**3 + 270*y(1)*y(2)**2*y(3) + 135*y(1)*y(2)**2*y(4) + 165*y(1)*y(2)*y(3)**2 &
1897 & + 165*y(1)*y(2)*y(3)*y(4) + 30*y(1)*y(2)*y(4)**2 + 30*y(1)*y(3)**3 + 45*y(1)*y(3) &
1898 & **2*y(4) + 15*y(1)*y(3)*y(4)**2 + 45*y(2)**4 + 120*y(2)**3*y(3) + 60*y(2)**3*y(4) &
1899 & + 110*y(2)**2*y(3)**2 + 110*y(2)**2*y(3)*y(4) + 20*y(2)**2*y(4)**2 + 40*y(2)*y(3) &
1900 & **3 + 60*y(2)*y(3)**2*y(4) + 20*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
1901 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
1902 & + y(3) + y(4))**2)
1903 end do
1904 else
1905 ! (Fu, et al., 2016) Table 2 (for right flux)
1906 d_cbl_x(0,:) = 18._wp/35._wp
1907# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1908 d_cbl_x(1,:) = 3._wp/35._wp
1909# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1910 d_cbl_x(2,:) = 9._wp/35._wp
1911# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1912 d_cbl_x(3,:) = 1._wp/35._wp
1913# 830 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1914 d_cbl_x(4,:) = 4._wp/35._wp
1915# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1916
1917 d_cbr_x(0,:) = 18._wp/35._wp
1918# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1919 d_cbr_x(1,:) = 9._wp/35._wp
1920# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1921 d_cbr_x(2,:) = 3._wp/35._wp
1922# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1923 d_cbr_x(3,:) = 4._wp/35._wp
1924# 836 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1925 d_cbr_x(4,:) = 1._wp/35._wp
1926# 837 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1927 end if
1928 end if
1929 end if
1930# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1931 ! Computing WENO3 Coefficients
1932 if (weno_dir == 2) then
1933# 196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1934 if (weno_order == 3) then
1935 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1936 ! Polynomial reconstruction coefficients
1937 poly_coef_cbr_y(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
1938# 200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1939 poly_coef_cbr_y(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
1940# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1941
1942 poly_coef_cbl_y(i + 1, 0, 0) = -poly_coef_cbr_y(i + 1, 0, 0)
1943# 203 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1944 poly_coef_cbl_y(i + 1, 1, 0) = -poly_coef_cbr_y(i + 1, 1, 0)
1945# 204 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1946
1947 ! Ideal (linear) weights
1948 d_cbr_y(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
1949# 207 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1950 d_cbl_y(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
1951# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1952
1953 d_cbr_y(1, i + 1) = 1._wp - d_cbr_y(0, i + 1)
1954# 210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1955 d_cbl_y(1, i + 1) = 1._wp - d_cbl_y(0, i + 1)
1956# 211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1957
1958 ! Smoothness indicator coefficients
1959 beta_coef_y(i + 1, 0, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i) - s_cb(i + 2))**2._wp
1960# 214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1961 beta_coef_y(i + 1, 1, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i - 1) - s_cb(i + 1))**2._wp
1962# 215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1963 end do
1964
1965 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1966 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1967 if (null_weights) then
1968 if (bc_s%beg == bc_riemann_extrap) then
1969 d_cbr_y(1, 0) = 0._wp; d_cbr_y(0, 0) = 1._wp
1970# 222 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1971 d_cbl_y(1, 0) = 0._wp; d_cbl_y(0, 0) = 1._wp
1972# 223 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1973 end if
1974
1975 if (bc_s%end == bc_riemann_extrap) then
1976 d_cbr_y(0, s) = 0._wp; d_cbr_y(1, s) = 1._wp
1977# 227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1978 d_cbl_y(0, s) = 0._wp; d_cbl_y(1, s) = 1._wp
1979# 228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1980 end if
1981 end if
1982 ! END: Computing WENO3 Coefficients
1983
1984 ! Computing WENO5 Coefficients
1985 else if (weno_order == 5) then
1986 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1987 ! Polynomial reconstruction coefficients
1988 poly_coef_cbr_y(i + 1, 0, &
1989# 237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1990 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
1991 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
1992 poly_coef_cbr_y(i + 1, 1, &
1993# 240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1994 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
1995 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
1996 poly_coef_cbr_y(i + 1, 1, &
1997# 243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1998 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
1999 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2000 poly_coef_cbr_y(i + 1, 2, &
2001# 246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2002 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2003 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
2004 poly_coef_cbl_y(i + 1, 0, &
2005# 249 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2006 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
2007 & *(s_cb(i + 3) - s_cb(i + 1)))
2008 poly_coef_cbl_y(i + 1, 1, &
2009# 252 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2010 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
2011 & + 2))*(s_cb(i) - s_cb(i + 2)))
2012 poly_coef_cbl_y(i + 1, 1, &
2013# 255 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2014 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
2015 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2016 poly_coef_cbl_y(i + 1, 2, &
2017# 258 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2018 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
2019 & *(s_cb(i - 2) - s_cb(i + 1)))
2020
2021 poly_coef_cbr_y(i + 1, 0, &
2022# 262 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2023 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
2024 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
2025 poly_coef_cbr_y(i + 1, 2, &
2026# 265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2027 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
2028 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
2029 poly_coef_cbl_y(i + 1, 0, &
2030# 268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2031 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
2032 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
2033 poly_coef_cbl_y(i + 1, 2, &
2034# 271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2035 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
2036 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
2037
2038 ! Ideal (linear) weights
2039 d_cbr_y(0, &
2040# 276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2041 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2042 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
2043 d_cbr_y(2, &
2044# 279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2045 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
2046 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
2047 d_cbl_y(0, &
2048# 282 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2049 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
2050 & *(s_cb(i + 3) - s_cb(i - 1)))
2051 d_cbl_y(2, &
2052# 285 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2053 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
2054 & *(s_cb(i - 2) - s_cb(i + 3)))
2055
2056 d_cbr_y(1, i + 1) = 1._wp - d_cbr_y(0, i + 1) - d_cbr_y(2, i + 1)
2057# 289 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2058 d_cbl_y(1, i + 1) = 1._wp - d_cbl_y(0, i + 1) - d_cbl_y(2, i + 1)
2059# 290 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2060
2061 ! Smoothness indicator coefficients
2062 beta_coef_y(i + 1, 0, &
2063# 293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2064 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2065 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2066 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
2067
2068 beta_coef_y(i + 1, 0, &
2069# 298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2070 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2071 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
2072 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
2073 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
2074
2075 beta_coef_y(i + 1, 0, &
2076# 304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2077 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2078 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
2079 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
2080 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
2081
2082 beta_coef_y(i + 1, 1, &
2083# 310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2084 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2085 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2086 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
2087
2088 beta_coef_y(i + 1, 1, &
2089# 315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2090 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
2091 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
2092 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
2093 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
2094
2095 beta_coef_y(i + 1, 1, &
2096# 321 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2097 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2098 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2099 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
2100
2101 beta_coef_y(i + 1, 2, &
2102# 326 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2103 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2104 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
2105 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
2106 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
2107
2108 beta_coef_y(i + 1, 2, &
2109# 332 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2110 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2111 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
2112 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
2113 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
2114
2115 beta_coef_y(i + 1, 2, &
2116# 338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2117 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2118 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2119 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
2120 end do
2121
2122 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2123 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2124 if (null_weights) then
2125 if (bc_s%beg == bc_riemann_extrap) then
2126 d_cbr_y(1:2,0) = 0._wp; d_cbr_y(0, 0) = 1._wp
2127# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2128 d_cbl_y(1:2,0) = 0._wp; d_cbl_y(0, 0) = 1._wp
2129# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2130 d_cbr_y(2, 1) = 0._wp; d_cbr_y(:,1) = d_cbr_y(:,1)/sum(d_cbr_y(:,1))
2131# 350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2132 d_cbl_y(2, 1) = 0._wp; d_cbl_y(:,1) = d_cbl_y(:,1)/sum(d_cbl_y(:,1))
2133# 351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2134 end if
2135
2136 if (bc_s%end == bc_riemann_extrap) then
2137 d_cbr_y(0, s - 1) = 0._wp; d_cbr_y(:,s - 1) = d_cbr_y(:, &
2138# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2139 & s - 1)/sum(d_cbr_y(:,s - 1))
2140# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2141 d_cbl_y(0, s - 1) = 0._wp; d_cbl_y(:,s - 1) = d_cbl_y(:, &
2142# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2143 & s - 1)/sum(d_cbl_y(:,s - 1))
2144# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2145 d_cbr_y(0:1,s) = 0._wp; d_cbr_y(2, s) = 1._wp
2146# 359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2147 d_cbl_y(0:1,s) = 0._wp; d_cbl_y(2, s) = 1._wp
2148# 360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2149 end if
2150 end if
2151 else
2152 if (.not. teno) then
2153 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2154 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
2155 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
2156 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
2157 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
2158 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
2159 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
2160 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
2161 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
2162 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
2163 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
2164 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
2165
2166 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
2167 d_cbr_y(0, &
2168# 379 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2169 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2170 & *(w(1) - w(8)))
2171 d_cbr_y(1, &
2172# 382 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2173 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2174 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
2175 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2176 & *(w(2) - w(8)))
2177 d_cbr_y(2, &
2178# 387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2179 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2180 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
2181 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2182 & *(w(3) - w(8)))
2183 d_cbr_y(3, &
2184# 392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2185 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2186 & *(w(3) - w(8)))
2187
2188 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
2189 d_cbl_y(0, &
2190# 397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2191 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2192 & *(w(3) - w(8)))
2193 d_cbl_y(1, &
2194# 400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2195 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2196 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
2197 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2198 & *(w(3) - w(8)))
2199 d_cbl_y(2, &
2200# 405 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2201 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2202 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
2203 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2204 & *(w(2) - w(8)))
2205 d_cbl_y(3, &
2206# 410 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2207 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2208 & *(w(1) - w(8)))
2209 ! Note: Left has the reversed order of both points and coefficients compared to the right
2210
2211 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2212 poly_coef_cbr_y(i + 1, 0, &
2213# 416 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2214 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2215 & + y(2) + y(3) + y(4)))
2216 poly_coef_cbr_y(i + 1, 0, &
2217# 419 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2218 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2219 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
2220 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2221 poly_coef_cbr_y(i + 1, 0, &
2222# 423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2223 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2224 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2225 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2226
2227 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2228 poly_coef_cbr_y(i + 1, 1, &
2229# 429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2230 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2231 & + y(2) + y(3) + y(4)))
2232 poly_coef_cbr_y(i + 1, 1, &
2233# 432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2234 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
2235 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
2236 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2237 poly_coef_cbr_y(i + 1, 1, &
2238# 436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2239 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2240 & + y(2) + y(3) + y(4)))
2241
2242 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
2243 poly_coef_cbr_y(i + 1, 2, &
2244# 441 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2245 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
2246 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
2247 poly_coef_cbr_y(i + 1, 2, &
2248# 444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2249 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2250 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
2251 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2252 poly_coef_cbr_y(i + 1, 2, &
2253# 448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2254 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2255 & + y(2) + y(3) + y(4)))
2256
2257 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
2258 poly_coef_cbr_y(i + 1, 3, &
2259# 453 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2260 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
2261 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
2262 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2263 poly_coef_cbr_y(i + 1, 3, &
2264# 457 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2265 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
2266 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
2267 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2268 & + y(4)))
2269 poly_coef_cbr_y(i + 1, 3, &
2270# 462 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2271 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
2272 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
2273
2274 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
2275 poly_coef_cbl_y(i + 1, 3, &
2276# 467 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2277 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2278 & + y(2) + y(3) + y(4)))
2279 poly_coef_cbl_y(i + 1, 3, &
2280# 470 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2281 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2282 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
2283 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2284 poly_coef_cbl_y(i + 1, 3, &
2285# 474 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2286 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2287 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2288 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2289
2290 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
2291 poly_coef_cbl_y(i + 1, 2, &
2292# 480 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2293 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2294 & + y(2) + y(3) + y(4)))
2295 poly_coef_cbl_y(i + 1, 2, &
2296# 483 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2297 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
2298 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
2299 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2300 poly_coef_cbl_y(i + 1, 2, &
2301# 487 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2302 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2303 & + y(2) + y(3) + y(4)))
2304
2305 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
2306 poly_coef_cbl_y(i + 1, 1, &
2307# 492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2308 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
2309 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
2310 poly_coef_cbl_y(i + 1, 1, &
2311# 495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2312 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2313 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
2314 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2315 poly_coef_cbl_y(i + 1, 1, &
2316# 499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2317 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2318 & + y(2) + y(3) + y(4)))
2319
2320 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
2321 poly_coef_cbl_y(i + 1, 0, &
2322# 504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2323 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
2324 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
2325 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2326 poly_coef_cbl_y(i + 1, 0, &
2327# 508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2328 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
2329 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
2330 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2331 & + y(4)))
2332 poly_coef_cbl_y(i + 1, 0, &
2333# 513 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2334 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
2335 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
2336
2337 poly_coef_cbl_y(i + 1,:,:) = -poly_coef_cbl_y(i + 1,:,:)
2338# 517 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2339 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
2340
2341 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
2342 beta_coef_y(i + 1, 3, &
2343# 521 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2344 & 0) = (4*y(4)**2*(5*y(1)**2*y(2)**2 + 20*y(1)**2*y(2)*y(3) + 15*y(1)**2*y(2)*y(4) &
2345 & + 20*y(1)**2*y(3)**2 + 30*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 10*y(1)*y(2) &
2346 & **3 + 60*y(1)*y(2)**2*y(3) + 45*y(1)*y(2)**2*y(4) + 110*y(1)*y(2)*y(3)**2 &
2347 & + 165*y(1)*y(2)*y(3)*y(4) + 260*y(1)*y(2)*y(4)**2 + 60*y(1)*y(3)**3 + 135*y(1) &
2348 & *y(3)**2*y(4) + 400*y(1)*y(3)*y(4)**2 + 225*y(1)*y(4)**3 + 5*y(2)**4 + 40*y(2) &
2349 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
2350 & + 260*y(2)**2*y(4)**2 + 120*y(2)*y(3)**3 + 270*y(2)*y(3)**2*y(4) + 800*y(2)*y(3) &
2351 & *y(4)**2 + 450*y(2)*y(4)**3 + 45*y(3)**4 + 135*y(3)**3*y(4) + 600*y(3)**2*y(4) &
2352 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
2353 & **2*(y(1) + y(2) + y(3) + y(4))**2)
2354 beta_coef_y(i + 1, 3, &
2355# 532 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2356 & 1) = -(4*y(4)**2*(10*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2)*y(4) + 20*y(1)**3*y(3) &
2357 & **2 + 25*y(1)**3*y(3)*y(4) + 105*y(1)**3*y(4)**2 + 40*y(1)**2*y(2)**2*y(3) &
2358 & + 20*y(1)**2*y(2)**2*y(4) + 130*y(1)**2*y(2)*y(3)**2 + 155*y(1)**2*y(2)*y(3)*y(4) &
2359 & + 535*y(1)**2*y(2)*y(4)**2 + 90*y(1)**2*y(3)**3 + 165*y(1)**2*y(3)**2*y(4) &
2360 & + 790*y(1)**2*y(3)*y(4)**2 + 415*y(1)**2*y(4)**3 + 60*y(1)*y(2)**3*y(3) + 30*y(1) &
2361 & *y(2)**3*y(4) + 270*y(1)*y(2)**2*y(3)**2 + 315*y(1)*y(2)**2*y(3)*y(4) + 975*y(1) &
2362 & *y(2)**2*y(4)**2 + 360*y(1)*y(2)*y(3)**3 + 645*y(1)*y(2)*y(3)**2*y(4) + 2850*y(1) &
2363 & *y(2)*y(3)*y(4)**2 + 1460*y(1)*y(2)*y(4)**3 + 150*y(1)*y(3)**4 + 360*y(1)*y(3) &
2364 & **3*y(4) + 2000*y(1)*y(3)**2*y(4)**2 + 2005*y(1)*y(3)*y(4)**3 + 2077*y(1)*y(4) &
2365 & **4 + 30*y(2)**4*y(3) + 15*y(2)**4*y(4) + 180*y(2)**3*y(3)**2 + 210*y(2)**3*y(3) &
2366 & *y(4) + 650*y(2)**3*y(4)**2 + 360*y(2)**2*y(3)**3 + 645*y(2)**2*y(3)**2*y(4) &
2367 & + 2850*y(2)**2*y(3)*y(4)**2 + 1460*y(2)**2*y(4)**3 + 300*y(2)*y(3)**4 + 720*y(2) &
2368 & *y(3)**3*y(4) + 4000*y(2)*y(3)**2*y(4)**2 + 4010*y(2)*y(3)*y(4)**3 + 4154*y(2) &
2369 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
2370 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
2371 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2372 beta_coef_y(i + 1, 3, &
2373# 549 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2374 & 2) = (4*y(4)**2*(10*y(2)**3*y(3) + 5*y(2)**3*y(4) + 50*y(2)**2*y(3)**2 + 60*y(2) &
2375 & **2*y(3)*y(4) + 10*y(1)*y(2)**2*y(3) + 215*y(2)**2*y(4)**2 + 5*y(1)*y(2)**2*y(4) &
2376 & + 70*y(2)*y(3)**3 + 130*y(2)*y(3)**2*y(4) + 30*y(1)*y(2)*y(3)**2 + 775*y(2)*y(3) &
2377 & *y(4)**2 + 35*y(1)*y(2)*y(3)*y(4) + 415*y(2)*y(4)**3 + 110*y(1)*y(2)*y(4)**2 &
2378 & + 30*y(3)**4 + 75*y(3)**3*y(4) + 20*y(1)*y(3)**3 + 665*y(3)**2*y(4)**2 + 35*y(1) &
2379 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
2380 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
2381 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2382 beta_coef_y(i + 1, 3, &
2383# 558 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2384 & 3) = (4*y(4)**2*(5*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 50*y(1)**4*y(4)**2 &
2385 & + 30*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 300*y(1)**3*y(2)*y(4)**2 &
2386 & + 30*y(1)**3*y(3)**3 + 45*y(1)**3*y(3)**2*y(4) + 415*y(1)**3*y(3)*y(4)**2 &
2387 & + 200*y(1)**3*y(4)**3 + 75*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
2388 & + 750*y(1)**2*y(2)**2*y(4)**2 + 150*y(1)**2*y(2)*y(3)**3 + 225*y(1)**2*y(2)*y(3) &
2389 & **2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 1000*y(1)**2*y(2)*y(4)**3 + 75*y(1) &
2390 & **2*y(3)**4 + 150*y(1)**2*y(3)**3*y(4) + 1390*y(1)**2*y(3)**2*y(4)**2 + 1315*y(1) &
2391 & **2*y(3)*y(4)**3 + 1081*y(1)**2*y(4)**4 + 90*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
2392 & **3*y(3)*y(4) + 900*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2)**2*y(3)**3 + 405*y(1) &
2393 & *y(2)**2*y(3)**2*y(4) + 3735*y(1)*y(2)**2*y(3)*y(4)**2 + 1800*y(1)*y(2)**2*y(4) &
2394 & **3 + 270*y(1)*y(2)*y(3)**4 + 540*y(1)*y(2)*y(3)**3*y(4) + 5025*y(1)*y(2)*y(3) &
2395 & **2*y(4)**2 + 4755*y(1)*y(2)*y(3)*y(4)**3 + 4224*y(1)*y(2)*y(4)**4 + 90*y(1)*y(3) &
2396 & **5 + 225*y(1)*y(3)**4*y(4) + 2190*y(1)*y(3)**3*y(4)**2 + 3060*y(1)*y(3)**2*y(4) &
2397 & **3 + 4529*y(1)*y(3)*y(4)**4 + 1762*y(1)*y(4)**5 + 45*y(2)**4*y(3)**2 + 45*y(2) &
2398 & **4*y(3)*y(4) + 450*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2)**3*y(3) &
2399 & **2*y(4) + 2490*y(2)**3*y(3)*y(4)**2 + 1200*y(2)**3*y(4)**3 + 270*y(2)**2*y(3) &
2400 & **4 + 540*y(2)**2*y(3)**3*y(4) + 5025*y(2)**2*y(3)**2*y(4)**2 + 4755*y(2)**2*y(3) &
2401 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
2402 & + 4380*y(2)*y(3)**3*y(4)**2 + 6120*y(2)*y(3)**2*y(4)**3 + 9058*y(2)*y(3)*y(4)**4 &
2403 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
2404 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
2405 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2406 & + y(3) + y(4))**2)
2407 beta_coef_y(i + 1, 3, &
2408# 582 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2409 & 4) = -(4*y(4)**2*(10*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 100*y(1) &
2410 & **2*y(2)*y(4)**2 + 10*y(1)**2*y(3)**3 + 15*y(1)**2*y(3)**2*y(4) + 205*y(1) &
2411 & **2*y(3)*y(4)**2 + 100*y(1)**2*y(4)**3 + 30*y(1)*y(2)**2*y(3)**2 + 30*y(1)*y(2) &
2412 & **2*y(3)*y(4) + 300*y(1)*y(2)**2*y(4)**2 + 60*y(1)*y(2)*y(3)**3 + 90*y(1)*y(2) &
2413 & *y(3)**2*y(4) + 1030*y(1)*y(2)*y(3)*y(4)**2 + 500*y(1)*y(2)*y(4)**3 + 30*y(1) &
2414 & *y(3)**4 + 60*y(1)*y(3)**3*y(4) + 835*y(1)*y(3)**2*y(4)**2 + 805*y(1)*y(3)*y(4) &
2415 & **3 + 1762*y(1)*y(4)**4 + 30*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 300*y(2) &
2416 & **3*y(4)**2 + 90*y(2)**2*y(3)**3 + 135*y(2)**2*y(3)**2*y(4) + 1445*y(2)**2*y(3) &
2417 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
2418 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
2419 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
2420 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
2421 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2422 beta_coef_y(i + 1, 3, &
2423# 596 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2424 & 5) = (4*y(4)**2*(5*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 &
2425 & + 10*y(2)*y(3)**3 + 15*y(2)*y(3)**2*y(4) + 205*y(2)*y(3)*y(4)**2 + 100*y(2)*y(4) &
2426 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
2427 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
2428 & + y(4))**2)
2429
2430 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
2431 beta_coef_y(i + 1, 2, &
2432# 604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2433 & 0) = (4*y(3)**2*(5*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 &
2434 & + 10*y(1)*y(2)**3 + 15*y(1)*y(2)**2*y(3) + 205*y(1)*y(2)*y(3)**2 + 100*y(1)*y(3) &
2435 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
2436 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
2437 & + y(4))**2)
2438 beta_coef_y(i + 1, 2, &
2439# 610 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2440 & 1) = (4*y(3)**2*(5*y(1)**3*y(2)*y(3) + 10*y(1)**3*y(2)*y(4) - 95*y(1)**3*y(3)**2 &
2441 & + 5*y(1)**3*y(3)*y(4) + 20*y(1)**2*y(2)**2*y(3) + 40*y(1)**2*y(2)**2*y(4) &
2442 & - 465*y(1)**2*y(2)*y(3)**2 + 55*y(1)**2*y(2)*y(3)*y(4) + 10*y(1)**2*y(2)*y(4)**2 &
2443 & - 285*y(1)**2*y(3)**3 + 20*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 &
2444 & + 30*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) - 825*y(1)*y(2)**2*y(3)**2 &
2445 & + 135*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 - 1040*y(1)*y(2)*y(3)**3 &
2446 & + 100*y(1)*y(2)*y(3)**2*y(4) + 35*y(1)*y(2)*y(3)*y(4)**2 - 1847*y(1)*y(3)**4 &
2447 & + 125*y(1)*y(3)**3*y(4) + 110*y(1)*y(3)**2*y(4)**2 + 15*y(2)**4*y(3) + 30*y(2) &
2448 & **4*y(4) - 550*y(2)**3*y(3)**2 + 90*y(2)**3*y(3)*y(4) + 20*y(2)**3*y(4)**2 &
2449 & - 1040*y(2)**2*y(3)**3 + 100*y(2)**2*y(3)**2*y(4) + 35*y(2)**2*y(3)*y(4)**2 &
2450 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
2451 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
2452 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
2453 & **2)
2454 beta_coef_y(i + 1, 2, &
2455# 625 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2456 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
2457 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
2458 & + 5*y(1)*y(2)**2*y(3) + 10*y(1)*y(2)**2*y(4) + 100*y(1)*y(3)**2*y(4) + 205*y(2) &
2459 & *y(3)**2*y(4) + 15*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
2460 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2461 & + y(4))**2)
2462 beta_coef_y(i + 1, 2, &
2463# 632 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2464 & 3) = (4*y(3)**2*(50*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 &
2465 & + 300*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 30*y(1)**3*y(2)*y(4)**2 &
2466 & + 200*y(1)**3*y(3)**3 + 25*y(1)**3*y(3)**2*y(4) + 35*y(1)**3*y(3)*y(4)**2 &
2467 & + 10*y(1)**3*y(4)**3 + 750*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
2468 & + 75*y(1)**2*y(2)**2*y(4)**2 + 1000*y(1)**2*y(2)*y(3)**3 + 125*y(1)**2*y(2)*y(3) &
2469 & **2*y(4) + 175*y(1)**2*y(2)*y(3)*y(4)**2 + 50*y(1)**2*y(2)*y(4)**3 + 1081*y(1) &
2470 & **2*y(3)**4 - 50*y(1)**2*y(3)**3*y(4) - 10*y(1)**2*y(3)**2*y(4)**2 + 45*y(1) &
2471 & **2*y(3)*y(4)**3 + 5*y(1)**2*y(4)**4 + 900*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
2472 & **3*y(3)*y(4) + 90*y(1)*y(2)**3*y(4)**2 + 1800*y(1)*y(2)**2*y(3)**3 + 225*y(1) &
2473 & *y(2)**2*y(3)**2*y(4) + 315*y(1)*y(2)**2*y(3)*y(4)**2 + 90*y(1)*y(2)**2*y(4)**3 &
2474 & + 4224*y(1)*y(2)*y(3)**4 - 120*y(1)*y(2)*y(3)**3*y(4) + 25*y(1)*y(2)*y(3)**2*y(4) &
2475 & **2 + 165*y(1)*y(2)*y(3)*y(4)**3 + 20*y(1)*y(2)*y(4)**4 + 3324*y(1)*y(3)**5 &
2476 & + 1407*y(1)*y(3)**4*y(4) - 100*y(1)*y(3)**3*y(4)**2 + 70*y(1)*y(3)**2*y(4)**3 &
2477 & + 15*y(1)*y(3)*y(4)**4 + 450*y(2)**4*y(3)**2 + 45*y(2)**4*y(3)*y(4) + 45*y(2) &
2478 & **4*y(4)**2 + 1200*y(2)**3*y(3)**3 + 150*y(2)**3*y(3)**2*y(4) + 210*y(2)**3*y(3) &
2479 & *y(4)**2 + 60*y(2)**3*y(4)**3 + 4224*y(2)**2*y(3)**4 - 120*y(2)**2*y(3)**3*y(4) &
2480 & + 25*y(2)**2*y(3)**2*y(4)**2 + 165*y(2)**2*y(3)*y(4)**3 + 20*y(2)**2*y(4)**4 &
2481 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
2482 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
2483 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
2484 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2485 & + y(3) + y(4))**2)
2486 beta_coef_y(i + 1, 2, &
2487# 655 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2488 & 4) = -(4*y(3)**2*(100*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 10*y(1) &
2489 & **2*y(2)*y(4)**2 - 95*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 + 300*y(1) &
2490 & *y(2)**2*y(3)**2 + 30*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 + 200*y(1) &
2491 & *y(2)*y(3)**3 - 260*y(1)*y(2)*y(3)**2*y(4) + 50*y(1)*y(2)*y(3)*y(4)**2 + 10*y(1) &
2492 & *y(2)*y(4)**3 + 1562*y(1)*y(3)**4 - 190*y(1)*y(3)**3*y(4) + 15*y(1)*y(3)**2*y(4) &
2493 & **2 + 5*y(1)*y(3)*y(4)**3 + 300*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 30*y(2) &
2494 & **3*y(4)**2 + 400*y(2)**2*y(3)**3 - 235*y(2)**2*y(3)**2*y(4) + 85*y(2)**2*y(3) &
2495 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
2496 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
2497 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
2498 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
2499 & **2)
2500 beta_coef_y(i + 1, 2, &
2501# 668 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2502 & 5) = (4*y(3)**2*(50*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 5*y(2)**2*y(4)**2 &
2503 & - 95*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 781*y(3)**4 + 50*y(3)**2*y(4)**2)) &
2504 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
2505
2506 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2507 beta_coef_y(i + 1, 1, &
2508# 674 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2509 & 0) = (4*y(2)**2*(50*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 5*y(1)**2*y(3)**2 &
2510 & - 95*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 781*y(2)**4 + 50*y(2)**2*y(3)**2)) &
2511 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2512 beta_coef_y(i + 1, 1, &
2513# 678 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2514 & 1) = -(4*y(2)**2*(105*y(1)**3*y(2)**2 + 25*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2) &
2515 & *y(4) + 20*y(1)**3*y(3)**2 + 10*y(1)**3*y(3)*y(4) + 110*y(1)**2*y(2)**3 - 35*y(1) &
2516 & **2*y(2)**2*y(3) + 15*y(1)**2*y(2)**2*y(4) + 85*y(1)**2*y(2)*y(3)**2 + 50*y(1) &
2517 & **2*y(2)*y(3)*y(4) + 5*y(1)**2*y(2)*y(4)**2 + 30*y(1)**2*y(3)**3 + 30*y(1) &
2518 & **2*y(3)**2*y(4) + 10*y(1)**2*y(3)*y(4)**2 + 1467*y(1)*y(2)**4 - 460*y(1)*y(2) &
2519 & **3*y(3) - 190*y(1)*y(2)**3*y(4) - 235*y(1)*y(2)**2*y(3)**2 - 260*y(1)*y(2) &
2520 & **2*y(3)*y(4) - 95*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2)*y(3)**3 + 30*y(1)*y(2) &
2521 & *y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 3124*y(2)**5 + 3224*y(2)**4*y(3) &
2522 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
2523 & **2*y(3)**3 + 300*y(2)**2*y(3)**2*y(4) + 100*y(2)**2*y(3)*y(4)**2))/(5*(y(2) &
2524 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2525 & + y(3) + y(4))**2)
2526 beta_coef_y(i + 1, 1, &
2527# 691 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2528 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
2529 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
2530 & + 205*y(1)*y(2)**2*y(3) + 100*y(1)*y(2)**2*y(4) + 10*y(1)*y(3)**2*y(4) + 5*y(2) &
2531 & *y(3)**2*y(4) - 95*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
2532 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2533 & + y(4))**2)
2534 beta_coef_y(i + 1, 1, &
2535# 698 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2536 & 3) = (4*y(2)**2*(60*y(1)**4*y(2)**2 + 30*y(1)**4*y(2)*y(3) + 15*y(1)**4*y(2)*y(4) &
2537 & + 20*y(1)**4*y(3)**2 + 20*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 + 135*y(1) &
2538 & **3*y(2)**3 + 140*y(1)**3*y(2)**2*y(3) + 70*y(1)**3*y(2)**2*y(4) + 165*y(1) &
2539 & **3*y(2)*y(3)**2 + 165*y(1)**3*y(2)*y(3)*y(4) + 45*y(1)**3*y(2)*y(4)**2 + 60*y(1) &
2540 & **3*y(3)**3 + 90*y(1)**3*y(3)**2*y(4) + 50*y(1)**3*y(3)*y(4)**2 + 10*y(1)**3*y(4) &
2541 & **3 + 771*y(1)**2*y(2)**4 - 200*y(1)**2*y(2)**3*y(3) - 100*y(1)**2*y(2)**3*y(4) &
2542 & + 25*y(1)**2*y(2)**2*y(3)**2 + 25*y(1)**2*y(2)**2*y(3)*y(4) - 10*y(1)**2*y(2) &
2543 & **2*y(4)**2 + 210*y(1)**2*y(2)*y(3)**3 + 315*y(1)**2*y(2)*y(3)**2*y(4) + 175*y(1) &
2544 & **2*y(2)*y(3)*y(4)**2 + 35*y(1)**2*y(2)*y(4)**3 + 45*y(1)**2*y(3)**4 + 90*y(1) &
2545 & **2*y(3)**3*y(4) + 75*y(1)**2*y(3)**2*y(4)**2 + 30*y(1)**2*y(3)*y(4)**3 + 5*y(1) &
2546 & **2*y(4)**4 + 3039*y(1)*y(2)**5 + 2814*y(1)*y(2)**4*y(3) + 1407*y(1)*y(2)**4*y(4) &
2547 & - 120*y(1)*y(2)**3*y(3)**2 - 120*y(1)*y(2)**3*y(3)*y(4) - 50*y(1)*y(2)**3*y(4) &
2548 & **2 + 150*y(1)*y(2)**2*y(3)**3 + 225*y(1)*y(2)**2*y(3)**2*y(4) + 125*y(1)*y(2) &
2549 & **2*y(3)*y(4)**2 + 25*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2) &
2550 & *y(3)**3*y(4) + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1) &
2551 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
2552 & **4*y(3)**2 + 4224*y(2)**4*y(3)*y(4) + 1081*y(2)**4*y(4)**2 + 1200*y(2)**3*y(3) &
2553 & **3 + 1800*y(2)**3*y(3)**2*y(4) + 1000*y(2)**3*y(3)*y(4)**2 + 200*y(2)**3*y(4) &
2554 & **3 + 450*y(2)**2*y(3)**4 + 900*y(2)**2*y(3)**3*y(4) + 750*y(2)**2*y(3)**2*y(4) &
2555 & **2 + 300*y(2)**2*y(3)*y(4)**3 + 50*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) &
2556 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2557 beta_coef_y(i + 1, 1, &
2558# 720 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2559 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
2560 & **2*y(2)**2*y(4) + 35*y(1)**2*y(2)*y(3)**2 + 35*y(1)**2*y(2)*y(3)*y(4) + 5*y(1) &
2561 & **2*y(2)*y(4)**2 + 20*y(1)**2*y(3)**3 + 30*y(1)**2*y(3)**2*y(4) + 10*y(1)**2*y(3) &
2562 & *y(4)**2 - 1452*y(1)*y(2)**4 + 250*y(1)*y(2)**3*y(3) + 125*y(1)*y(2)**3*y(4) &
2563 & + 100*y(1)*y(2)**2*y(3)**2 + 100*y(1)*y(2)**2*y(3)*y(4) + 20*y(1)*y(2)**2*y(4) &
2564 & **2 + 90*y(1)*y(2)*y(3)**3 + 135*y(1)*y(2)*y(3)**2*y(4) + 55*y(1)*y(2)*y(3)*y(4) &
2565 & **2 + 5*y(1)*y(2)*y(4)**3 + 30*y(1)*y(3)**4 + 60*y(1)*y(3)**3*y(4) + 40*y(1)*y(3) &
2566 & **2*y(4)**2 + 10*y(1)*y(3)*y(4)**3 - 3219*y(2)**5 - 3694*y(2)**4*y(3) - 1847*y(2) &
2567 & **4*y(4) - 1040*y(2)**3*y(3)**2 - 1040*y(2)**3*y(3)*y(4) - 285*y(2)**3*y(4)**2 &
2568 & - 550*y(2)**2*y(3)**3 - 825*y(2)**2*y(3)**2*y(4) - 465*y(2)**2*y(3)*y(4)**2 &
2569 & - 95*y(2)**2*y(4)**3 + 15*y(2)*y(3)**4 + 30*y(2)*y(3)**3*y(4) + 20*y(2)*y(3) &
2570 & **2*y(4)**2 + 5*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
2571 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2572 beta_coef_y(i + 1, 1, &
2573# 734 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2574 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
2575 & **2*y(3)**2 + 205*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 + 10*y(2)*y(3)**3 &
2576 & + 15*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
2577 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
2578 & + y(3) + y(4))**2)
2579
2580 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2581 beta_coef_y(i + 1, 0, &
2582# 742 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2583 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
2584 & **2*y(2)**2 + 205*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 + 10*y(1)*y(2)**3 &
2585 & + 15*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 5*y(2)**4 + 10*y(2)**3*y(3) &
2586 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2587 & + y(3) + y(4))**2)
2588 beta_coef_y(i + 1, 0, &
2589# 748 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2590 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
2591 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
2592 & **3*y(2)*y(4) + 700*y(1)**3*y(3)**2 + 500*y(1)**3*y(3)*y(4) + 100*y(1)**3*y(4) &
2593 & **2 + 1060*y(1)**2*y(2)**3 + 2205*y(1)**2*y(2)**2*y(3) + 835*y(1)**2*y(2)**2*y(4) &
2594 & + 1445*y(1)**2*y(2)*y(3)**2 + 1030*y(1)**2*y(2)*y(3)*y(4) + 205*y(1)**2*y(2)*y(4) &
2595 & **2 + 300*y(1)**2*y(3)**3 + 300*y(1)**2*y(3)**2*y(4) + 100*y(1)**2*y(3)*y(4)**2 &
2596 & + 75*y(1)*y(2)**4 + 180*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) + 135*y(1)*y(2) &
2597 & **2*y(3)**2 + 90*y(1)*y(2)**2*y(3)*y(4) + 15*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2) &
2598 & *y(3)**3 + 30*y(1)*y(2)*y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 30*y(2)**5 &
2599 & + 90*y(2)**4*y(3) + 30*y(2)**4*y(4) + 90*y(2)**3*y(3)**2 + 60*y(2)**3*y(3)*y(4) &
2600 & + 10*y(2)**3*y(4)**2 + 30*y(2)**2*y(3)**3 + 30*y(2)**2*y(3)**2*y(4) + 10*y(2) &
2601 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
2602 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2603 beta_coef_y(i + 1, 0, &
2604# 762 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2605 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
2606 & *y(1)**3 + 665*y(1)**2*y(2)**2 + 775*y(1)**2*y(2)*y(3) + 220*y(4)*y(1)**2*y(2) &
2607 & + 215*y(1)**2*y(3)**2 + 110*y(4)*y(1)**2*y(3) + 75*y(1)*y(2)**3 + 130*y(1)*y(2) &
2608 & **2*y(3) + 35*y(4)*y(1)*y(2)**2 + 60*y(1)*y(2)*y(3)**2 + 35*y(4)*y(1)*y(2)*y(3) &
2609 & + 5*y(1)*y(3)**3 + 5*y(4)*y(1)*y(3)**2 + 30*y(2)**4 + 70*y(2)**3*y(3) + 20*y(4) &
2610 & *y(2)**3 + 50*y(2)**2*y(3)**2 + 30*y(4)*y(2)**2*y(3) + 10*y(2)*y(3)**3 + 10*y(4) &
2611 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
2612 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2613 beta_coef_y(i + 1, 0, &
2614# 771 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2615 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
2616 & **5*y(4) + 4884*y(1)**4*y(2)**2 + 9058*y(1)**4*y(2)*y(3) + 4529*y(1)**4*y(2)*y(4) &
2617 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
2618 & + 2565*y(1)**3*y(2)**3 + 6120*y(1)**3*y(2)**2*y(3) + 3060*y(1)**3*y(2)**2*y(4) &
2619 & + 4755*y(1)**3*y(2)*y(3)**2 + 4755*y(1)**3*y(2)*y(3)*y(4) + 1315*y(1)**3*y(2) &
2620 & *y(4)**2 + 1200*y(1)**3*y(3)**3 + 1800*y(1)**3*y(3)**2*y(4) + 1000*y(1)**3*y(3) &
2621 & *y(4)**2 + 200*y(1)**3*y(4)**3 + 1395*y(1)**2*y(2)**4 + 4380*y(1)**2*y(2)**3*y(3) &
2622 & + 2190*y(1)**2*y(2)**3*y(4) + 5025*y(1)**2*y(2)**2*y(3)**2 + 5025*y(1)**2*y(2) &
2623 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
2624 & + 3735*y(1)**2*y(2)*y(3)**2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 415*y(1) &
2625 & **2*y(2)*y(4)**3 + 450*y(1)**2*y(3)**4 + 900*y(1)**2*y(3)**3*y(4) + 750*y(1) &
2626 & **2*y(3)**2*y(4)**2 + 300*y(1)**2*y(3)*y(4)**3 + 50*y(1)**2*y(4)**4 + 135*y(1) &
2627 & *y(2)**5 + 450*y(1)*y(2)**4*y(3) + 225*y(1)*y(2)**4*y(4) + 540*y(1)*y(2)**3*y(3) &
2628 & **2 + 540*y(1)*y(2)**3*y(3)*y(4) + 150*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2) &
2629 & **2*y(3)**3 + 405*y(1)*y(2)**2*y(3)**2*y(4) + 225*y(1)*y(2)**2*y(3)*y(4)**2 &
2630 & + 45*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2)*y(3)**3*y(4) &
2631 & + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1)*y(2)*y(4)**4 &
2632 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
2633 & + 270*y(2)**4*y(3)*y(4) + 75*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2) &
2634 & **3*y(3)**2*y(4) + 150*y(2)**3*y(3)*y(4)**2 + 30*y(2)**3*y(4)**3 + 45*y(2) &
2635 & **2*y(3)**4 + 90*y(2)**2*y(3)**3*y(4) + 75*y(2)**2*y(3)**2*y(4)**2 + 30*y(2) &
2636 & **2*y(3)*y(4)**3 + 5*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3)) &
2637 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2638 beta_coef_y(i + 1, 0, &
2639# 795 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2640 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
2641 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
2642 & **3*y(2)*y(4) + 1460*y(1)**3*y(3)**2 + 1460*y(1)**3*y(3)*y(4) + 415*y(1)**3*y(4) &
2643 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
2644 & **2*y(4) + 2850*y(1)**2*y(2)*y(3)**2 + 2850*y(1)**2*y(2)*y(3)*y(4) + 790*y(1) &
2645 & **2*y(2)*y(4)**2 + 650*y(1)**2*y(3)**3 + 975*y(1)**2*y(3)**2*y(4) + 535*y(1) &
2646 & **2*y(3)*y(4)**2 + 105*y(1)**2*y(4)**3 + 270*y(1)*y(2)**4 + 720*y(1)*y(2)**3*y(3) &
2647 & + 360*y(1)*y(2)**3*y(4) + 645*y(1)*y(2)**2*y(3)**2 + 645*y(1)*y(2)**2*y(3)*y(4) &
2648 & + 165*y(1)*y(2)**2*y(4)**2 + 210*y(1)*y(2)*y(3)**3 + 315*y(1)*y(2)*y(3)**2*y(4) &
2649 & + 155*y(1)*y(2)*y(3)*y(4)**2 + 25*y(1)*y(2)*y(4)**3 + 15*y(1)*y(3)**4 + 30*y(1) &
2650 & *y(3)**3*y(4) + 20*y(1)*y(3)**2*y(4)**2 + 5*y(1)*y(3)*y(4)**3 + 90*y(2)**5 &
2651 & + 300*y(2)**4*y(3) + 150*y(2)**4*y(4) + 360*y(2)**3*y(3)**2 + 360*y(2)**3*y(3) &
2652 & *y(4) + 90*y(2)**3*y(4)**2 + 180*y(2)**2*y(3)**3 + 270*y(2)**2*y(3)**2*y(4) &
2653 & + 130*y(2)**2*y(3)*y(4)**2 + 20*y(2)**2*y(4)**3 + 30*y(2)*y(3)**4 + 60*y(2)*y(3) &
2654 & **3*y(4) + 40*y(2)*y(3)**2*y(4)**2 + 10*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2)) &
2655 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2656 & + y(4))**2)
2657 beta_coef_y(i + 1, 0, &
2658# 813 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2659 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
2660 & **3*y(4) + 600*y(1)**2*y(2)**2 + 800*y(1)**2*y(2)*y(3) + 400*y(1)**2*y(2)*y(4) &
2661 & + 260*y(1)**2*y(3)**2 + 260*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 135*y(1) &
2662 & *y(2)**3 + 270*y(1)*y(2)**2*y(3) + 135*y(1)*y(2)**2*y(4) + 165*y(1)*y(2)*y(3)**2 &
2663 & + 165*y(1)*y(2)*y(3)*y(4) + 30*y(1)*y(2)*y(4)**2 + 30*y(1)*y(3)**3 + 45*y(1)*y(3) &
2664 & **2*y(4) + 15*y(1)*y(3)*y(4)**2 + 45*y(2)**4 + 120*y(2)**3*y(3) + 60*y(2)**3*y(4) &
2665 & + 110*y(2)**2*y(3)**2 + 110*y(2)**2*y(3)*y(4) + 20*y(2)**2*y(4)**2 + 40*y(2)*y(3) &
2666 & **3 + 60*y(2)*y(3)**2*y(4) + 20*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
2667 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
2668 & + y(3) + y(4))**2)
2669 end do
2670 else
2671 ! (Fu, et al., 2016) Table 2 (for right flux)
2672 d_cbl_y(0,:) = 18._wp/35._wp
2673# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2674 d_cbl_y(1,:) = 3._wp/35._wp
2675# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2676 d_cbl_y(2,:) = 9._wp/35._wp
2677# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2678 d_cbl_y(3,:) = 1._wp/35._wp
2679# 830 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2680 d_cbl_y(4,:) = 4._wp/35._wp
2681# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2682
2683 d_cbr_y(0,:) = 18._wp/35._wp
2684# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2685 d_cbr_y(1,:) = 9._wp/35._wp
2686# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2687 d_cbr_y(2,:) = 3._wp/35._wp
2688# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2689 d_cbr_y(3,:) = 4._wp/35._wp
2690# 836 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2691 d_cbr_y(4,:) = 1._wp/35._wp
2692# 837 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2693 end if
2694 end if
2695 end if
2696# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2697 ! Computing WENO3 Coefficients
2698 if (weno_dir == 3) then
2699# 196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2700 if (weno_order == 3) then
2701 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2702 ! Polynomial reconstruction coefficients
2703 poly_coef_cbr_z(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
2704# 200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2705 poly_coef_cbr_z(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
2706# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2707
2708 poly_coef_cbl_z(i + 1, 0, 0) = -poly_coef_cbr_z(i + 1, 0, 0)
2709# 203 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2710 poly_coef_cbl_z(i + 1, 1, 0) = -poly_coef_cbr_z(i + 1, 1, 0)
2711# 204 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2712
2713 ! Ideal (linear) weights
2714 d_cbr_z(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
2715# 207 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2716 d_cbl_z(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
2717# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2718
2719 d_cbr_z(1, i + 1) = 1._wp - d_cbr_z(0, i + 1)
2720# 210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2721 d_cbl_z(1, i + 1) = 1._wp - d_cbl_z(0, i + 1)
2722# 211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2723
2724 ! Smoothness indicator coefficients
2725 beta_coef_z(i + 1, 0, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i) - s_cb(i + 2))**2._wp
2726# 214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2727 beta_coef_z(i + 1, 1, 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp/(s_cb(i - 1) - s_cb(i + 1))**2._wp
2728# 215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2729 end do
2730
2731 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2732 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2733 if (null_weights) then
2734 if (bc_s%beg == bc_riemann_extrap) then
2735 d_cbr_z(1, 0) = 0._wp; d_cbr_z(0, 0) = 1._wp
2736# 222 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2737 d_cbl_z(1, 0) = 0._wp; d_cbl_z(0, 0) = 1._wp
2738# 223 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2739 end if
2740
2741 if (bc_s%end == bc_riemann_extrap) then
2742 d_cbr_z(0, s) = 0._wp; d_cbr_z(1, s) = 1._wp
2743# 227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2744 d_cbl_z(0, s) = 0._wp; d_cbl_z(1, s) = 1._wp
2745# 228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2746 end if
2747 end if
2748 ! END: Computing WENO3 Coefficients
2749
2750 ! Computing WENO5 Coefficients
2751 else if (weno_order == 5) then
2752 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2753 ! Polynomial reconstruction coefficients
2754 poly_coef_cbr_z(i + 1, 0, &
2755# 237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2756 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
2757 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
2758 poly_coef_cbr_z(i + 1, 1, &
2759# 240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2760 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
2761 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
2762 poly_coef_cbr_z(i + 1, 1, &
2763# 243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2764 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
2765 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2766 poly_coef_cbr_z(i + 1, 2, &
2767# 246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2768 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2769 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
2770 poly_coef_cbl_z(i + 1, 0, &
2771# 249 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2772 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
2773 & *(s_cb(i + 3) - s_cb(i + 1)))
2774 poly_coef_cbl_z(i + 1, 1, &
2775# 252 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2776 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
2777 & + 2))*(s_cb(i) - s_cb(i + 2)))
2778 poly_coef_cbl_z(i + 1, 1, &
2779# 255 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2780 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
2781 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2782 poly_coef_cbl_z(i + 1, 2, &
2783# 258 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2784 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
2785 & *(s_cb(i - 2) - s_cb(i + 1)))
2786
2787 poly_coef_cbr_z(i + 1, 0, &
2788# 262 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2789 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
2790 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
2791 poly_coef_cbr_z(i + 1, 2, &
2792# 265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2793 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
2794 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
2795 poly_coef_cbl_z(i + 1, 0, &
2796# 268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2797 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
2798 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
2799 poly_coef_cbl_z(i + 1, 2, &
2800# 271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2801 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
2802 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
2803
2804 ! Ideal (linear) weights
2805 d_cbr_z(0, &
2806# 276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2807 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2808 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
2809 d_cbr_z(2, &
2810# 279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2811 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
2812 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
2813 d_cbl_z(0, &
2814# 282 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2815 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
2816 & *(s_cb(i + 3) - s_cb(i - 1)))
2817 d_cbl_z(2, &
2818# 285 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2819 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
2820 & *(s_cb(i - 2) - s_cb(i + 3)))
2821
2822 d_cbr_z(1, i + 1) = 1._wp - d_cbr_z(0, i + 1) - d_cbr_z(2, i + 1)
2823# 289 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2824 d_cbl_z(1, i + 1) = 1._wp - d_cbl_z(0, i + 1) - d_cbl_z(2, i + 1)
2825# 290 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2826
2827 ! Smoothness indicator coefficients
2828 beta_coef_z(i + 1, 0, &
2829# 293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2830 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2831 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2832 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
2833
2834 beta_coef_z(i + 1, 0, &
2835# 298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2836 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2837 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
2838 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
2839 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
2840
2841 beta_coef_z(i + 1, 0, &
2842# 304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2843 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2844 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
2845 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
2846 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
2847
2848 beta_coef_z(i + 1, 1, &
2849# 310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2850 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2851 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2852 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
2853
2854 beta_coef_z(i + 1, 1, &
2855# 315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2856 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
2857 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
2858 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
2859 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
2860
2861 beta_coef_z(i + 1, 1, &
2862# 321 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2863 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2864 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2865 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
2866
2867 beta_coef_z(i + 1, 2, &
2868# 326 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2869 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2870 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
2871 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
2872 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
2873
2874 beta_coef_z(i + 1, 2, &
2875# 332 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2876 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2877 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
2878 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
2879 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
2880
2881 beta_coef_z(i + 1, 2, &
2882# 338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2883 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2884 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2885 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
2886 end do
2887
2888 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2889 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2890 if (null_weights) then
2891 if (bc_s%beg == bc_riemann_extrap) then
2892 d_cbr_z(1:2,0) = 0._wp; d_cbr_z(0, 0) = 1._wp
2893# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2894 d_cbl_z(1:2,0) = 0._wp; d_cbl_z(0, 0) = 1._wp
2895# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2896 d_cbr_z(2, 1) = 0._wp; d_cbr_z(:,1) = d_cbr_z(:,1)/sum(d_cbr_z(:,1))
2897# 350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2898 d_cbl_z(2, 1) = 0._wp; d_cbl_z(:,1) = d_cbl_z(:,1)/sum(d_cbl_z(:,1))
2899# 351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2900 end if
2901
2902 if (bc_s%end == bc_riemann_extrap) then
2903 d_cbr_z(0, s - 1) = 0._wp; d_cbr_z(:,s - 1) = d_cbr_z(:, &
2904# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2905 & s - 1)/sum(d_cbr_z(:,s - 1))
2906# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2907 d_cbl_z(0, s - 1) = 0._wp; d_cbl_z(:,s - 1) = d_cbl_z(:, &
2908# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2909 & s - 1)/sum(d_cbl_z(:,s - 1))
2910# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2911 d_cbr_z(0:1,s) = 0._wp; d_cbr_z(2, s) = 1._wp
2912# 359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2913 d_cbl_z(0:1,s) = 0._wp; d_cbl_z(2, s) = 1._wp
2914# 360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2915 end if
2916 end if
2917 else
2918 if (.not. teno) then
2919 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2920 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
2921 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
2922 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
2923 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
2924 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
2925 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
2926 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
2927 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
2928 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
2929 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
2930 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
2931
2932 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
2933 d_cbr_z(0, &
2934# 379 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2935 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2936 & *(w(1) - w(8)))
2937 d_cbr_z(1, &
2938# 382 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2939 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2940 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
2941 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2942 & *(w(2) - w(8)))
2943 d_cbr_z(2, &
2944# 387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2945 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2946 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
2947 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2948 & *(w(3) - w(8)))
2949 d_cbr_z(3, &
2950# 392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2951 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2952 & *(w(3) - w(8)))
2953
2954 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
2955 d_cbl_z(0, &
2956# 397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2957 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2958 & *(w(3) - w(8)))
2959 d_cbl_z(1, &
2960# 400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2961 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2962 & *w(3) - w(1)*w(7) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) - w(3)*w(7) - w(3)*w(8) + w(7) &
2963 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2964 & *(w(3) - w(8)))
2965 d_cbl_z(2, &
2966# 405 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2967 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2968 & *w(7) - w(2)*w(6) - w(1)*w(8) - w(2)*w(7) - w(2)*w(8) + w(6)*w(7) + w(6)*w(8) + w(7) &
2969 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2970 & *(w(2) - w(8)))
2971 d_cbl_z(3, &
2972# 410 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2973 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2974 & *(w(1) - w(8)))
2975 ! Note: Left has the reversed order of both points and coefficients compared to the right
2976
2977 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2978 poly_coef_cbr_z(i + 1, 0, &
2979# 416 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2980 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2981 & + y(2) + y(3) + y(4)))
2982 poly_coef_cbr_z(i + 1, 0, &
2983# 419 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2984 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2985 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
2986 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2987 poly_coef_cbr_z(i + 1, 0, &
2988# 423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2989 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2990 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2991 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2992
2993 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2994 poly_coef_cbr_z(i + 1, 1, &
2995# 429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2996 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2997 & + y(2) + y(3) + y(4)))
2998 poly_coef_cbr_z(i + 1, 1, &
2999# 432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3000 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
3001 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
3002 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3003 poly_coef_cbr_z(i + 1, 1, &
3004# 436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3005 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3006 & + y(2) + y(3) + y(4)))
3007
3008 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
3009 poly_coef_cbr_z(i + 1, 2, &
3010# 441 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3011 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
3012 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
3013 poly_coef_cbr_z(i + 1, 2, &
3014# 444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3015 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
3016 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
3017 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3018 poly_coef_cbr_z(i + 1, 2, &
3019# 448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3020 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3021 & + y(2) + y(3) + y(4)))
3022
3023 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
3024 poly_coef_cbr_z(i + 1, 3, &
3025# 453 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3026 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
3027 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
3028 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3029 poly_coef_cbr_z(i + 1, 3, &
3030# 457 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3031 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
3032 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
3033 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3034 & + y(4)))
3035 poly_coef_cbr_z(i + 1, 3, &
3036# 462 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3037 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
3038 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
3039
3040 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
3041 poly_coef_cbl_z(i + 1, 3, &
3042# 467 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3043 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
3044 & + y(2) + y(3) + y(4)))
3045 poly_coef_cbl_z(i + 1, 3, &
3046# 470 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3047 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
3048 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
3049 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3050 poly_coef_cbl_z(i + 1, 3, &
3051# 474 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3052 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
3053 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
3054 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
3055
3056 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
3057 poly_coef_cbl_z(i + 1, 2, &
3058# 480 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3059 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
3060 & + y(2) + y(3) + y(4)))
3061 poly_coef_cbl_z(i + 1, 2, &
3062# 483 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3063 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
3064 & + 3*y(3)**2 + 3*y(3)*y(4) + 2*y(1)*y(3) + y(4)**2 + y(1)*y(4)))/((y(2) + y(3) &
3065 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3066 poly_coef_cbl_z(i + 1, 2, &
3067# 487 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3068 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3069 & + y(2) + y(3) + y(4)))
3070
3071 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
3072 poly_coef_cbl_z(i + 1, 1, &
3073# 492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3074 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
3075 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
3076 poly_coef_cbl_z(i + 1, 1, &
3077# 495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3078 & 1) = (y(3)*y(4)*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
3079 & + 6*y(2)*y(3) + 2*y(4)*y(2) + 3*y(3)**2 + 2*y(4)*y(3)))/((y(2) + y(3))*(y(1) &
3080 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3081 poly_coef_cbl_z(i + 1, 1, &
3082# 499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3083 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3084 & + y(2) + y(3) + y(4)))
3085
3086 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
3087 poly_coef_cbl_z(i + 1, 0, &
3088# 504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3089 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
3090 & + 6*y(3)*y(4) + 2*y(1)*y(3) + 3*y(4)**2 + 2*y(1)*y(4)))/((y(3) + y(4))*(y(2) &
3091 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3092 poly_coef_cbl_z(i + 1, 0, &
3093# 508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3094 & 1) = -(y(4)*(y(3) + y(4))*(y(1)**2 + 3*y(1)*y(2) + 3*y(1)*y(3) + 2*y(1)*y(4) &
3095 & + 3*y(2)**2 + 6*y(2)*y(3) + 4*y(2)*y(4) + 3*y(3)**2 + 4*y(3)*y(4) + y(4)**2)) &
3096 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3097 & + y(4)))
3098 poly_coef_cbl_z(i + 1, 0, &
3099# 513 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3100 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
3101 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
3102
3103 poly_coef_cbl_z(i + 1,:,:) = -poly_coef_cbl_z(i + 1,:,:)
3104# 517 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3105 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
3106
3107 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
3108 beta_coef_z(i + 1, 3, &
3109# 521 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3110 & 0) = (4*y(4)**2*(5*y(1)**2*y(2)**2 + 20*y(1)**2*y(2)*y(3) + 15*y(1)**2*y(2)*y(4) &
3111 & + 20*y(1)**2*y(3)**2 + 30*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 10*y(1)*y(2) &
3112 & **3 + 60*y(1)*y(2)**2*y(3) + 45*y(1)*y(2)**2*y(4) + 110*y(1)*y(2)*y(3)**2 &
3113 & + 165*y(1)*y(2)*y(3)*y(4) + 260*y(1)*y(2)*y(4)**2 + 60*y(1)*y(3)**3 + 135*y(1) &
3114 & *y(3)**2*y(4) + 400*y(1)*y(3)*y(4)**2 + 225*y(1)*y(4)**3 + 5*y(2)**4 + 40*y(2) &
3115 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
3116 & + 260*y(2)**2*y(4)**2 + 120*y(2)*y(3)**3 + 270*y(2)*y(3)**2*y(4) + 800*y(2)*y(3) &
3117 & *y(4)**2 + 450*y(2)*y(4)**3 + 45*y(3)**4 + 135*y(3)**3*y(4) + 600*y(3)**2*y(4) &
3118 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
3119 & **2*(y(1) + y(2) + y(3) + y(4))**2)
3120 beta_coef_z(i + 1, 3, &
3121# 532 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3122 & 1) = -(4*y(4)**2*(10*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2)*y(4) + 20*y(1)**3*y(3) &
3123 & **2 + 25*y(1)**3*y(3)*y(4) + 105*y(1)**3*y(4)**2 + 40*y(1)**2*y(2)**2*y(3) &
3124 & + 20*y(1)**2*y(2)**2*y(4) + 130*y(1)**2*y(2)*y(3)**2 + 155*y(1)**2*y(2)*y(3)*y(4) &
3125 & + 535*y(1)**2*y(2)*y(4)**2 + 90*y(1)**2*y(3)**3 + 165*y(1)**2*y(3)**2*y(4) &
3126 & + 790*y(1)**2*y(3)*y(4)**2 + 415*y(1)**2*y(4)**3 + 60*y(1)*y(2)**3*y(3) + 30*y(1) &
3127 & *y(2)**3*y(4) + 270*y(1)*y(2)**2*y(3)**2 + 315*y(1)*y(2)**2*y(3)*y(4) + 975*y(1) &
3128 & *y(2)**2*y(4)**2 + 360*y(1)*y(2)*y(3)**3 + 645*y(1)*y(2)*y(3)**2*y(4) + 2850*y(1) &
3129 & *y(2)*y(3)*y(4)**2 + 1460*y(1)*y(2)*y(4)**3 + 150*y(1)*y(3)**4 + 360*y(1)*y(3) &
3130 & **3*y(4) + 2000*y(1)*y(3)**2*y(4)**2 + 2005*y(1)*y(3)*y(4)**3 + 2077*y(1)*y(4) &
3131 & **4 + 30*y(2)**4*y(3) + 15*y(2)**4*y(4) + 180*y(2)**3*y(3)**2 + 210*y(2)**3*y(3) &
3132 & *y(4) + 650*y(2)**3*y(4)**2 + 360*y(2)**2*y(3)**3 + 645*y(2)**2*y(3)**2*y(4) &
3133 & + 2850*y(2)**2*y(3)*y(4)**2 + 1460*y(2)**2*y(4)**3 + 300*y(2)*y(3)**4 + 720*y(2) &
3134 & *y(3)**3*y(4) + 4000*y(2)*y(3)**2*y(4)**2 + 4010*y(2)*y(3)*y(4)**3 + 4154*y(2) &
3135 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
3136 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
3137 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3138 beta_coef_z(i + 1, 3, &
3139# 549 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3140 & 2) = (4*y(4)**2*(10*y(2)**3*y(3) + 5*y(2)**3*y(4) + 50*y(2)**2*y(3)**2 + 60*y(2) &
3141 & **2*y(3)*y(4) + 10*y(1)*y(2)**2*y(3) + 215*y(2)**2*y(4)**2 + 5*y(1)*y(2)**2*y(4) &
3142 & + 70*y(2)*y(3)**3 + 130*y(2)*y(3)**2*y(4) + 30*y(1)*y(2)*y(3)**2 + 775*y(2)*y(3) &
3143 & *y(4)**2 + 35*y(1)*y(2)*y(3)*y(4) + 415*y(2)*y(4)**3 + 110*y(1)*y(2)*y(4)**2 &
3144 & + 30*y(3)**4 + 75*y(3)**3*y(4) + 20*y(1)*y(3)**3 + 665*y(3)**2*y(4)**2 + 35*y(1) &
3145 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
3146 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
3147 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3148 beta_coef_z(i + 1, 3, &
3149# 558 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3150 & 3) = (4*y(4)**2*(5*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 50*y(1)**4*y(4)**2 &
3151 & + 30*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 300*y(1)**3*y(2)*y(4)**2 &
3152 & + 30*y(1)**3*y(3)**3 + 45*y(1)**3*y(3)**2*y(4) + 415*y(1)**3*y(3)*y(4)**2 &
3153 & + 200*y(1)**3*y(4)**3 + 75*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
3154 & + 750*y(1)**2*y(2)**2*y(4)**2 + 150*y(1)**2*y(2)*y(3)**3 + 225*y(1)**2*y(2)*y(3) &
3155 & **2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 1000*y(1)**2*y(2)*y(4)**3 + 75*y(1) &
3156 & **2*y(3)**4 + 150*y(1)**2*y(3)**3*y(4) + 1390*y(1)**2*y(3)**2*y(4)**2 + 1315*y(1) &
3157 & **2*y(3)*y(4)**3 + 1081*y(1)**2*y(4)**4 + 90*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
3158 & **3*y(3)*y(4) + 900*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2)**2*y(3)**3 + 405*y(1) &
3159 & *y(2)**2*y(3)**2*y(4) + 3735*y(1)*y(2)**2*y(3)*y(4)**2 + 1800*y(1)*y(2)**2*y(4) &
3160 & **3 + 270*y(1)*y(2)*y(3)**4 + 540*y(1)*y(2)*y(3)**3*y(4) + 5025*y(1)*y(2)*y(3) &
3161 & **2*y(4)**2 + 4755*y(1)*y(2)*y(3)*y(4)**3 + 4224*y(1)*y(2)*y(4)**4 + 90*y(1)*y(3) &
3162 & **5 + 225*y(1)*y(3)**4*y(4) + 2190*y(1)*y(3)**3*y(4)**2 + 3060*y(1)*y(3)**2*y(4) &
3163 & **3 + 4529*y(1)*y(3)*y(4)**4 + 1762*y(1)*y(4)**5 + 45*y(2)**4*y(3)**2 + 45*y(2) &
3164 & **4*y(3)*y(4) + 450*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2)**3*y(3) &
3165 & **2*y(4) + 2490*y(2)**3*y(3)*y(4)**2 + 1200*y(2)**3*y(4)**3 + 270*y(2)**2*y(3) &
3166 & **4 + 540*y(2)**2*y(3)**3*y(4) + 5025*y(2)**2*y(3)**2*y(4)**2 + 4755*y(2)**2*y(3) &
3167 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
3168 & + 4380*y(2)*y(3)**3*y(4)**2 + 6120*y(2)*y(3)**2*y(4)**3 + 9058*y(2)*y(3)*y(4)**4 &
3169 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
3170 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
3171 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3172 & + y(3) + y(4))**2)
3173 beta_coef_z(i + 1, 3, &
3174# 582 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3175 & 4) = -(4*y(4)**2*(10*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 100*y(1) &
3176 & **2*y(2)*y(4)**2 + 10*y(1)**2*y(3)**3 + 15*y(1)**2*y(3)**2*y(4) + 205*y(1) &
3177 & **2*y(3)*y(4)**2 + 100*y(1)**2*y(4)**3 + 30*y(1)*y(2)**2*y(3)**2 + 30*y(1)*y(2) &
3178 & **2*y(3)*y(4) + 300*y(1)*y(2)**2*y(4)**2 + 60*y(1)*y(2)*y(3)**3 + 90*y(1)*y(2) &
3179 & *y(3)**2*y(4) + 1030*y(1)*y(2)*y(3)*y(4)**2 + 500*y(1)*y(2)*y(4)**3 + 30*y(1) &
3180 & *y(3)**4 + 60*y(1)*y(3)**3*y(4) + 835*y(1)*y(3)**2*y(4)**2 + 805*y(1)*y(3)*y(4) &
3181 & **3 + 1762*y(1)*y(4)**4 + 30*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 300*y(2) &
3182 & **3*y(4)**2 + 90*y(2)**2*y(3)**3 + 135*y(2)**2*y(3)**2*y(4) + 1445*y(2)**2*y(3) &
3183 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
3184 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
3185 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
3186 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
3187 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3188 beta_coef_z(i + 1, 3, &
3189# 596 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3190 & 5) = (4*y(4)**2*(5*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 &
3191 & + 10*y(2)*y(3)**3 + 15*y(2)*y(3)**2*y(4) + 205*y(2)*y(3)*y(4)**2 + 100*y(2)*y(4) &
3192 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
3193 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
3194 & + y(4))**2)
3195
3196 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
3197 beta_coef_z(i + 1, 2, &
3198# 604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3199 & 0) = (4*y(3)**2*(5*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 &
3200 & + 10*y(1)*y(2)**3 + 15*y(1)*y(2)**2*y(3) + 205*y(1)*y(2)*y(3)**2 + 100*y(1)*y(3) &
3201 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
3202 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
3203 & + y(4))**2)
3204 beta_coef_z(i + 1, 2, &
3205# 610 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3206 & 1) = (4*y(3)**2*(5*y(1)**3*y(2)*y(3) + 10*y(1)**3*y(2)*y(4) - 95*y(1)**3*y(3)**2 &
3207 & + 5*y(1)**3*y(3)*y(4) + 20*y(1)**2*y(2)**2*y(3) + 40*y(1)**2*y(2)**2*y(4) &
3208 & - 465*y(1)**2*y(2)*y(3)**2 + 55*y(1)**2*y(2)*y(3)*y(4) + 10*y(1)**2*y(2)*y(4)**2 &
3209 & - 285*y(1)**2*y(3)**3 + 20*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 &
3210 & + 30*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) - 825*y(1)*y(2)**2*y(3)**2 &
3211 & + 135*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 - 1040*y(1)*y(2)*y(3)**3 &
3212 & + 100*y(1)*y(2)*y(3)**2*y(4) + 35*y(1)*y(2)*y(3)*y(4)**2 - 1847*y(1)*y(3)**4 &
3213 & + 125*y(1)*y(3)**3*y(4) + 110*y(1)*y(3)**2*y(4)**2 + 15*y(2)**4*y(3) + 30*y(2) &
3214 & **4*y(4) - 550*y(2)**3*y(3)**2 + 90*y(2)**3*y(3)*y(4) + 20*y(2)**3*y(4)**2 &
3215 & - 1040*y(2)**2*y(3)**3 + 100*y(2)**2*y(3)**2*y(4) + 35*y(2)**2*y(3)*y(4)**2 &
3216 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
3217 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
3218 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
3219 & **2)
3220 beta_coef_z(i + 1, 2, &
3221# 625 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3222 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
3223 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
3224 & + 5*y(1)*y(2)**2*y(3) + 10*y(1)*y(2)**2*y(4) + 100*y(1)*y(3)**2*y(4) + 205*y(2) &
3225 & *y(3)**2*y(4) + 15*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
3226 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3227 & + y(4))**2)
3228 beta_coef_z(i + 1, 2, &
3229# 632 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3230 & 3) = (4*y(3)**2*(50*y(1)**4*y(3)**2 + 5*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 &
3231 & + 300*y(1)**3*y(2)*y(3)**2 + 30*y(1)**3*y(2)*y(3)*y(4) + 30*y(1)**3*y(2)*y(4)**2 &
3232 & + 200*y(1)**3*y(3)**3 + 25*y(1)**3*y(3)**2*y(4) + 35*y(1)**3*y(3)*y(4)**2 &
3233 & + 10*y(1)**3*y(4)**3 + 750*y(1)**2*y(2)**2*y(3)**2 + 75*y(1)**2*y(2)**2*y(3)*y(4) &
3234 & + 75*y(1)**2*y(2)**2*y(4)**2 + 1000*y(1)**2*y(2)*y(3)**3 + 125*y(1)**2*y(2)*y(3) &
3235 & **2*y(4) + 175*y(1)**2*y(2)*y(3)*y(4)**2 + 50*y(1)**2*y(2)*y(4)**3 + 1081*y(1) &
3236 & **2*y(3)**4 - 50*y(1)**2*y(3)**3*y(4) - 10*y(1)**2*y(3)**2*y(4)**2 + 45*y(1) &
3237 & **2*y(3)*y(4)**3 + 5*y(1)**2*y(4)**4 + 900*y(1)*y(2)**3*y(3)**2 + 90*y(1)*y(2) &
3238 & **3*y(3)*y(4) + 90*y(1)*y(2)**3*y(4)**2 + 1800*y(1)*y(2)**2*y(3)**3 + 225*y(1) &
3239 & *y(2)**2*y(3)**2*y(4) + 315*y(1)*y(2)**2*y(3)*y(4)**2 + 90*y(1)*y(2)**2*y(4)**3 &
3240 & + 4224*y(1)*y(2)*y(3)**4 - 120*y(1)*y(2)*y(3)**3*y(4) + 25*y(1)*y(2)*y(3)**2*y(4) &
3241 & **2 + 165*y(1)*y(2)*y(3)*y(4)**3 + 20*y(1)*y(2)*y(4)**4 + 3324*y(1)*y(3)**5 &
3242 & + 1407*y(1)*y(3)**4*y(4) - 100*y(1)*y(3)**3*y(4)**2 + 70*y(1)*y(3)**2*y(4)**3 &
3243 & + 15*y(1)*y(3)*y(4)**4 + 450*y(2)**4*y(3)**2 + 45*y(2)**4*y(3)*y(4) + 45*y(2) &
3244 & **4*y(4)**2 + 1200*y(2)**3*y(3)**3 + 150*y(2)**3*y(3)**2*y(4) + 210*y(2)**3*y(3) &
3245 & *y(4)**2 + 60*y(2)**3*y(4)**3 + 4224*y(2)**2*y(3)**4 - 120*y(2)**2*y(3)**3*y(4) &
3246 & + 25*y(2)**2*y(3)**2*y(4)**2 + 165*y(2)**2*y(3)*y(4)**3 + 20*y(2)**2*y(4)**4 &
3247 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
3248 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
3249 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
3250 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3251 & + y(3) + y(4))**2)
3252 beta_coef_z(i + 1, 2, &
3253# 655 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3254 & 4) = -(4*y(3)**2*(100*y(1)**2*y(2)*y(3)**2 + 10*y(1)**2*y(2)*y(3)*y(4) + 10*y(1) &
3255 & **2*y(2)*y(4)**2 - 95*y(1)**2*y(3)**2*y(4) + 5*y(1)**2*y(3)*y(4)**2 + 300*y(1) &
3256 & *y(2)**2*y(3)**2 + 30*y(1)*y(2)**2*y(3)*y(4) + 30*y(1)*y(2)**2*y(4)**2 + 200*y(1) &
3257 & *y(2)*y(3)**3 - 260*y(1)*y(2)*y(3)**2*y(4) + 50*y(1)*y(2)*y(3)*y(4)**2 + 10*y(1) &
3258 & *y(2)*y(4)**3 + 1562*y(1)*y(3)**4 - 190*y(1)*y(3)**3*y(4) + 15*y(1)*y(3)**2*y(4) &
3259 & **2 + 5*y(1)*y(3)*y(4)**3 + 300*y(2)**3*y(3)**2 + 30*y(2)**3*y(3)*y(4) + 30*y(2) &
3260 & **3*y(4)**2 + 400*y(2)**2*y(3)**3 - 235*y(2)**2*y(3)**2*y(4) + 85*y(2)**2*y(3) &
3261 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
3262 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
3263 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
3264 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
3265 & **2)
3266 beta_coef_z(i + 1, 2, &
3267# 668 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3268 & 5) = (4*y(3)**2*(50*y(2)**2*y(3)**2 + 5*y(2)**2*y(3)*y(4) + 5*y(2)**2*y(4)**2 &
3269 & - 95*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 781*y(3)**4 + 50*y(3)**2*y(4)**2)) &
3270 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
3271
3272 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
3273 beta_coef_z(i + 1, 1, &
3274# 674 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3275 & 0) = (4*y(2)**2*(50*y(1)**2*y(2)**2 + 5*y(1)**2*y(2)*y(3) + 5*y(1)**2*y(3)**2 &
3276 & - 95*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 781*y(2)**4 + 50*y(2)**2*y(3)**2)) &
3277 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3278 beta_coef_z(i + 1, 1, &
3279# 678 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3280 & 1) = -(4*y(2)**2*(105*y(1)**3*y(2)**2 + 25*y(1)**3*y(2)*y(3) + 5*y(1)**3*y(2) &
3281 & *y(4) + 20*y(1)**3*y(3)**2 + 10*y(1)**3*y(3)*y(4) + 110*y(1)**2*y(2)**3 - 35*y(1) &
3282 & **2*y(2)**2*y(3) + 15*y(1)**2*y(2)**2*y(4) + 85*y(1)**2*y(2)*y(3)**2 + 50*y(1) &
3283 & **2*y(2)*y(3)*y(4) + 5*y(1)**2*y(2)*y(4)**2 + 30*y(1)**2*y(3)**3 + 30*y(1) &
3284 & **2*y(3)**2*y(4) + 10*y(1)**2*y(3)*y(4)**2 + 1467*y(1)*y(2)**4 - 460*y(1)*y(2) &
3285 & **3*y(3) - 190*y(1)*y(2)**3*y(4) - 235*y(1)*y(2)**2*y(3)**2 - 260*y(1)*y(2) &
3286 & **2*y(3)*y(4) - 95*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2)*y(3)**3 + 30*y(1)*y(2) &
3287 & *y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 3124*y(2)**5 + 3224*y(2)**4*y(3) &
3288 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
3289 & **2*y(3)**3 + 300*y(2)**2*y(3)**2*y(4) + 100*y(2)**2*y(3)*y(4)**2))/(5*(y(2) &
3290 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3291 & + y(3) + y(4))**2)
3292 beta_coef_z(i + 1, 1, &
3293# 691 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3294 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
3295 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
3296 & + 205*y(1)*y(2)**2*y(3) + 100*y(1)*y(2)**2*y(4) + 10*y(1)*y(3)**2*y(4) + 5*y(2) &
3297 & *y(3)**2*y(4) - 95*y(2)**2*y(3)*y(4) + 10*y(1)*y(2)*y(3)*y(4)))/(5*(y(1) + y(2)) &
3298 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3299 & + y(4))**2)
3300 beta_coef_z(i + 1, 1, &
3301# 698 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3302 & 3) = (4*y(2)**2*(60*y(1)**4*y(2)**2 + 30*y(1)**4*y(2)*y(3) + 15*y(1)**4*y(2)*y(4) &
3303 & + 20*y(1)**4*y(3)**2 + 20*y(1)**4*y(3)*y(4) + 5*y(1)**4*y(4)**2 + 135*y(1) &
3304 & **3*y(2)**3 + 140*y(1)**3*y(2)**2*y(3) + 70*y(1)**3*y(2)**2*y(4) + 165*y(1) &
3305 & **3*y(2)*y(3)**2 + 165*y(1)**3*y(2)*y(3)*y(4) + 45*y(1)**3*y(2)*y(4)**2 + 60*y(1) &
3306 & **3*y(3)**3 + 90*y(1)**3*y(3)**2*y(4) + 50*y(1)**3*y(3)*y(4)**2 + 10*y(1)**3*y(4) &
3307 & **3 + 771*y(1)**2*y(2)**4 - 200*y(1)**2*y(2)**3*y(3) - 100*y(1)**2*y(2)**3*y(4) &
3308 & + 25*y(1)**2*y(2)**2*y(3)**2 + 25*y(1)**2*y(2)**2*y(3)*y(4) - 10*y(1)**2*y(2) &
3309 & **2*y(4)**2 + 210*y(1)**2*y(2)*y(3)**3 + 315*y(1)**2*y(2)*y(3)**2*y(4) + 175*y(1) &
3310 & **2*y(2)*y(3)*y(4)**2 + 35*y(1)**2*y(2)*y(4)**3 + 45*y(1)**2*y(3)**4 + 90*y(1) &
3311 & **2*y(3)**3*y(4) + 75*y(1)**2*y(3)**2*y(4)**2 + 30*y(1)**2*y(3)*y(4)**3 + 5*y(1) &
3312 & **2*y(4)**4 + 3039*y(1)*y(2)**5 + 2814*y(1)*y(2)**4*y(3) + 1407*y(1)*y(2)**4*y(4) &
3313 & - 120*y(1)*y(2)**3*y(3)**2 - 120*y(1)*y(2)**3*y(3)*y(4) - 50*y(1)*y(2)**3*y(4) &
3314 & **2 + 150*y(1)*y(2)**2*y(3)**3 + 225*y(1)*y(2)**2*y(3)**2*y(4) + 125*y(1)*y(2) &
3315 & **2*y(3)*y(4)**2 + 25*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2) &
3316 & *y(3)**3*y(4) + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1) &
3317 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
3318 & **4*y(3)**2 + 4224*y(2)**4*y(3)*y(4) + 1081*y(2)**4*y(4)**2 + 1200*y(2)**3*y(3) &
3319 & **3 + 1800*y(2)**3*y(3)**2*y(4) + 1000*y(2)**3*y(3)*y(4)**2 + 200*y(2)**3*y(4) &
3320 & **3 + 450*y(2)**2*y(3)**4 + 900*y(2)**2*y(3)**3*y(4) + 750*y(2)**2*y(3)**2*y(4) &
3321 & **2 + 300*y(2)**2*y(3)*y(4)**3 + 50*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) &
3322 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3323 beta_coef_z(i + 1, 1, &
3324# 720 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3325 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
3326 & **2*y(2)**2*y(4) + 35*y(1)**2*y(2)*y(3)**2 + 35*y(1)**2*y(2)*y(3)*y(4) + 5*y(1) &
3327 & **2*y(2)*y(4)**2 + 20*y(1)**2*y(3)**3 + 30*y(1)**2*y(3)**2*y(4) + 10*y(1)**2*y(3) &
3328 & *y(4)**2 - 1452*y(1)*y(2)**4 + 250*y(1)*y(2)**3*y(3) + 125*y(1)*y(2)**3*y(4) &
3329 & + 100*y(1)*y(2)**2*y(3)**2 + 100*y(1)*y(2)**2*y(3)*y(4) + 20*y(1)*y(2)**2*y(4) &
3330 & **2 + 90*y(1)*y(2)*y(3)**3 + 135*y(1)*y(2)*y(3)**2*y(4) + 55*y(1)*y(2)*y(3)*y(4) &
3331 & **2 + 5*y(1)*y(2)*y(4)**3 + 30*y(1)*y(3)**4 + 60*y(1)*y(3)**3*y(4) + 40*y(1)*y(3) &
3332 & **2*y(4)**2 + 10*y(1)*y(3)*y(4)**3 - 3219*y(2)**5 - 3694*y(2)**4*y(3) - 1847*y(2) &
3333 & **4*y(4) - 1040*y(2)**3*y(3)**2 - 1040*y(2)**3*y(3)*y(4) - 285*y(2)**3*y(4)**2 &
3334 & - 550*y(2)**2*y(3)**3 - 825*y(2)**2*y(3)**2*y(4) - 465*y(2)**2*y(3)*y(4)**2 &
3335 & - 95*y(2)**2*y(4)**3 + 15*y(2)*y(3)**4 + 30*y(2)*y(3)**3*y(4) + 20*y(2)*y(3) &
3336 & **2*y(4)**2 + 5*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
3337 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3338 beta_coef_z(i + 1, 1, &
3339# 734 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3340 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
3341 & **2*y(3)**2 + 205*y(2)**2*y(3)*y(4) + 50*y(2)**2*y(4)**2 + 10*y(2)*y(3)**3 &
3342 & + 15*y(2)*y(3)**2*y(4) + 5*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
3343 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
3344 & + y(3) + y(4))**2)
3345
3346 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
3347 beta_coef_z(i + 1, 0, &
3348# 742 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3349 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
3350 & **2*y(2)**2 + 205*y(1)**2*y(2)*y(3) + 50*y(1)**2*y(3)**2 + 10*y(1)*y(2)**3 &
3351 & + 15*y(1)*y(2)**2*y(3) + 5*y(1)*y(2)*y(3)**2 + 5*y(2)**4 + 10*y(2)**3*y(3) &
3352 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3353 & + y(3) + y(4))**2)
3354 beta_coef_z(i + 1, 0, &
3355# 748 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3356 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
3357 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
3358 & **3*y(2)*y(4) + 700*y(1)**3*y(3)**2 + 500*y(1)**3*y(3)*y(4) + 100*y(1)**3*y(4) &
3359 & **2 + 1060*y(1)**2*y(2)**3 + 2205*y(1)**2*y(2)**2*y(3) + 835*y(1)**2*y(2)**2*y(4) &
3360 & + 1445*y(1)**2*y(2)*y(3)**2 + 1030*y(1)**2*y(2)*y(3)*y(4) + 205*y(1)**2*y(2)*y(4) &
3361 & **2 + 300*y(1)**2*y(3)**3 + 300*y(1)**2*y(3)**2*y(4) + 100*y(1)**2*y(3)*y(4)**2 &
3362 & + 75*y(1)*y(2)**4 + 180*y(1)*y(2)**3*y(3) + 60*y(1)*y(2)**3*y(4) + 135*y(1)*y(2) &
3363 & **2*y(3)**2 + 90*y(1)*y(2)**2*y(3)*y(4) + 15*y(1)*y(2)**2*y(4)**2 + 30*y(1)*y(2) &
3364 & *y(3)**3 + 30*y(1)*y(2)*y(3)**2*y(4) + 10*y(1)*y(2)*y(3)*y(4)**2 + 30*y(2)**5 &
3365 & + 90*y(2)**4*y(3) + 30*y(2)**4*y(4) + 90*y(2)**3*y(3)**2 + 60*y(2)**3*y(3)*y(4) &
3366 & + 10*y(2)**3*y(4)**2 + 30*y(2)**2*y(3)**3 + 30*y(2)**2*y(3)**2*y(4) + 10*y(2) &
3367 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
3368 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3369 beta_coef_z(i + 1, 0, &
3370# 762 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3371 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
3372 & *y(1)**3 + 665*y(1)**2*y(2)**2 + 775*y(1)**2*y(2)*y(3) + 220*y(4)*y(1)**2*y(2) &
3373 & + 215*y(1)**2*y(3)**2 + 110*y(4)*y(1)**2*y(3) + 75*y(1)*y(2)**3 + 130*y(1)*y(2) &
3374 & **2*y(3) + 35*y(4)*y(1)*y(2)**2 + 60*y(1)*y(2)*y(3)**2 + 35*y(4)*y(1)*y(2)*y(3) &
3375 & + 5*y(1)*y(3)**3 + 5*y(4)*y(1)*y(3)**2 + 30*y(2)**4 + 70*y(2)**3*y(3) + 20*y(4) &
3376 & *y(2)**3 + 50*y(2)**2*y(3)**2 + 30*y(4)*y(2)**2*y(3) + 10*y(2)*y(3)**3 + 10*y(4) &
3377 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
3378 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3379 beta_coef_z(i + 1, 0, &
3380# 771 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3381 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
3382 & **5*y(4) + 4884*y(1)**4*y(2)**2 + 9058*y(1)**4*y(2)*y(3) + 4529*y(1)**4*y(2)*y(4) &
3383 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
3384 & + 2565*y(1)**3*y(2)**3 + 6120*y(1)**3*y(2)**2*y(3) + 3060*y(1)**3*y(2)**2*y(4) &
3385 & + 4755*y(1)**3*y(2)*y(3)**2 + 4755*y(1)**3*y(2)*y(3)*y(4) + 1315*y(1)**3*y(2) &
3386 & *y(4)**2 + 1200*y(1)**3*y(3)**3 + 1800*y(1)**3*y(3)**2*y(4) + 1000*y(1)**3*y(3) &
3387 & *y(4)**2 + 200*y(1)**3*y(4)**3 + 1395*y(1)**2*y(2)**4 + 4380*y(1)**2*y(2)**3*y(3) &
3388 & + 2190*y(1)**2*y(2)**3*y(4) + 5025*y(1)**2*y(2)**2*y(3)**2 + 5025*y(1)**2*y(2) &
3389 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
3390 & + 3735*y(1)**2*y(2)*y(3)**2*y(4) + 2075*y(1)**2*y(2)*y(3)*y(4)**2 + 415*y(1) &
3391 & **2*y(2)*y(4)**3 + 450*y(1)**2*y(3)**4 + 900*y(1)**2*y(3)**3*y(4) + 750*y(1) &
3392 & **2*y(3)**2*y(4)**2 + 300*y(1)**2*y(3)*y(4)**3 + 50*y(1)**2*y(4)**4 + 135*y(1) &
3393 & *y(2)**5 + 450*y(1)*y(2)**4*y(3) + 225*y(1)*y(2)**4*y(4) + 540*y(1)*y(2)**3*y(3) &
3394 & **2 + 540*y(1)*y(2)**3*y(3)*y(4) + 150*y(1)*y(2)**3*y(4)**2 + 270*y(1)*y(2) &
3395 & **2*y(3)**3 + 405*y(1)*y(2)**2*y(3)**2*y(4) + 225*y(1)*y(2)**2*y(3)*y(4)**2 &
3396 & + 45*y(1)*y(2)**2*y(4)**3 + 45*y(1)*y(2)*y(3)**4 + 90*y(1)*y(2)*y(3)**3*y(4) &
3397 & + 75*y(1)*y(2)*y(3)**2*y(4)**2 + 30*y(1)*y(2)*y(3)*y(4)**3 + 5*y(1)*y(2)*y(4)**4 &
3398 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
3399 & + 270*y(2)**4*y(3)*y(4) + 75*y(2)**4*y(4)**2 + 180*y(2)**3*y(3)**3 + 270*y(2) &
3400 & **3*y(3)**2*y(4) + 150*y(2)**3*y(3)*y(4)**2 + 30*y(2)**3*y(4)**3 + 45*y(2) &
3401 & **2*y(3)**4 + 90*y(2)**2*y(3)**3*y(4) + 75*y(2)**2*y(3)**2*y(4)**2 + 30*y(2) &
3402 & **2*y(3)*y(4)**3 + 5*y(2)**2*y(4)**4))/(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3)) &
3403 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3404 beta_coef_z(i + 1, 0, &
3405# 795 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3406 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
3407 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
3408 & **3*y(2)*y(4) + 1460*y(1)**3*y(3)**2 + 1460*y(1)**3*y(3)*y(4) + 415*y(1)**3*y(4) &
3409 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
3410 & **2*y(4) + 2850*y(1)**2*y(2)*y(3)**2 + 2850*y(1)**2*y(2)*y(3)*y(4) + 790*y(1) &
3411 & **2*y(2)*y(4)**2 + 650*y(1)**2*y(3)**3 + 975*y(1)**2*y(3)**2*y(4) + 535*y(1) &
3412 & **2*y(3)*y(4)**2 + 105*y(1)**2*y(4)**3 + 270*y(1)*y(2)**4 + 720*y(1)*y(2)**3*y(3) &
3413 & + 360*y(1)*y(2)**3*y(4) + 645*y(1)*y(2)**2*y(3)**2 + 645*y(1)*y(2)**2*y(3)*y(4) &
3414 & + 165*y(1)*y(2)**2*y(4)**2 + 210*y(1)*y(2)*y(3)**3 + 315*y(1)*y(2)*y(3)**2*y(4) &
3415 & + 155*y(1)*y(2)*y(3)*y(4)**2 + 25*y(1)*y(2)*y(4)**3 + 15*y(1)*y(3)**4 + 30*y(1) &
3416 & *y(3)**3*y(4) + 20*y(1)*y(3)**2*y(4)**2 + 5*y(1)*y(3)*y(4)**3 + 90*y(2)**5 &
3417 & + 300*y(2)**4*y(3) + 150*y(2)**4*y(4) + 360*y(2)**3*y(3)**2 + 360*y(2)**3*y(3) &
3418 & *y(4) + 90*y(2)**3*y(4)**2 + 180*y(2)**2*y(3)**3 + 270*y(2)**2*y(3)**2*y(4) &
3419 & + 130*y(2)**2*y(3)*y(4)**2 + 20*y(2)**2*y(4)**3 + 30*y(2)*y(3)**4 + 60*y(2)*y(3) &
3420 & **3*y(4) + 40*y(2)*y(3)**2*y(4)**2 + 10*y(2)*y(3)*y(4)**3))/(5*(y(1) + y(2)) &
3421 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3422 & + y(4))**2)
3423 beta_coef_z(i + 1, 0, &
3424# 813 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3425 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
3426 & **3*y(4) + 600*y(1)**2*y(2)**2 + 800*y(1)**2*y(2)*y(3) + 400*y(1)**2*y(2)*y(4) &
3427 & + 260*y(1)**2*y(3)**2 + 260*y(1)**2*y(3)*y(4) + 60*y(1)**2*y(4)**2 + 135*y(1) &
3428 & *y(2)**3 + 270*y(1)*y(2)**2*y(3) + 135*y(1)*y(2)**2*y(4) + 165*y(1)*y(2)*y(3)**2 &
3429 & + 165*y(1)*y(2)*y(3)*y(4) + 30*y(1)*y(2)*y(4)**2 + 30*y(1)*y(3)**3 + 45*y(1)*y(3) &
3430 & **2*y(4) + 15*y(1)*y(3)*y(4)**2 + 45*y(2)**4 + 120*y(2)**3*y(3) + 60*y(2)**3*y(4) &
3431 & + 110*y(2)**2*y(3)**2 + 110*y(2)**2*y(3)*y(4) + 20*y(2)**2*y(4)**2 + 40*y(2)*y(3) &
3432 & **3 + 60*y(2)*y(3)**2*y(4) + 20*y(2)*y(3)*y(4)**2 + 5*y(3)**4 + 10*y(3)**3*y(4) &
3433 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
3434 & + y(3) + y(4))**2)
3435 end do
3436 else
3437 ! (Fu, et al., 2016) Table 2 (for right flux)
3438 d_cbl_z(0,:) = 18._wp/35._wp
3439# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3440 d_cbl_z(1,:) = 3._wp/35._wp
3441# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3442 d_cbl_z(2,:) = 9._wp/35._wp
3443# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3444 d_cbl_z(3,:) = 1._wp/35._wp
3445# 830 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3446 d_cbl_z(4,:) = 4._wp/35._wp
3447# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3448
3449 d_cbr_z(0,:) = 18._wp/35._wp
3450# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3451 d_cbr_z(1,:) = 9._wp/35._wp
3452# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3453 d_cbr_z(2,:) = 3._wp/35._wp
3454# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3455 d_cbr_z(3,:) = 4._wp/35._wp
3456# 836 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3457 d_cbr_z(4,:) = 1._wp/35._wp
3458# 837 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3459 end if
3460 end if
3461 end if
3462# 841 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3463
3464 ! Detect whether grid spacing is uniform (enables cancellation-free sum-of-squares beta). Tolerance uses sqrt(epsilon) so it
3465 ! works in both double and single precision: ~1.5e-8 relative in double, ~3.5e-4 in single - above FP noise, below real
3466 ! stretching.
3467 uniform_grid(weno_dir) = .true.
3468 h0 = (s_cb(s) - s_cb(0))/real(s, wp)
3469 do i = 0, s - 1
3470 if (abs((s_cb(i + 1) - s_cb(i)) - h0) > sqrt(epsilon(h0))*abs(h0)) then
3471 uniform_grid(weno_dir) = .false.
3472 exit
3473 end if
3474 end do
3475
3476 if (weno_dir == 1) then
3477
3478# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3479#if defined(MFC_OpenACC)
3480# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3481!$acc update device(poly_coef_cbL_x, poly_coef_cbR_x, d_cbL_x, d_cbR_x, beta_coef_x, uniform_grid)
3482# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3483#elif defined(MFC_OpenMP)
3484# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3485!$omp target update to(poly_coef_cbL_x, poly_coef_cbR_x, d_cbL_x, d_cbR_x, beta_coef_x, uniform_grid)
3486# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3487#endif
3488# 856 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3489 else if (weno_dir == 2) then
3490
3491# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3492#if defined(MFC_OpenACC)
3493# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3494!$acc update device(poly_coef_cbL_y, poly_coef_cbR_y, d_cbL_y, d_cbR_y, beta_coef_y, uniform_grid)
3495# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3496#elif defined(MFC_OpenMP)
3497# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3498!$omp target update to(poly_coef_cbL_y, poly_coef_cbR_y, d_cbL_y, d_cbR_y, beta_coef_y, uniform_grid)
3499# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3500#endif
3501# 858 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3502 else
3503
3504# 859 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3505#if defined(MFC_OpenACC)
3506# 859 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3507!$acc update device(poly_coef_cbL_z, poly_coef_cbR_z, d_cbL_z, d_cbR_z, beta_coef_z, uniform_grid)
3508# 859 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3509#elif defined(MFC_OpenMP)
3510# 859 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3511!$omp target update to(poly_coef_cbL_z, poly_coef_cbR_z, d_cbL_z, d_cbR_z, beta_coef_z, uniform_grid)
3512# 859 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3513#endif
3514# 860 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3515 end if
3516
3517 ! Nullifying WENO coefficients and cell-boundary locations pointers
3518
3519 nullify (s_cb)
3520
3521 end subroutine s_compute_weno_coefficients
3522
3523 subroutine s_pack_weno_input_arr(v_vf)
3524
3525 type(scalar_field), dimension(1:), intent(in) :: v_vf
3526 integer :: i, j, k, l, n_vars
3527
3528
3529# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3530
3531# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3532#if defined(MFC_OpenACC)
3533# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3534!$acc parallel loop collapse(3) gang vector default(present)
3535# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3536#elif defined(MFC_OpenMP)
3537# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3538
3539# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3540
3541# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3542
3543# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3544!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3545# 873 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3546#endif
3547# 874 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3548 do l = idwbuff(3)%beg, idwbuff(3)%end
3549 do k = idwbuff(2)%beg, idwbuff(2)%end
3550 do j = idwbuff(1)%beg, idwbuff(1)%end
3551
3552# 877 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3553#if defined(MFC_OpenACC)
3554# 877 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3555!$acc loop seq
3556# 877 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3557#elif defined(MFC_OpenMP)
3558# 877 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3559
3560# 877 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3561#endif
3562# 878 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3563 do i = 1, v_size
3564 v_rs_weno(j, k, l, i) = v_vf(i)%sf(j, k, l)
3565 end do
3566 end do
3567 end do
3568 end do
3569
3570# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3571#if defined(MFC_OpenACC)
3572# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3573!$acc end parallel loop
3574# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3575#elif defined(MFC_OpenMP)
3576# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3577
3578# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3579!$omp end target teams loop
3580# 884 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3581#endif
3582# 885 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3583
3584 end subroutine s_pack_weno_input_arr
3585
3586 !> Perform WENO reconstruction of left and right cell-boundary values from cell-averaged variables
3587 subroutine s_weno(v_vf, vL_rs_vf_x, vR_rs_vf_x, weno_dir, is1_weno_d, is2_weno_d, is3_weno_d)
3588
3589 type(scalar_field), dimension(1:), intent(in) :: v_vf
3590 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vl_rs_vf_x
3591 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vr_rs_vf_x
3592 integer, intent(in) :: weno_dir
3593 type(int_bounds_info), intent(in) :: is1_weno_d, is2_weno_d, is3_weno_d
3594
3595# 905 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3596 real(wp), dimension(-weno_polyn:weno_polyn - 1) :: dvd
3597 real(wp), dimension(0:weno_num_stencils) :: poly
3598 real(wp), dimension(0:weno_num_stencils) :: alpha
3599 real(wp), dimension(0:weno_num_stencils) :: omega
3600 real(wp), dimension(0:weno_num_stencils) :: beta
3601 real(wp), dimension(0:weno_num_stencils) :: delta
3602# 912 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3603 real(wp), dimension(-3:3) :: v !< temporary field value array for clarity (WENO7 only)
3604 real(wp) :: tau
3605 integer :: i, j, k, l, q
3606 real(wp) :: vp0, vp1, vp2, vp3, vm1, vm2, vm3
3607
3608 is1_weno = is1_weno_d
3609 is2_weno = is2_weno_d
3610 is3_weno = is3_weno_d
3611
3612
3613# 921 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3614#if defined(MFC_OpenACC)
3615# 921 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3616!$acc update device(is1_weno, is2_weno, is3_weno)
3617# 921 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3618#elif defined(MFC_OpenMP)
3619# 921 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3620!$omp target update to(is1_weno, is2_weno, is3_weno)
3621# 921 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3622#endif
3623# 922 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3624
3625 v_size = ubound(v_vf, 1)
3626
3627# 924 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3628#if defined(MFC_OpenACC)
3629# 924 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3630!$acc update device(v_size)
3631# 924 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3632#elif defined(MFC_OpenMP)
3633# 924 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3634!$omp target update to(v_size)
3635# 924 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3636#endif
3637# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3638
3639 if (weno_order == 1) then
3640 if (weno_dir == 1) then
3641
3642# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3643
3644# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3645#if defined(MFC_OpenACC)
3646# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3647!$acc parallel loop collapse(4) gang vector default(present)
3648# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3649#elif defined(MFC_OpenMP)
3650# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3651
3652# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3653
3654# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3655
3656# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3657!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3658# 928 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3659#endif
3660# 929 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3661 do i = 1, v_size
3662 do l = is3_weno%beg, is3_weno%end
3663 do k = is2_weno%beg, is2_weno%end
3664 do j = is1_weno%beg, is1_weno%end
3665 vl_rs_vf_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
3666 vr_rs_vf_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
3667 end do
3668 end do
3669 end do
3670 end do
3671
3672# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3673#if defined(MFC_OpenACC)
3674# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3675!$acc end parallel loop
3676# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3677#elif defined(MFC_OpenMP)
3678# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3679
3680# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3681!$omp end target teams loop
3682# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3683#endif
3684# 940 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3685 else if (weno_dir == 2) then
3686
3687# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3688
3689# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3690#if defined(MFC_OpenACC)
3691# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3692!$acc parallel loop collapse(4) gang vector default(present)
3693# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3694#elif defined(MFC_OpenMP)
3695# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3696
3697# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3698
3699# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3700
3701# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3702!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3703# 941 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3704#endif
3705# 942 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3706 do i = 1, v_size
3707 do l = is3_weno%beg, is3_weno%end
3708 do j = is1_weno%beg, is1_weno%end
3709 do k = is2_weno%beg, is2_weno%end
3710 vl_rs_vf_x(k, j, l, i) = v_vf(i)%sf(k, j, l)
3711 vr_rs_vf_x(k, j, l, i) = v_vf(i)%sf(k, j, l)
3712 end do
3713 end do
3714 end do
3715 end do
3716
3717# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3718#if defined(MFC_OpenACC)
3719# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3720!$acc end parallel loop
3721# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3722#elif defined(MFC_OpenMP)
3723# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3724
3725# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3726!$omp end target teams loop
3727# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3728#endif
3729# 953 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3730 else if (weno_dir == 3) then
3731
3732# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3733
3734# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3735#if defined(MFC_OpenACC)
3736# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3737!$acc parallel loop collapse(4) gang vector default(present)
3738# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3739#elif defined(MFC_OpenMP)
3740# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3741
3742# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3743
3744# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3745
3746# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3747!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3748# 954 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3749#endif
3750# 955 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3751 do i = 1, v_size
3752 do j = is1_weno%beg, is1_weno%end
3753 do k = is2_weno%beg, is2_weno%end
3754 do l = is3_weno%beg, is3_weno%end
3755 vl_rs_vf_x(l, k, j, i) = v_vf(i)%sf(l, k, j)
3756 vr_rs_vf_x(l, k, j, i) = v_vf(i)%sf(l, k, j)
3757 end do
3758 end do
3759 end do
3760 end do
3761
3762# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3763#if defined(MFC_OpenACC)
3764# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3765!$acc end parallel loop
3766# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3767#elif defined(MFC_OpenMP)
3768# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3769
3770# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3771!$omp end target teams loop
3772# 965 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3773#endif
3774# 966 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3775 end if
3776 end if
3777
3778 ! The reconstruction kernels read the stencil straight from v_vf; only MP-WENO and THINC still read the packed copy
3779 if (weno_order /= 1 .and. (mp_weno .or. int_comp > 0)) then
3780 call s_pack_weno_input_arr(v_vf)
3781 end if
3782
3783 if (weno_order == 3) then
3784# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3785# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3786# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3787 if (weno_dir == 1) then
3788# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3789
3790# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3791
3792# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3793#if defined(MFC_OpenACC)
3794# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3795!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3796# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3797#elif defined(MFC_OpenMP)
3798# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3799
3800# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3801
3802# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3803
3804# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3805!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
3806# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3807!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3808# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3809#endif
3810# 983 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3811 do l = is3_weno%beg, is3_weno%end
3812# 984 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3813 do k = is2_weno%beg, is2_weno%end
3814# 985 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3815 do j = is1_weno%beg, is1_weno%end
3816# 986 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3817 do i = 1, v_size
3818 ! reconstruct from left side
3819
3820 alpha(:) = 0._wp
3821
3822 vp0 = v_vf(i)%sf(j, k, l)
3823# 992 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3824 vm1 = v_vf(i)%sf(j - 1, k, l)
3825# 993 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3826 vp1 = v_vf(i)%sf(j + 1, k, l)
3827# 994 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3828
3829 dvd(0) = vp1 - vp0
3830 dvd(-1) = vp0 - vm1
3831
3832 poly(0) = vp0 + poly_coef_cbl_x(j, 0, 0)*dvd(0)
3833# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3834 poly(1) = vp0 + poly_coef_cbl_x(j, 1, 0)*dvd(-1)
3835# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3836
3837 beta(0) = beta_coef_x(j, 0, 0)*dvd(0)*dvd(0) + weno_eps
3838# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3839 beta(1) = beta_coef_x(j, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
3840# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3841
3842 if (wenojs) then
3843 do q = 0, weno_num_stencils
3844 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
3845# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3846 end do
3847 else if (mapped_weno) then
3848 do q = 0, weno_num_stencils
3849 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
3850# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3851 end do
3852 omega = alpha/sum(alpha)
3853 do q = 0, weno_num_stencils
3854 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
3855# 1015 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3856 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
3857# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3858 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
3859# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3860 end do
3861 else if (wenoz) then
3862 ! Borges, et al. (2008)
3863 tau = abs(beta(1) - beta(0))
3864 do q = 0, weno_num_stencils
3865 alpha(q) = d_cbl_x(q, j)*(1._wp + tau/beta(q))
3866# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3867 end do
3868 end if
3869 omega = alpha/sum(alpha)
3870
3871 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
3872
3873 ! reconstruct from right side
3874
3875 poly(0) = vp0 + poly_coef_cbr_x(j, 0, 0)*dvd(0)
3876# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3877 poly(1) = vp0 + poly_coef_cbr_x(j, 1, 0)*dvd(-1)
3878# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3879
3880 if (wenojs) then
3881 do q = 0, weno_num_stencils
3882 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
3883# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3884 end do
3885 else if (mapped_weno) then
3886 do q = 0, weno_num_stencils
3887 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
3888# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3889 end do
3890 omega = alpha/sum(alpha)
3891 do q = 0, weno_num_stencils
3892 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
3893# 1045 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3894 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
3895# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3896 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
3897# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3898 end do
3899 else if (wenoz) then
3900 do q = 0, weno_num_stencils
3901 alpha(q) = d_cbr_x(q, j)*(1._wp + tau/beta(q))
3902# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3903 end do
3904 end if
3905 omega = alpha/sum(alpha)
3906
3907 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
3908 end do
3909 end do
3910 end do
3911 end do
3912
3913# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3914#if defined(MFC_OpenACC)
3915# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3916!$acc end parallel loop
3917# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3918#elif defined(MFC_OpenMP)
3919# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3920
3921# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3922!$omp end target teams loop
3923# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3924#endif
3925# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3926 end if
3927# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3928# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3929# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3930 if (weno_dir == 2) then
3931# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3932
3933# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3934
3935# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3936#if defined(MFC_OpenACC)
3937# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3938!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3939# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3940#elif defined(MFC_OpenMP)
3941# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3942
3943# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3944
3945# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3946
3947# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3948!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
3949# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3950!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3951# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3952#endif
3953# 983 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3954 do l = is3_weno%beg, is3_weno%end
3955# 984 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3956 do k = is1_weno%beg, is1_weno%end
3957# 985 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3958 do j = is2_weno%beg, is2_weno%end
3959# 986 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3960 do i = 1, v_size
3961 ! reconstruct from left side
3962
3963 alpha(:) = 0._wp
3964
3965 vp0 = v_vf(i)%sf(j, k, l)
3966# 992 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3967 vm1 = v_vf(i)%sf(j, k - 1, l)
3968# 993 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3969 vp1 = v_vf(i)%sf(j, k + 1, l)
3970# 994 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3971
3972 dvd(0) = vp1 - vp0
3973 dvd(-1) = vp0 - vm1
3974
3975 poly(0) = vp0 + poly_coef_cbl_y(k, 0, 0)*dvd(0)
3976# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3977 poly(1) = vp0 + poly_coef_cbl_y(k, 1, 0)*dvd(-1)
3978# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3979
3980 beta(0) = beta_coef_y(k, 0, 0)*dvd(0)*dvd(0) + weno_eps
3981# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3982 beta(1) = beta_coef_y(k, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
3983# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3984
3985 if (wenojs) then
3986 do q = 0, weno_num_stencils
3987 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
3988# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3989 end do
3990 else if (mapped_weno) then
3991 do q = 0, weno_num_stencils
3992 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
3993# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3994 end do
3995 omega = alpha/sum(alpha)
3996 do q = 0, weno_num_stencils
3997 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
3998# 1015 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3999 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
4000# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4001 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
4002# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4003 end do
4004 else if (wenoz) then
4005 ! Borges, et al. (2008)
4006 tau = abs(beta(1) - beta(0))
4007 do q = 0, weno_num_stencils
4008 alpha(q) = d_cbl_y(q, k)*(1._wp + tau/beta(q))
4009# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4010 end do
4011 end if
4012 omega = alpha/sum(alpha)
4013
4014 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4015
4016 ! reconstruct from right side
4017
4018 poly(0) = vp0 + poly_coef_cbr_y(k, 0, 0)*dvd(0)
4019# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4020 poly(1) = vp0 + poly_coef_cbr_y(k, 1, 0)*dvd(-1)
4021# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4022
4023 if (wenojs) then
4024 do q = 0, weno_num_stencils
4025 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4026# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4027 end do
4028 else if (mapped_weno) then
4029 do q = 0, weno_num_stencils
4030 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4031# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4032 end do
4033 omega = alpha/sum(alpha)
4034 do q = 0, weno_num_stencils
4035 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
4036# 1045 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4037 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
4038# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4039 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
4040# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4041 end do
4042 else if (wenoz) then
4043 do q = 0, weno_num_stencils
4044 alpha(q) = d_cbr_y(q, k)*(1._wp + tau/beta(q))
4045# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4046 end do
4047 end if
4048 omega = alpha/sum(alpha)
4049
4050 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4051 end do
4052 end do
4053 end do
4054 end do
4055
4056# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4057#if defined(MFC_OpenACC)
4058# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4059!$acc end parallel loop
4060# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4061#elif defined(MFC_OpenMP)
4062# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4063
4064# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4065!$omp end target teams loop
4066# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4067#endif
4068# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4069 end if
4070# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4071# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4072# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4073 if (weno_dir == 3) then
4074# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4075
4076# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4077
4078# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4079#if defined(MFC_OpenACC)
4080# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4081!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
4082# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4083#elif defined(MFC_OpenMP)
4084# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4085
4086# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4087
4088# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4089
4090# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4091!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4092# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4093!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
4094# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4095#endif
4096# 983 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4097 do l = is1_weno%beg, is1_weno%end
4098# 984 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4099 do k = is2_weno%beg, is2_weno%end
4100# 985 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4101 do j = is3_weno%beg, is3_weno%end
4102# 986 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4103 do i = 1, v_size
4104 ! reconstruct from left side
4105
4106 alpha(:) = 0._wp
4107
4108 vp0 = v_vf(i)%sf(j, k, l)
4109# 992 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4110 vm1 = v_vf(i)%sf(j, k, l - 1)
4111# 993 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4112 vp1 = v_vf(i)%sf(j, k, l + 1)
4113# 994 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4114
4115 dvd(0) = vp1 - vp0
4116 dvd(-1) = vp0 - vm1
4117
4118 poly(0) = vp0 + poly_coef_cbl_z(l, 0, 0)*dvd(0)
4119# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4120 poly(1) = vp0 + poly_coef_cbl_z(l, 1, 0)*dvd(-1)
4121# 1000 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4122
4123 beta(0) = beta_coef_z(l, 0, 0)*dvd(0)*dvd(0) + weno_eps
4124# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4125 beta(1) = beta_coef_z(l, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
4126# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4127
4128 if (wenojs) then
4129 do q = 0, weno_num_stencils
4130 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4131# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4132 end do
4133 else if (mapped_weno) then
4134 do q = 0, weno_num_stencils
4135 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4136# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4137 end do
4138 omega = alpha/sum(alpha)
4139 do q = 0, weno_num_stencils
4140 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
4141# 1015 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4142 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
4143# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4144 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
4145# 1017 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4146 end do
4147 else if (wenoz) then
4148 ! Borges, et al. (2008)
4149 tau = abs(beta(1) - beta(0))
4150 do q = 0, weno_num_stencils
4151 alpha(q) = d_cbl_z(q, l)*(1._wp + tau/beta(q))
4152# 1023 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4153 end do
4154 end if
4155 omega = alpha/sum(alpha)
4156
4157 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4158
4159 ! reconstruct from right side
4160
4161 poly(0) = vp0 + poly_coef_cbr_z(l, 0, 0)*dvd(0)
4162# 1032 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4163 poly(1) = vp0 + poly_coef_cbr_z(l, 1, 0)*dvd(-1)
4164# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4165
4166 if (wenojs) then
4167 do q = 0, weno_num_stencils
4168 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
4169# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4170 end do
4171 else if (mapped_weno) then
4172 do q = 0, weno_num_stencils
4173 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
4174# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4175 end do
4176 omega = alpha/sum(alpha)
4177 do q = 0, weno_num_stencils
4178 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
4179# 1045 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4180 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
4181# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4182 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
4183# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4184 end do
4185 else if (wenoz) then
4186 do q = 0, weno_num_stencils
4187 alpha(q) = d_cbr_z(q, l)*(1._wp + tau/beta(q))
4188# 1051 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4189 end do
4190 end if
4191 omega = alpha/sum(alpha)
4192
4193 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4194 end do
4195 end do
4196 end do
4197 end do
4198
4199# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4200#if defined(MFC_OpenACC)
4201# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4202!$acc end parallel loop
4203# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4204#elif defined(MFC_OpenMP)
4205# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4206
4207# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4208!$omp end target teams loop
4209# 1060 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4210#endif
4211# 1061 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4212 end if
4213# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4214 end if
4215 if (weno_order == 5) then
4216# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4217# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4218# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4219# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4220 if (weno_dir == 1) then
4221# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4222
4223# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4224
4225# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4226#if defined(MFC_OpenACC)
4227# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4228!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4229# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4230#elif defined(MFC_OpenMP)
4231# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4232
4233# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4234
4235# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4236
4237# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4238!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4239# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4240!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4241# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4242#endif
4243# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4244 do l = is3_weno%beg, is3_weno%end
4245# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4246 do k = is2_weno%beg, is2_weno%end
4247# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4248 do j = is1_weno%beg, is1_weno%end
4249# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4250
4251# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4252#if defined(MFC_OpenACC)
4253# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4254!$acc loop seq
4255# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4256#elif defined(MFC_OpenMP)
4257# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4258
4259# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4260#endif
4261# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4262 do i = 1, v_size
4263 ! reconstruct from left side
4264
4265 alpha(:) = 0._wp
4266
4267 vp0 = v_vf(i)%sf(j, k, l)
4268# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4269 vm1 = v_vf(i)%sf(j - 1, k, l)
4270# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4271 vm2 = v_vf(i)%sf(j - 2, k, l)
4272# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4273 vp1 = v_vf(i)%sf(j + 1, k, l)
4274# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4275 vp2 = v_vf(i)%sf(j + 2, k, l)
4276# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4277
4278 dvd(1) = vp2 - vp1
4279 dvd(0) = vp1 - vp0
4280 dvd(-1) = vp0 - vm1
4281 dvd(-2) = vm1 - vm2
4282
4283 poly(0) = vp0 + poly_coef_cbl_x(j, 0, &
4284# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4285 & 0)*dvd(1) + poly_coef_cbl_x(j, 0, 1)*dvd(0)
4286# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4287 poly(1) = vp0 + poly_coef_cbl_x(j, 1, &
4288# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4289 & 0)*dvd(0) + poly_coef_cbl_x(j, 1, 1)*dvd(-1)
4290# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4291 poly(2) = vp0 + poly_coef_cbl_x(j, 2, &
4292# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4293 & 0)*dvd(-1) + poly_coef_cbl_x(j, 2, 1)*dvd(-2)
4294# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4295
4296 if (uniform_grid(1)) then
4297# 1103 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4298 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4299 & + weno_eps
4300 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4301 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4302 & + weno_eps
4303 else
4304 beta(0) = beta_coef_x(j, 0, 0)*dvd(1)*dvd(1) + beta_coef_x(j, &
4305# 1110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4306 & 0, 1)*dvd(1)*dvd(0) + beta_coef_x(j, 0, 2)*dvd(0)*dvd(0) + weno_eps
4307# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4308 beta(1) = beta_coef_x(j, 1, 0)*dvd(0)*dvd(0) + beta_coef_x(j, &
4309# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4310 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_x(j, 1, &
4311# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4312 & 2)*dvd(-1)*dvd(-1) + weno_eps
4313 beta(2) = beta_coef_x(j, 2, &
4314# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4315 & 0)*dvd(-1)*dvd(-1) + beta_coef_x(j, 2, &
4316# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4317 & 1)*dvd(-1)*dvd(-2) + beta_coef_x(j, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4318# 1117 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4319 end if
4320
4321 if (wenojs) then
4322 do q = 0, weno_num_stencils
4323 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
4324# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4325 end do
4326 else if (mapped_weno) then
4327 do q = 0, weno_num_stencils
4328 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
4329# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4330 end do
4331 omega = alpha/sum(alpha)
4332 do q = 0, weno_num_stencils
4333 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
4334# 1130 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4335 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
4336# 1131 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4337 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
4338# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4339 end do
4340 else if (wenoz) then
4341 ! Borges, et al. (2008)
4342
4343 tau = abs(beta(2) - beta(0)) ! Equation 25
4344
4345# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4346#if defined(MFC_OpenACC)
4347# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4348!$acc loop seq
4349# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4350#elif defined(MFC_OpenMP)
4351# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4352
4353# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4354#endif
4355# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4356 do q = 0, weno_num_stencils
4357 alpha(q) = d_cbl_x(q, j)*(1._wp + (tau/beta(q)))
4358# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4359 ! Equation 28 (note: weno_eps was already added to beta)
4360 end do
4361 else if (teno) then
4362 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4363 tau = abs(beta(2) - beta(0))
4364
4365# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4366#if defined(MFC_OpenACC)
4367# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4368!$acc loop seq
4369# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4370#elif defined(MFC_OpenMP)
4371# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4372
4373# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4374#endif
4375# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4376 do q = 0, weno_num_stencils
4377 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4378 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4379 alpha(q) = (alpha(q)**3._wp)**2._wp
4380 end do
4381 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4382
4383
4384# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4385#if defined(MFC_OpenACC)
4386# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4387!$acc loop seq
4388# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4389#elif defined(MFC_OpenMP)
4390# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4391
4392# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4393#endif
4394# 1154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4395 do q = 0, weno_num_stencils
4396 if (omega(q) < teno_ct) then ! Equation 26
4397 delta(q) = 0._wp
4398 else
4399 delta(q) = 1._wp
4400 end if
4401 alpha(q) = delta(q)*d_cbl_x(q, j) ! Equation 27
4402# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4403 end do
4404 end if
4405
4406 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4407 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4408 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4409
4410 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4411
4412 ! reconstruct from right side
4413
4414 poly(0) = vp0 + poly_coef_cbr_x(j, 0, &
4415# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4416 & 0)*dvd(1) + poly_coef_cbr_x(j, 0, 1)*dvd(0)
4417# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4418 poly(1) = vp0 + poly_coef_cbr_x(j, 1, &
4419# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4420 & 0)*dvd(0) + poly_coef_cbr_x(j, 1, 1)*dvd(-1)
4421# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4422 poly(2) = vp0 + poly_coef_cbr_x(j, 2, &
4423# 1177 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4424 & 0)*dvd(-1) + poly_coef_cbr_x(j, 2, 1)*dvd(-2)
4425# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4426
4427 if (wenojs) then
4428 do q = 0, weno_num_stencils
4429 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
4430# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4431 end do
4432 else if (mapped_weno) then
4433 do q = 0, weno_num_stencils
4434 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
4435# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4436 end do
4437 omega = alpha/sum(alpha)
4438 do q = 0, weno_num_stencils
4439 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
4440# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4441 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
4442# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4443 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
4444# 1192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4445 end do
4446 else if (wenoz) then
4447
4448# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4449#if defined(MFC_OpenACC)
4450# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4451!$acc loop seq
4452# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4453#elif defined(MFC_OpenMP)
4454# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4455
4456# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4457#endif
4458# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4459 do q = 0, weno_num_stencils
4460 alpha(q) = d_cbr_x(q, j)*(1._wp + (tau/beta(q)))
4461# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4462 end do
4463 else if (teno) then
4464
4465# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4466#if defined(MFC_OpenACC)
4467# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4468!$acc loop seq
4469# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4470#elif defined(MFC_OpenMP)
4471# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4472
4473# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4474#endif
4475# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4476 do q = 0, weno_num_stencils
4477 alpha(q) = delta(q)*d_cbr_x(q, j)
4478# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4479 end do
4480 end if
4481
4482 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4483 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4484 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4485
4486 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4487 end do
4488 end do
4489 end do
4490 end do
4491
4492# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4493#if defined(MFC_OpenACC)
4494# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4495!$acc end parallel loop
4496# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4497#elif defined(MFC_OpenMP)
4498# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4499
4500# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4501!$omp end target teams loop
4502# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4503#endif
4504# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4505
4506 if (mp_weno) then
4507 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
4508 end if
4509 end if
4510# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4511# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4512# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4513 if (weno_dir == 2) then
4514# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4515
4516# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4517
4518# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4519#if defined(MFC_OpenACC)
4520# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4521!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4522# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4523#elif defined(MFC_OpenMP)
4524# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4525
4526# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4527
4528# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4529
4530# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4531!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4532# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4533!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4534# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4535#endif
4536# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4537 do l = is3_weno%beg, is3_weno%end
4538# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4539 do k = is1_weno%beg, is1_weno%end
4540# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4541 do j = is2_weno%beg, is2_weno%end
4542# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4543
4544# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4545#if defined(MFC_OpenACC)
4546# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4547!$acc loop seq
4548# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4549#elif defined(MFC_OpenMP)
4550# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4551
4552# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4553#endif
4554# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4555 do i = 1, v_size
4556 ! reconstruct from left side
4557
4558 alpha(:) = 0._wp
4559
4560 vp0 = v_vf(i)%sf(j, k, l)
4561# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4562 vm1 = v_vf(i)%sf(j, k - 1, l)
4563# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4564 vm2 = v_vf(i)%sf(j, k - 2, l)
4565# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4566 vp1 = v_vf(i)%sf(j, k + 1, l)
4567# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4568 vp2 = v_vf(i)%sf(j, k + 2, l)
4569# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4570
4571 dvd(1) = vp2 - vp1
4572 dvd(0) = vp1 - vp0
4573 dvd(-1) = vp0 - vm1
4574 dvd(-2) = vm1 - vm2
4575
4576 poly(0) = vp0 + poly_coef_cbl_y(k, 0, &
4577# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4578 & 0)*dvd(1) + poly_coef_cbl_y(k, 0, 1)*dvd(0)
4579# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4580 poly(1) = vp0 + poly_coef_cbl_y(k, 1, &
4581# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4582 & 0)*dvd(0) + poly_coef_cbl_y(k, 1, 1)*dvd(-1)
4583# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4584 poly(2) = vp0 + poly_coef_cbl_y(k, 2, &
4585# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4586 & 0)*dvd(-1) + poly_coef_cbl_y(k, 2, 1)*dvd(-2)
4587# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4588
4589 if (uniform_grid(2)) then
4590# 1103 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4591 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4592 & + weno_eps
4593 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4594 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4595 & + weno_eps
4596 else
4597 beta(0) = beta_coef_y(k, 0, 0)*dvd(1)*dvd(1) + beta_coef_y(k, &
4598# 1110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4599 & 0, 1)*dvd(1)*dvd(0) + beta_coef_y(k, 0, 2)*dvd(0)*dvd(0) + weno_eps
4600# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4601 beta(1) = beta_coef_y(k, 1, 0)*dvd(0)*dvd(0) + beta_coef_y(k, &
4602# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4603 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_y(k, 1, &
4604# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4605 & 2)*dvd(-1)*dvd(-1) + weno_eps
4606 beta(2) = beta_coef_y(k, 2, &
4607# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4608 & 0)*dvd(-1)*dvd(-1) + beta_coef_y(k, 2, &
4609# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4610 & 1)*dvd(-1)*dvd(-2) + beta_coef_y(k, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4611# 1117 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4612 end if
4613
4614 if (wenojs) then
4615 do q = 0, weno_num_stencils
4616 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
4617# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4618 end do
4619 else if (mapped_weno) then
4620 do q = 0, weno_num_stencils
4621 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
4622# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4623 end do
4624 omega = alpha/sum(alpha)
4625 do q = 0, weno_num_stencils
4626 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
4627# 1130 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4628 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
4629# 1131 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4630 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
4631# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4632 end do
4633 else if (wenoz) then
4634 ! Borges, et al. (2008)
4635
4636 tau = abs(beta(2) - beta(0)) ! Equation 25
4637
4638# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4639#if defined(MFC_OpenACC)
4640# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4641!$acc loop seq
4642# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4643#elif defined(MFC_OpenMP)
4644# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4645
4646# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4647#endif
4648# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4649 do q = 0, weno_num_stencils
4650 alpha(q) = d_cbl_y(q, k)*(1._wp + (tau/beta(q)))
4651# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4652 ! Equation 28 (note: weno_eps was already added to beta)
4653 end do
4654 else if (teno) then
4655 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4656 tau = abs(beta(2) - beta(0))
4657
4658# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4659#if defined(MFC_OpenACC)
4660# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4661!$acc loop seq
4662# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4663#elif defined(MFC_OpenMP)
4664# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4665
4666# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4667#endif
4668# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4669 do q = 0, weno_num_stencils
4670 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4671 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4672 alpha(q) = (alpha(q)**3._wp)**2._wp
4673 end do
4674 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4675
4676
4677# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4678#if defined(MFC_OpenACC)
4679# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4680!$acc loop seq
4681# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4682#elif defined(MFC_OpenMP)
4683# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4684
4685# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4686#endif
4687# 1154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4688 do q = 0, weno_num_stencils
4689 if (omega(q) < teno_ct) then ! Equation 26
4690 delta(q) = 0._wp
4691 else
4692 delta(q) = 1._wp
4693 end if
4694 alpha(q) = delta(q)*d_cbl_y(q, k) ! Equation 27
4695# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4696 end do
4697 end if
4698
4699 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4700 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4701 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4702
4703 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4704
4705 ! reconstruct from right side
4706
4707 poly(0) = vp0 + poly_coef_cbr_y(k, 0, &
4708# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4709 & 0)*dvd(1) + poly_coef_cbr_y(k, 0, 1)*dvd(0)
4710# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4711 poly(1) = vp0 + poly_coef_cbr_y(k, 1, &
4712# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4713 & 0)*dvd(0) + poly_coef_cbr_y(k, 1, 1)*dvd(-1)
4714# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4715 poly(2) = vp0 + poly_coef_cbr_y(k, 2, &
4716# 1177 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4717 & 0)*dvd(-1) + poly_coef_cbr_y(k, 2, 1)*dvd(-2)
4718# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4719
4720 if (wenojs) then
4721 do q = 0, weno_num_stencils
4722 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4723# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4724 end do
4725 else if (mapped_weno) then
4726 do q = 0, weno_num_stencils
4727 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4728# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4729 end do
4730 omega = alpha/sum(alpha)
4731 do q = 0, weno_num_stencils
4732 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
4733# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4734 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
4735# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4736 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
4737# 1192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4738 end do
4739 else if (wenoz) then
4740
4741# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4742#if defined(MFC_OpenACC)
4743# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4744!$acc loop seq
4745# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4746#elif defined(MFC_OpenMP)
4747# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4748
4749# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4750#endif
4751# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4752 do q = 0, weno_num_stencils
4753 alpha(q) = d_cbr_y(q, k)*(1._wp + (tau/beta(q)))
4754# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4755 end do
4756 else if (teno) then
4757
4758# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4759#if defined(MFC_OpenACC)
4760# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4761!$acc loop seq
4762# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4763#elif defined(MFC_OpenMP)
4764# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4765
4766# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4767#endif
4768# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4769 do q = 0, weno_num_stencils
4770 alpha(q) = delta(q)*d_cbr_y(q, k)
4771# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4772 end do
4773 end if
4774
4775 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4776 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4777 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4778
4779 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4780 end do
4781 end do
4782 end do
4783 end do
4784
4785# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4786#if defined(MFC_OpenACC)
4787# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4788!$acc end parallel loop
4789# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4790#elif defined(MFC_OpenMP)
4791# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4792
4793# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4794!$omp end target teams loop
4795# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4796#endif
4797# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4798
4799 if (mp_weno) then
4800 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
4801 end if
4802 end if
4803# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4804# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4805# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4806 if (weno_dir == 3) then
4807# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4808
4809# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4810
4811# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4812#if defined(MFC_OpenACC)
4813# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4814!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4815# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4816#elif defined(MFC_OpenMP)
4817# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4818
4819# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4820
4821# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4822
4823# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4824!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4825# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4826!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4827# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4828#endif
4829# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4830 do l = is1_weno%beg, is1_weno%end
4831# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4832 do k = is2_weno%beg, is2_weno%end
4833# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4834 do j = is3_weno%beg, is3_weno%end
4835# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4836
4837# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4838#if defined(MFC_OpenACC)
4839# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4840!$acc loop seq
4841# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4842#elif defined(MFC_OpenMP)
4843# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4844
4845# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4846#endif
4847# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4848 do i = 1, v_size
4849 ! reconstruct from left side
4850
4851 alpha(:) = 0._wp
4852
4853 vp0 = v_vf(i)%sf(j, k, l)
4854# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4855 vm1 = v_vf(i)%sf(j, k, l - 1)
4856# 1086 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4857 vm2 = v_vf(i)%sf(j, k, l - 2)
4858# 1087 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4859 vp1 = v_vf(i)%sf(j, k, l + 1)
4860# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4861 vp2 = v_vf(i)%sf(j, k, l + 2)
4862# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4863
4864 dvd(1) = vp2 - vp1
4865 dvd(0) = vp1 - vp0
4866 dvd(-1) = vp0 - vm1
4867 dvd(-2) = vm1 - vm2
4868
4869 poly(0) = vp0 + poly_coef_cbl_z(l, 0, &
4870# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4871 & 0)*dvd(1) + poly_coef_cbl_z(l, 0, 1)*dvd(0)
4872# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4873 poly(1) = vp0 + poly_coef_cbl_z(l, 1, &
4874# 1098 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4875 & 0)*dvd(0) + poly_coef_cbl_z(l, 1, 1)*dvd(-1)
4876# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4877 poly(2) = vp0 + poly_coef_cbl_z(l, 2, &
4878# 1100 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4879 & 0)*dvd(-1) + poly_coef_cbl_z(l, 2, 1)*dvd(-2)
4880# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4881
4882 if (uniform_grid(3)) then
4883# 1103 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4884 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4885 & + weno_eps
4886 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4887 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4888 & + weno_eps
4889 else
4890 beta(0) = beta_coef_z(l, 0, 0)*dvd(1)*dvd(1) + beta_coef_z(l, &
4891# 1110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4892 & 0, 1)*dvd(1)*dvd(0) + beta_coef_z(l, 0, 2)*dvd(0)*dvd(0) + weno_eps
4893# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4894 beta(1) = beta_coef_z(l, 1, 0)*dvd(0)*dvd(0) + beta_coef_z(l, &
4895# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4896 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_z(l, 1, &
4897# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4898 & 2)*dvd(-1)*dvd(-1) + weno_eps
4899 beta(2) = beta_coef_z(l, 2, &
4900# 1115 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4901 & 0)*dvd(-1)*dvd(-1) + beta_coef_z(l, 2, &
4902# 1116 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4903 & 1)*dvd(-1)*dvd(-2) + beta_coef_z(l, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4904# 1117 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4905 end if
4906
4907 if (wenojs) then
4908 do q = 0, weno_num_stencils
4909 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4910# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4911 end do
4912 else if (mapped_weno) then
4913 do q = 0, weno_num_stencils
4914 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4915# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4916 end do
4917 omega = alpha/sum(alpha)
4918 do q = 0, weno_num_stencils
4919 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
4920# 1130 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4921 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
4922# 1131 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4923 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
4924# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4925 end do
4926 else if (wenoz) then
4927 ! Borges, et al. (2008)
4928
4929 tau = abs(beta(2) - beta(0)) ! Equation 25
4930
4931# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4932#if defined(MFC_OpenACC)
4933# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4934!$acc loop seq
4935# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4936#elif defined(MFC_OpenMP)
4937# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4938
4939# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4940#endif
4941# 1138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4942 do q = 0, weno_num_stencils
4943 alpha(q) = d_cbl_z(q, l)*(1._wp + (tau/beta(q)))
4944# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4945 ! Equation 28 (note: weno_eps was already added to beta)
4946 end do
4947 else if (teno) then
4948 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4949 tau = abs(beta(2) - beta(0))
4950
4951# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4952#if defined(MFC_OpenACC)
4953# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4954!$acc loop seq
4955# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4956#elif defined(MFC_OpenMP)
4957# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4958
4959# 1145 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4960#endif
4961# 1146 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4962 do q = 0, weno_num_stencils
4963 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4964 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4965 alpha(q) = (alpha(q)**3._wp)**2._wp
4966 end do
4967 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4968
4969
4970# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4971#if defined(MFC_OpenACC)
4972# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4973!$acc loop seq
4974# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4975#elif defined(MFC_OpenMP)
4976# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4977
4978# 1153 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4979#endif
4980# 1154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4981 do q = 0, weno_num_stencils
4982 if (omega(q) < teno_ct) then ! Equation 26
4983 delta(q) = 0._wp
4984 else
4985 delta(q) = 1._wp
4986 end if
4987 alpha(q) = delta(q)*d_cbl_z(q, l) ! Equation 27
4988# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4989 end do
4990 end if
4991
4992 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4993 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4994 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4995
4996 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4997
4998 ! reconstruct from right side
4999
5000 poly(0) = vp0 + poly_coef_cbr_z(l, 0, &
5001# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5002 & 0)*dvd(1) + poly_coef_cbr_z(l, 0, 1)*dvd(0)
5003# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5004 poly(1) = vp0 + poly_coef_cbr_z(l, 1, &
5005# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5006 & 0)*dvd(0) + poly_coef_cbr_z(l, 1, 1)*dvd(-1)
5007# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5008 poly(2) = vp0 + poly_coef_cbr_z(l, 2, &
5009# 1177 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5010 & 0)*dvd(-1) + poly_coef_cbr_z(l, 2, 1)*dvd(-2)
5011# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5012
5013 if (wenojs) then
5014 do q = 0, weno_num_stencils
5015 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
5016# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5017 end do
5018 else if (mapped_weno) then
5019 do q = 0, weno_num_stencils
5020 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
5021# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5022 end do
5023 omega = alpha/sum(alpha)
5024 do q = 0, weno_num_stencils
5025 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
5026# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5027 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
5028# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5029 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
5030# 1192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5031 end do
5032 else if (wenoz) then
5033
5034# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5035#if defined(MFC_OpenACC)
5036# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5037!$acc loop seq
5038# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5039#elif defined(MFC_OpenMP)
5040# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5041
5042# 1194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5043#endif
5044# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5045 do q = 0, weno_num_stencils
5046 alpha(q) = d_cbr_z(q, l)*(1._wp + (tau/beta(q)))
5047# 1197 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5048 end do
5049 else if (teno) then
5050
5051# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5052#if defined(MFC_OpenACC)
5053# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5054!$acc loop seq
5055# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5056#elif defined(MFC_OpenMP)
5057# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5058
5059# 1199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5060#endif
5061# 1200 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5062 do q = 0, weno_num_stencils
5063 alpha(q) = delta(q)*d_cbr_z(q, l)
5064# 1202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5065 end do
5066 end if
5067
5068 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
5069 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
5070 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
5071
5072 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
5073 end do
5074 end do
5075 end do
5076 end do
5077
5078# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5079#if defined(MFC_OpenACC)
5080# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5081!$acc end parallel loop
5082# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5083#elif defined(MFC_OpenMP)
5084# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5085
5086# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5087!$omp end target teams loop
5088# 1214 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5089#endif
5090# 1215 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5091
5092 if (mp_weno) then
5093 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
5094 end if
5095 end if
5096# 1221 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5097# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5098 end if
5099 if (weno_order == 7) then
5100# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5101# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5102# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5103# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5104 if (weno_dir == 1) then
5105# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5106
5107# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5108
5109# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5110#if defined(MFC_OpenACC)
5111# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5112!$acc parallel loop collapse(3) gang vector default(present) private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5113# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5114#elif defined(MFC_OpenMP)
5115# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5116
5117# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5118
5119# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5120
5121# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5122!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5123# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5124!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5125# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5126#endif
5127# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5128 do l = is3_weno%beg, is3_weno%end
5129# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5130 do k = is2_weno%beg, is2_weno%end
5131# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5132 do j = is1_weno%beg, is1_weno%end
5133# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5134
5135# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5136#if defined(MFC_OpenACC)
5137# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5138!$acc loop seq
5139# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5140#elif defined(MFC_OpenMP)
5141# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5142
5143# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5144#endif
5145# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5146 do i = 1, v_size
5147 alpha(:) = 0._wp
5148
5149 vp0 = v_vf(i)%sf(j, k, l)
5150# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5151 vm1 = v_vf(i)%sf(j - 1, k, l)
5152# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5153 vm2 = v_vf(i)%sf(j - 2, k, l)
5154# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5155 vm3 = v_vf(i)%sf(j - 3, k, l)
5156# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5157 vp1 = v_vf(i)%sf(j + 1, k, l)
5158# 1246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5159 vp2 = v_vf(i)%sf(j + 2, k, l)
5160# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5161 vp3 = v_vf(i)%sf(j + 3, k, l)
5162# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5163
5164 if (teno) then
5165 v(-3) = vm3
5166 v(-2) = vm2
5167 v(-1) = vm1
5168 v(0) = vp0
5169 v(1) = vp1
5170 v(2) = vp2
5171 v(3) = vp3
5172 end if
5173
5174 if (.not. teno) then
5175 dvd(2) = vp3 - vp2
5176 dvd(1) = vp2 - vp1
5177 dvd(0) = vp1 - vp0
5178 dvd(-1) = vp0 - vm1
5179 dvd(-2) = vm1 - vm2
5180 dvd(-3) = vm2 - vm3
5181
5182 poly(3) = vp0 + poly_coef_cbl_x(j, 0, &
5183# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5184 & 0)*dvd(2) + poly_coef_cbl_x(j, 0, &
5185# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5186 & 1)*dvd(1) + poly_coef_cbl_x(j, 0, 2)*dvd(0)
5187# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5188 poly(2) = vp0 + poly_coef_cbl_x(j, 1, &
5189# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5190 & 0)*dvd(1) + poly_coef_cbl_x(j, 1, &
5191# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5192 & 1)*dvd(0) + poly_coef_cbl_x(j, 1, 2)*dvd(-1)
5193# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5194 poly(1) = vp0 + poly_coef_cbl_x(j, 2, &
5195# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5196 & 0)*dvd(0) + poly_coef_cbl_x(j, 2, &
5197# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5198 & 1)*dvd(-1) + poly_coef_cbl_x(j, 2, 2)*dvd(-2)
5199# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5200 poly(0) = vp0 + poly_coef_cbl_x(j, 3, &
5201# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5202 & 0)*dvd(-1) + poly_coef_cbl_x(j, 3, &
5203# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5204 & 1)*dvd(-2) + poly_coef_cbl_x(j, 3, 2)*dvd(-3)
5205# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5206 else
5207# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5208 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5209 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5210 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5211 ! to keep the stencil order to reuse the beta coefficients
5212 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5213 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5214 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5215 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5216 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5217# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5218 end if
5219
5220 if (.not. teno) then
5221 beta(3) = beta_coef_x(j, 0, 0)*dvd(2)*dvd(2) + beta_coef_x(j, &
5222# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5223 & 0, 1)*dvd(2)*dvd(1) + beta_coef_x(j, 0, &
5224# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5225 & 2)*dvd(2)*dvd(0) + beta_coef_x(j, 0, &
5226# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5227 & 3)*dvd(1)*dvd(1) + beta_coef_x(j, 0, &
5228# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5229 & 4)*dvd(1)*dvd(0) + beta_coef_x(j, 0, 5)*dvd(0)*dvd(0) + weno_eps
5230# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5231
5232 beta(2) = beta_coef_x(j, 1, 0)*dvd(1)*dvd(1) + beta_coef_x(j, &
5233# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5234 & 1, 1)*dvd(1)*dvd(0) + beta_coef_x(j, 1, &
5235# 1302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5236 & 2)*dvd(1)*dvd(-1) + beta_coef_x(j, 1, &
5237# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5238 & 3)*dvd(0)*dvd(0) + beta_coef_x(j, 1, &
5239# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5240 & 4)*dvd(0)*dvd(-1) + beta_coef_x(j, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
5241# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5242
5243 beta(1) = beta_coef_x(j, 2, 0)*dvd(0)*dvd(0) + beta_coef_x(j, &
5244# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5245 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_x(j, 2, &
5246# 1308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5247 & 2)*dvd(0)*dvd(-2) + beta_coef_x(j, 2, &
5248# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5249 & 3)*dvd(-1)*dvd(-1) + beta_coef_x(j, 2, &
5250# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5251 & 4)*dvd(-1)*dvd(-2) + beta_coef_x(j, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
5252# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5253
5254 beta(0) = beta_coef_x(j, 3, &
5255# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5256 & 0)*dvd(-1)*dvd(-1) + beta_coef_x(j, 3, &
5257# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5258 & 1)*dvd(-1)*dvd(-2) + beta_coef_x(j, 3, &
5259# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5260 & 2)*dvd(-1)*dvd(-3) + beta_coef_x(j, 3, &
5261# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5262 & 3)*dvd(-2)*dvd(-2) + beta_coef_x(j, 3, &
5263# 1317 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5264 & 4)*dvd(-2)*dvd(-3) + beta_coef_x(j, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
5265# 1318 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5266 else
5267# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5268 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
5269 ! & Tang, 2019) Section 3.2
5270 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
5271 & **2._wp)/4._wp + weno_eps
5272 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
5273 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
5274 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
5275 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
5276
5277 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
5278 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
5279 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
5280
5281 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
5282 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
5283 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
5284# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5285 end if
5286
5287 if (wenojs) then
5288 do q = 0, weno_num_stencils
5289 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
5290# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5291 end do
5292 else if (mapped_weno) then
5293 do q = 0, weno_num_stencils
5294 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
5295# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5296 end do
5297 omega = alpha/sum(alpha)
5298 do q = 0, weno_num_stencils
5299 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
5300# 1350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5301 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
5302# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5303 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
5304# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5305 end do
5306 else if (wenoz) then
5307 ! Castro, et al. (2010) Don & Borges (2013) also helps
5308 tau = abs(beta(3) - beta(0)) ! Equation 50
5309
5310# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5311#if defined(MFC_OpenACC)
5312# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5313!$acc loop seq
5314# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5315#elif defined(MFC_OpenMP)
5316# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5317
5318# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5319#endif
5320# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5321 do q = 0, weno_num_stencils
5322 ! wenoz_q = 2,3,4 for stability
5323 alpha(q) = d_cbl_x(q, j)*(1._wp + (tau/beta(q))**wenoz_q)
5324# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5325 end do
5326 else if (teno) then
5327# 1363 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5328 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
5329 alpha = 1._wp + tau/beta
5330 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
5331 omega = alpha/sum(alpha)
5332
5333
5334# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5335#if defined(MFC_OpenACC)
5336# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5337!$acc loop seq
5338# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5339#elif defined(MFC_OpenMP)
5340# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5341
5342# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5343#endif
5344# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5345 do q = 0, weno_num_stencils
5346 if (omega(q) < teno_ct) then ! Equation 26
5347 delta(q) = 0._wp
5348 else
5349 delta(q) = 1._wp
5350 end if
5351 alpha(q) = delta(q)*d_cbl_x(q, j) ! Equation 27
5352# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5353 end do
5354# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5355 end if
5356
5357 omega = alpha/sum(alpha)
5358
5359 vl_rs_vf_x(j, k, l, &
5360 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5361
5362 if (teno) then
5363# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5364 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5365# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5366 end if
5367
5368 if (.not. teno) then
5369 poly(3) = vp0 + poly_coef_cbr_x(j, 0, &
5370# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5371 & 0)*dvd(2) + poly_coef_cbr_x(j, 0, &
5372# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5373 & 1)*dvd(1) + poly_coef_cbr_x(j, 0, 2)*dvd(0)
5374# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5375 poly(2) = vp0 + poly_coef_cbr_x(j, 1, &
5376# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5377 & 0)*dvd(1) + poly_coef_cbr_x(j, 1, &
5378# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5379 & 1)*dvd(0) + poly_coef_cbr_x(j, 1, 2)*dvd(-1)
5380# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5381 poly(1) = vp0 + poly_coef_cbr_x(j, 2, &
5382# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5383 & 0)*dvd(0) + poly_coef_cbr_x(j, 2, &
5384# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5385 & 1)*dvd(-1) + poly_coef_cbr_x(j, 2, 2)*dvd(-2)
5386# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5387 poly(0) = vp0 + poly_coef_cbr_x(j, 3, &
5388# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5389 & 0)*dvd(-1) + poly_coef_cbr_x(j, 3, &
5390# 1403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5391 & 1)*dvd(-2) + poly_coef_cbr_x(j, 3, 2)*dvd(-3)
5392# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5393 else
5394# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5395 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
5396 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
5397 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
5398 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
5399 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
5400# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5401 end if
5402
5403 if (wenojs) then
5404 do q = 0, weno_num_stencils
5405 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
5406# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5407 end do
5408 else if (mapped_weno) then
5409 do q = 0, weno_num_stencils
5410 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
5411# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5412 end do
5413 omega = alpha/sum(alpha)
5414 do q = 0, weno_num_stencils
5415 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
5416# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5417 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
5418# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5419 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
5420# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5421 end do
5422 else if (wenoz) then
5423
5424# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5425#if defined(MFC_OpenACC)
5426# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5427!$acc loop seq
5428# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5429#elif defined(MFC_OpenMP)
5430# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5431
5432# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5433#endif
5434# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5435 do q = 0, weno_num_stencils
5436 ! wenoz_q = 2,3,4 for stability
5437 alpha(q) = d_cbr_x(q, j)*(1._wp + (tau/beta(q))**wenoz_q)
5438# 1433 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5439 end do
5440 else if (teno) then
5441
5442# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5443#if defined(MFC_OpenACC)
5444# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5445!$acc loop seq
5446# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5447#elif defined(MFC_OpenMP)
5448# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5449
5450# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5451#endif
5452# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5453 do q = 0, weno_num_stencils
5454 alpha(q) = delta(q)*d_cbr_x(q, j)
5455# 1438 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5456 end do
5457 end if
5458
5459 omega = alpha/sum(alpha)
5460
5461 vr_rs_vf_x(j, k, l, &
5462 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5463
5464 if (teno) then
5465# 1448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5466 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5467# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5468 end if
5469 end do
5470 end do
5471 end do
5472 end do
5473
5474# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5475#if defined(MFC_OpenACC)
5476# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5477!$acc end parallel loop
5478# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5479#elif defined(MFC_OpenMP)
5480# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5481
5482# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5483!$omp end target teams loop
5484# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5485#endif
5486# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5487 end if
5488# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5489# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5490# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5491 if (weno_dir == 2) then
5492# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5493
5494# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5495
5496# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5497#if defined(MFC_OpenACC)
5498# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5499!$acc parallel loop collapse(3) gang vector default(present) private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5500# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5501#elif defined(MFC_OpenMP)
5502# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5503
5504# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5505
5506# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5507
5508# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5509!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5510# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5511!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5512# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5513#endif
5514# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5515 do l = is3_weno%beg, is3_weno%end
5516# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5517 do k = is1_weno%beg, is1_weno%end
5518# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5519 do j = is2_weno%beg, is2_weno%end
5520# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5521
5522# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5523#if defined(MFC_OpenACC)
5524# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5525!$acc loop seq
5526# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5527#elif defined(MFC_OpenMP)
5528# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5529
5530# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5531#endif
5532# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5533 do i = 1, v_size
5534 alpha(:) = 0._wp
5535
5536 vp0 = v_vf(i)%sf(j, k, l)
5537# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5538 vm1 = v_vf(i)%sf(j, k - 1, l)
5539# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5540 vm2 = v_vf(i)%sf(j, k - 2, l)
5541# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5542 vm3 = v_vf(i)%sf(j, k - 3, l)
5543# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5544 vp1 = v_vf(i)%sf(j, k + 1, l)
5545# 1246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5546 vp2 = v_vf(i)%sf(j, k + 2, l)
5547# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5548 vp3 = v_vf(i)%sf(j, k + 3, l)
5549# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5550
5551 if (teno) then
5552 v(-3) = vm3
5553 v(-2) = vm2
5554 v(-1) = vm1
5555 v(0) = vp0
5556 v(1) = vp1
5557 v(2) = vp2
5558 v(3) = vp3
5559 end if
5560
5561 if (.not. teno) then
5562 dvd(2) = vp3 - vp2
5563 dvd(1) = vp2 - vp1
5564 dvd(0) = vp1 - vp0
5565 dvd(-1) = vp0 - vm1
5566 dvd(-2) = vm1 - vm2
5567 dvd(-3) = vm2 - vm3
5568
5569 poly(3) = vp0 + poly_coef_cbl_y(k, 0, &
5570# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5571 & 0)*dvd(2) + poly_coef_cbl_y(k, 0, &
5572# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5573 & 1)*dvd(1) + poly_coef_cbl_y(k, 0, 2)*dvd(0)
5574# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5575 poly(2) = vp0 + poly_coef_cbl_y(k, 1, &
5576# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5577 & 0)*dvd(1) + poly_coef_cbl_y(k, 1, &
5578# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5579 & 1)*dvd(0) + poly_coef_cbl_y(k, 1, 2)*dvd(-1)
5580# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5581 poly(1) = vp0 + poly_coef_cbl_y(k, 2, &
5582# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5583 & 0)*dvd(0) + poly_coef_cbl_y(k, 2, &
5584# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5585 & 1)*dvd(-1) + poly_coef_cbl_y(k, 2, 2)*dvd(-2)
5586# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5587 poly(0) = vp0 + poly_coef_cbl_y(k, 3, &
5588# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5589 & 0)*dvd(-1) + poly_coef_cbl_y(k, 3, &
5590# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5591 & 1)*dvd(-2) + poly_coef_cbl_y(k, 3, 2)*dvd(-3)
5592# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5593 else
5594# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5595 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5596 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5597 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5598 ! to keep the stencil order to reuse the beta coefficients
5599 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5600 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5601 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5602 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5603 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5604# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5605 end if
5606
5607 if (.not. teno) then
5608 beta(3) = beta_coef_y(k, 0, 0)*dvd(2)*dvd(2) + beta_coef_y(k, &
5609# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5610 & 0, 1)*dvd(2)*dvd(1) + beta_coef_y(k, 0, &
5611# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5612 & 2)*dvd(2)*dvd(0) + beta_coef_y(k, 0, &
5613# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5614 & 3)*dvd(1)*dvd(1) + beta_coef_y(k, 0, &
5615# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5616 & 4)*dvd(1)*dvd(0) + beta_coef_y(k, 0, 5)*dvd(0)*dvd(0) + weno_eps
5617# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5618
5619 beta(2) = beta_coef_y(k, 1, 0)*dvd(1)*dvd(1) + beta_coef_y(k, &
5620# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5621 & 1, 1)*dvd(1)*dvd(0) + beta_coef_y(k, 1, &
5622# 1302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5623 & 2)*dvd(1)*dvd(-1) + beta_coef_y(k, 1, &
5624# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5625 & 3)*dvd(0)*dvd(0) + beta_coef_y(k, 1, &
5626# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5627 & 4)*dvd(0)*dvd(-1) + beta_coef_y(k, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
5628# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5629
5630 beta(1) = beta_coef_y(k, 2, 0)*dvd(0)*dvd(0) + beta_coef_y(k, &
5631# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5632 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_y(k, 2, &
5633# 1308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5634 & 2)*dvd(0)*dvd(-2) + beta_coef_y(k, 2, &
5635# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5636 & 3)*dvd(-1)*dvd(-1) + beta_coef_y(k, 2, &
5637# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5638 & 4)*dvd(-1)*dvd(-2) + beta_coef_y(k, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
5639# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5640
5641 beta(0) = beta_coef_y(k, 3, &
5642# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5643 & 0)*dvd(-1)*dvd(-1) + beta_coef_y(k, 3, &
5644# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5645 & 1)*dvd(-1)*dvd(-2) + beta_coef_y(k, 3, &
5646# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5647 & 2)*dvd(-1)*dvd(-3) + beta_coef_y(k, 3, &
5648# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5649 & 3)*dvd(-2)*dvd(-2) + beta_coef_y(k, 3, &
5650# 1317 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5651 & 4)*dvd(-2)*dvd(-3) + beta_coef_y(k, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
5652# 1318 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5653 else
5654# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5655 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
5656 ! & Tang, 2019) Section 3.2
5657 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
5658 & **2._wp)/4._wp + weno_eps
5659 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
5660 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
5661 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
5662 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
5663
5664 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
5665 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
5666 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
5667
5668 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
5669 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
5670 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
5671# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5672 end if
5673
5674 if (wenojs) then
5675 do q = 0, weno_num_stencils
5676 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
5677# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5678 end do
5679 else if (mapped_weno) then
5680 do q = 0, weno_num_stencils
5681 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
5682# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5683 end do
5684 omega = alpha/sum(alpha)
5685 do q = 0, weno_num_stencils
5686 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
5687# 1350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5688 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
5689# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5690 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
5691# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5692 end do
5693 else if (wenoz) then
5694 ! Castro, et al. (2010) Don & Borges (2013) also helps
5695 tau = abs(beta(3) - beta(0)) ! Equation 50
5696
5697# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5698#if defined(MFC_OpenACC)
5699# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5700!$acc loop seq
5701# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5702#elif defined(MFC_OpenMP)
5703# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5704
5705# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5706#endif
5707# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5708 do q = 0, weno_num_stencils
5709 ! wenoz_q = 2,3,4 for stability
5710 alpha(q) = d_cbl_y(q, k)*(1._wp + (tau/beta(q))**wenoz_q)
5711# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5712 end do
5713 else if (teno) then
5714# 1363 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5715 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
5716 alpha = 1._wp + tau/beta
5717 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
5718 omega = alpha/sum(alpha)
5719
5720
5721# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5722#if defined(MFC_OpenACC)
5723# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5724!$acc loop seq
5725# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5726#elif defined(MFC_OpenMP)
5727# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5728
5729# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5730#endif
5731# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5732 do q = 0, weno_num_stencils
5733 if (omega(q) < teno_ct) then ! Equation 26
5734 delta(q) = 0._wp
5735 else
5736 delta(q) = 1._wp
5737 end if
5738 alpha(q) = delta(q)*d_cbl_y(q, k) ! Equation 27
5739# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5740 end do
5741# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5742 end if
5743
5744 omega = alpha/sum(alpha)
5745
5746 vl_rs_vf_x(j, k, l, &
5747 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5748
5749 if (teno) then
5750# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5751 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5752# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5753 end if
5754
5755 if (.not. teno) then
5756 poly(3) = vp0 + poly_coef_cbr_y(k, 0, &
5757# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5758 & 0)*dvd(2) + poly_coef_cbr_y(k, 0, &
5759# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5760 & 1)*dvd(1) + poly_coef_cbr_y(k, 0, 2)*dvd(0)
5761# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5762 poly(2) = vp0 + poly_coef_cbr_y(k, 1, &
5763# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5764 & 0)*dvd(1) + poly_coef_cbr_y(k, 1, &
5765# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5766 & 1)*dvd(0) + poly_coef_cbr_y(k, 1, 2)*dvd(-1)
5767# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5768 poly(1) = vp0 + poly_coef_cbr_y(k, 2, &
5769# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5770 & 0)*dvd(0) + poly_coef_cbr_y(k, 2, &
5771# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5772 & 1)*dvd(-1) + poly_coef_cbr_y(k, 2, 2)*dvd(-2)
5773# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5774 poly(0) = vp0 + poly_coef_cbr_y(k, 3, &
5775# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5776 & 0)*dvd(-1) + poly_coef_cbr_y(k, 3, &
5777# 1403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5778 & 1)*dvd(-2) + poly_coef_cbr_y(k, 3, 2)*dvd(-3)
5779# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5780 else
5781# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5782 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
5783 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
5784 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
5785 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
5786 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
5787# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5788 end if
5789
5790 if (wenojs) then
5791 do q = 0, weno_num_stencils
5792 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
5793# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5794 end do
5795 else if (mapped_weno) then
5796 do q = 0, weno_num_stencils
5797 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
5798# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5799 end do
5800 omega = alpha/sum(alpha)
5801 do q = 0, weno_num_stencils
5802 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
5803# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5804 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
5805# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5806 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
5807# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5808 end do
5809 else if (wenoz) then
5810
5811# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5812#if defined(MFC_OpenACC)
5813# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5814!$acc loop seq
5815# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5816#elif defined(MFC_OpenMP)
5817# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5818
5819# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5820#endif
5821# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5822 do q = 0, weno_num_stencils
5823 ! wenoz_q = 2,3,4 for stability
5824 alpha(q) = d_cbr_y(q, k)*(1._wp + (tau/beta(q))**wenoz_q)
5825# 1433 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5826 end do
5827 else if (teno) then
5828
5829# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5830#if defined(MFC_OpenACC)
5831# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5832!$acc loop seq
5833# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5834#elif defined(MFC_OpenMP)
5835# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5836
5837# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5838#endif
5839# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5840 do q = 0, weno_num_stencils
5841 alpha(q) = delta(q)*d_cbr_y(q, k)
5842# 1438 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5843 end do
5844 end if
5845
5846 omega = alpha/sum(alpha)
5847
5848 vr_rs_vf_x(j, k, l, &
5849 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5850
5851 if (teno) then
5852# 1448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5853 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5854# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5855 end if
5856 end do
5857 end do
5858 end do
5859 end do
5860
5861# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5862#if defined(MFC_OpenACC)
5863# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5864!$acc end parallel loop
5865# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5866#elif defined(MFC_OpenMP)
5867# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5868
5869# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5870!$omp end target teams loop
5871# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5872#endif
5873# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5874 end if
5875# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5876# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5877# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5878 if (weno_dir == 3) then
5879# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5880
5881# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5882
5883# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5884#if defined(MFC_OpenACC)
5885# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5886!$acc parallel loop collapse(3) gang vector default(present) private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5887# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5888#elif defined(MFC_OpenMP)
5889# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5890
5891# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5892
5893# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5894
5895# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5896!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5897# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5898!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5899# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5900#endif
5901# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5902 do l = is1_weno%beg, is1_weno%end
5903# 1235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5904 do k = is2_weno%beg, is2_weno%end
5905# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5906 do j = is3_weno%beg, is3_weno%end
5907# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5908
5909# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5910#if defined(MFC_OpenACC)
5911# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5912!$acc loop seq
5913# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5914#elif defined(MFC_OpenMP)
5915# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5916
5917# 1237 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5918#endif
5919# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5920 do i = 1, v_size
5921 alpha(:) = 0._wp
5922
5923 vp0 = v_vf(i)%sf(j, k, l)
5924# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5925 vm1 = v_vf(i)%sf(j, k, l - 1)
5926# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5927 vm2 = v_vf(i)%sf(j, k, l - 2)
5928# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5929 vm3 = v_vf(i)%sf(j, k, l - 3)
5930# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5931 vp1 = v_vf(i)%sf(j, k, l + 1)
5932# 1246 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5933 vp2 = v_vf(i)%sf(j, k, l + 2)
5934# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5935 vp3 = v_vf(i)%sf(j, k, l + 3)
5936# 1248 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5937
5938 if (teno) then
5939 v(-3) = vm3
5940 v(-2) = vm2
5941 v(-1) = vm1
5942 v(0) = vp0
5943 v(1) = vp1
5944 v(2) = vp2
5945 v(3) = vp3
5946 end if
5947
5948 if (.not. teno) then
5949 dvd(2) = vp3 - vp2
5950 dvd(1) = vp2 - vp1
5951 dvd(0) = vp1 - vp0
5952 dvd(-1) = vp0 - vm1
5953 dvd(-2) = vm1 - vm2
5954 dvd(-3) = vm2 - vm3
5955
5956 poly(3) = vp0 + poly_coef_cbl_z(l, 0, &
5957# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5958 & 0)*dvd(2) + poly_coef_cbl_z(l, 0, &
5959# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5960 & 1)*dvd(1) + poly_coef_cbl_z(l, 0, 2)*dvd(0)
5961# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5962 poly(2) = vp0 + poly_coef_cbl_z(l, 1, &
5963# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5964 & 0)*dvd(1) + poly_coef_cbl_z(l, 1, &
5965# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5966 & 1)*dvd(0) + poly_coef_cbl_z(l, 1, 2)*dvd(-1)
5967# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5968 poly(1) = vp0 + poly_coef_cbl_z(l, 2, &
5969# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5970 & 0)*dvd(0) + poly_coef_cbl_z(l, 2, &
5971# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5972 & 1)*dvd(-1) + poly_coef_cbl_z(l, 2, 2)*dvd(-2)
5973# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5974 poly(0) = vp0 + poly_coef_cbl_z(l, 3, &
5975# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5976 & 0)*dvd(-1) + poly_coef_cbl_z(l, 3, &
5977# 1278 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5978 & 1)*dvd(-2) + poly_coef_cbl_z(l, 3, 2)*dvd(-3)
5979# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5980 else
5981# 1281 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5982 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5983 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5984 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5985 ! to keep the stencil order to reuse the beta coefficients
5986 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5987 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5988 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5989 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5990 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5991# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5992 end if
5993
5994 if (.not. teno) then
5995 beta(3) = beta_coef_z(l, 0, 0)*dvd(2)*dvd(2) + beta_coef_z(l, &
5996# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5997 & 0, 1)*dvd(2)*dvd(1) + beta_coef_z(l, 0, &
5998# 1296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5999 & 2)*dvd(2)*dvd(0) + beta_coef_z(l, 0, &
6000# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6001 & 3)*dvd(1)*dvd(1) + beta_coef_z(l, 0, &
6002# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6003 & 4)*dvd(1)*dvd(0) + beta_coef_z(l, 0, 5)*dvd(0)*dvd(0) + weno_eps
6004# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6005
6006 beta(2) = beta_coef_z(l, 1, 0)*dvd(1)*dvd(1) + beta_coef_z(l, &
6007# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6008 & 1, 1)*dvd(1)*dvd(0) + beta_coef_z(l, 1, &
6009# 1302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6010 & 2)*dvd(1)*dvd(-1) + beta_coef_z(l, 1, &
6011# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6012 & 3)*dvd(0)*dvd(0) + beta_coef_z(l, 1, &
6013# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6014 & 4)*dvd(0)*dvd(-1) + beta_coef_z(l, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
6015# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6016
6017 beta(1) = beta_coef_z(l, 2, 0)*dvd(0)*dvd(0) + beta_coef_z(l, &
6018# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6019 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_z(l, 2, &
6020# 1308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6021 & 2)*dvd(0)*dvd(-2) + beta_coef_z(l, 2, &
6022# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6023 & 3)*dvd(-1)*dvd(-1) + beta_coef_z(l, 2, &
6024# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6025 & 4)*dvd(-1)*dvd(-2) + beta_coef_z(l, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
6026# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6027
6028 beta(0) = beta_coef_z(l, 3, &
6029# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6030 & 0)*dvd(-1)*dvd(-1) + beta_coef_z(l, 3, &
6031# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6032 & 1)*dvd(-1)*dvd(-2) + beta_coef_z(l, 3, &
6033# 1315 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6034 & 2)*dvd(-1)*dvd(-3) + beta_coef_z(l, 3, &
6035# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6036 & 3)*dvd(-2)*dvd(-2) + beta_coef_z(l, 3, &
6037# 1317 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6038 & 4)*dvd(-2)*dvd(-3) + beta_coef_z(l, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
6039# 1318 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6040 else
6041# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6042 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
6043 ! & Tang, 2019) Section 3.2
6044 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
6045 & **2._wp)/4._wp + weno_eps
6046 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
6047 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
6048 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
6049 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
6050
6051 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
6052 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
6053 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
6054
6055 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
6056 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
6057 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
6058# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6059 end if
6060
6061 if (wenojs) then
6062 do q = 0, weno_num_stencils
6063 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
6064# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6065 end do
6066 else if (mapped_weno) then
6067 do q = 0, weno_num_stencils
6068 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
6069# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6070 end do
6071 omega = alpha/sum(alpha)
6072 do q = 0, weno_num_stencils
6073 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
6074# 1350 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6075 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
6076# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6077 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
6078# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6079 end do
6080 else if (wenoz) then
6081 ! Castro, et al. (2010) Don & Borges (2013) also helps
6082 tau = abs(beta(3) - beta(0)) ! Equation 50
6083
6084# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6085#if defined(MFC_OpenACC)
6086# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6087!$acc loop seq
6088# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6089#elif defined(MFC_OpenMP)
6090# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6091
6092# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6093#endif
6094# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6095 do q = 0, weno_num_stencils
6096 ! wenoz_q = 2,3,4 for stability
6097 alpha(q) = d_cbl_z(q, l)*(1._wp + (tau/beta(q))**wenoz_q)
6098# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6099 end do
6100 else if (teno) then
6101# 1363 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6102 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
6103 alpha = 1._wp + tau/beta
6104 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
6105 omega = alpha/sum(alpha)
6106
6107
6108# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6109#if defined(MFC_OpenACC)
6110# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6111!$acc loop seq
6112# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6113#elif defined(MFC_OpenMP)
6114# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6115
6116# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6117#endif
6118# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6119 do q = 0, weno_num_stencils
6120 if (omega(q) < teno_ct) then ! Equation 26
6121 delta(q) = 0._wp
6122 else
6123 delta(q) = 1._wp
6124 end if
6125 alpha(q) = delta(q)*d_cbl_z(q, l) ! Equation 27
6126# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6127 end do
6128# 1378 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6129 end if
6130
6131 omega = alpha/sum(alpha)
6132
6133 vl_rs_vf_x(j, k, l, &
6134 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
6135
6136 if (teno) then
6137# 1387 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6138 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
6139# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6140 end if
6141
6142 if (.not. teno) then
6143 poly(3) = vp0 + poly_coef_cbr_z(l, 0, &
6144# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6145 & 0)*dvd(2) + poly_coef_cbr_z(l, 0, &
6146# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6147 & 1)*dvd(1) + poly_coef_cbr_z(l, 0, 2)*dvd(0)
6148# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6149 poly(2) = vp0 + poly_coef_cbr_z(l, 1, &
6150# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6151 & 0)*dvd(1) + poly_coef_cbr_z(l, 1, &
6152# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6153 & 1)*dvd(0) + poly_coef_cbr_z(l, 1, 2)*dvd(-1)
6154# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6155 poly(1) = vp0 + poly_coef_cbr_z(l, 2, &
6156# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6157 & 0)*dvd(0) + poly_coef_cbr_z(l, 2, &
6158# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6159 & 1)*dvd(-1) + poly_coef_cbr_z(l, 2, 2)*dvd(-2)
6160# 1401 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6161 poly(0) = vp0 + poly_coef_cbr_z(l, 3, &
6162# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6163 & 0)*dvd(-1) + poly_coef_cbr_z(l, 3, &
6164# 1403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6165 & 1)*dvd(-2) + poly_coef_cbr_z(l, 3, 2)*dvd(-3)
6166# 1404 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6167 else
6168# 1406 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6169 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
6170 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
6171 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
6172 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
6173 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
6174# 1412 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6175 end if
6176
6177 if (wenojs) then
6178 do q = 0, weno_num_stencils
6179 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
6180# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6181 end do
6182 else if (mapped_weno) then
6183 do q = 0, weno_num_stencils
6184 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
6185# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6186 end do
6187 omega = alpha/sum(alpha)
6188 do q = 0, weno_num_stencils
6189 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
6190# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6191 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
6192# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6193 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
6194# 1427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6195 end do
6196 else if (wenoz) then
6197
6198# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6199#if defined(MFC_OpenACC)
6200# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6201!$acc loop seq
6202# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6203#elif defined(MFC_OpenMP)
6204# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6205
6206# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6207#endif
6208# 1430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6209 do q = 0, weno_num_stencils
6210 ! wenoz_q = 2,3,4 for stability
6211 alpha(q) = d_cbr_z(q, l)*(1._wp + (tau/beta(q))**wenoz_q)
6212# 1433 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6213 end do
6214 else if (teno) then
6215
6216# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6217#if defined(MFC_OpenACC)
6218# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6219!$acc loop seq
6220# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6221#elif defined(MFC_OpenMP)
6222# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6223
6224# 1435 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6225#endif
6226# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6227 do q = 0, weno_num_stencils
6228 alpha(q) = delta(q)*d_cbr_z(q, l)
6229# 1438 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6230 end do
6231 end if
6232
6233 omega = alpha/sum(alpha)
6234
6235 vr_rs_vf_x(j, k, l, &
6236 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
6237
6238 if (teno) then
6239# 1448 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6240 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
6241# 1450 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6242 end if
6243 end do
6244 end do
6245 end do
6246 end do
6247
6248# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6249#if defined(MFC_OpenACC)
6250# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6251!$acc end parallel loop
6252# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6253#elif defined(MFC_OpenMP)
6254# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6255
6256# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6257!$omp end target teams loop
6258# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6259#endif
6260# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6261 end if
6262# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6263# 1459 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6264 end if
6265
6266 if (int_comp > 0 .and. v_size >= eqn_idx%adv%end) then
6267 call nvtxstartrange("WENO-INTCOMP")
6268 call s_thinc_compression(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir, is1_weno, is2_weno, is3_weno)
6269 call nvtxendrange()
6270 end if
6271
6272 end subroutine s_weno
6273
6274 !> Enforce monotonicity-preserving bounds on the WENO reconstruction
6275 subroutine s_preserve_monotonicity(v_rs_ws, vL_rs_vf, vR_rs_vf, weno_dir)
6276
6277 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(in) :: v_rs_ws
6278 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vL_rs_vf, vR_rs_vf
6279 integer, intent(in) :: weno_dir
6280 integer :: i, j, k, l
6281 real(wp), dimension(-1:1) :: d !< Curvature measures at the zone centers
6282 real(wp) :: d_MD, d_LC !< Median (md) curvature and large curvature (LC) measures
6283 ! The left and right upper bounds (UL), medians, large curvatures, minima, and maxima of the WENO-reconstructed values of
6284 ! the cell- average variables.
6285 real(wp) :: vL_UL, vR_UL
6286 real(wp) :: vL_MD, vR_MD
6287 real(wp) :: vL_LC, vR_LC
6288 real(wp) :: vL_min, vR_min
6289 real(wp) :: vL_max, vR_max
6290 real(wp), parameter :: alpha = 2._wp !< Max CFL stability parameter (CFL < 1/(1+alpha))
6291 real(wp), parameter :: beta = 4._wp/3._wp !< Local curvature freedom parameter
6292 real(wp), parameter :: alpha_mp = 2._wp
6293 real(wp), parameter :: beta_mp = 4._wp/3._wp
6294 real(wp) :: vp0, vp1, vp2, vm1, vm2
6295
6296# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6297# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6298# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6299 if (weno_dir == 1) then
6300# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6301
6302# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6303
6304# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6305#if defined(MFC_OpenACC)
6306# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6307!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6308# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6309#elif defined(MFC_OpenMP)
6310# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6311
6312# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6313
6314# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6315
6316# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6317!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6318# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6319!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6320# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6321#endif
6322# 1499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6323 do l = is3_weno%beg, is3_weno%end
6324# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6325 do k = is2_weno%beg, is2_weno%end
6326# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6327 do j = is1_weno%beg, is1_weno%end
6328# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6329 do i = 1, v_size
6330 ! Second-order undivided differences for curvature estimation
6331
6332 vp0 = v_rs_ws(j, k, l, i)
6333# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6334 vm1 = v_rs_ws(j - 1, k, l, i)
6335# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6336 vm2 = v_rs_ws(j - 2, k, l, i)
6337# 1508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6338 vp1 = v_rs_ws(j + 1, k, l, i)
6339# 1509 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6340 vp2 = v_rs_ws(j + 2, k, l, i)
6341# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6342
6343 d(-1) = vp0 + vm2 - vm1*2._wp
6344 d(0) = vp1 + vm1 - vp0*2._wp
6345 d(1) = vp2 + vp0 - vp1*2._wp
6346
6347 ! Median function for oscillation detection
6348 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6349 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6350 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6351 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6352
6353 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6354 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6355 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6356
6357 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6358
6359 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6360
6361 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6362
6363 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6364
6365 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6366
6367 vl_rs_vf(j, k, l, i) = vl_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vl_min - vl_rs_vf(j, k, l, &
6368 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6369 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6370 ! END: Left Monotonicity Preserving Bound
6371
6372 ! Right Monotonicity Preserving Bound
6373 d(-1) = vp0 + vm2 - vm1*2._wp
6374 d(0) = vp1 + vm1 - vp0*2._wp
6375 d(1) = vp2 + vp0 - vp1*2._wp
6376
6377 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6378 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6379 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6380
6381 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6382 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6383 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6384 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6385
6386 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6387
6388 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6389
6390 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6391
6392 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6393
6394 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6395
6396 vr_rs_vf(j, k, l, i) = vr_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vr_min - vr_rs_vf(j, k, l, &
6397 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6398 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6399 ! END: Right Monotonicity Preserving Bound
6400 end do
6401 end do
6402 end do
6403 end do
6404
6405# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6406#if defined(MFC_OpenACC)
6407# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6408!$acc end parallel loop
6409# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6410#elif defined(MFC_OpenMP)
6411# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6412
6413# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6414!$omp end target teams loop
6415# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6416#endif
6417# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6418 end if
6419# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6420# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6421# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6422 if (weno_dir == 2) then
6423# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6424
6425# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6426
6427# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6428#if defined(MFC_OpenACC)
6429# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6430!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6431# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6432#elif defined(MFC_OpenMP)
6433# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6434
6435# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6436
6437# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6438
6439# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6440!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6441# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6442!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6443# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6444#endif
6445# 1499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6446 do l = is3_weno%beg, is3_weno%end
6447# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6448 do k = is1_weno%beg, is1_weno%end
6449# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6450 do j = is2_weno%beg, is2_weno%end
6451# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6452 do i = 1, v_size
6453 ! Second-order undivided differences for curvature estimation
6454
6455 vp0 = v_rs_ws(j, k, l, i)
6456# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6457 vm1 = v_rs_ws(j, k - 1, l, i)
6458# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6459 vm2 = v_rs_ws(j, k - 2, l, i)
6460# 1508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6461 vp1 = v_rs_ws(j, k + 1, l, i)
6462# 1509 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6463 vp2 = v_rs_ws(j, k + 2, l, i)
6464# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6465
6466 d(-1) = vp0 + vm2 - vm1*2._wp
6467 d(0) = vp1 + vm1 - vp0*2._wp
6468 d(1) = vp2 + vp0 - vp1*2._wp
6469
6470 ! Median function for oscillation detection
6471 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6472 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6473 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6474 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6475
6476 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6477 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6478 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6479
6480 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6481
6482 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6483
6484 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6485
6486 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6487
6488 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6489
6490 vl_rs_vf(j, k, l, i) = vl_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vl_min - vl_rs_vf(j, k, l, &
6491 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6492 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6493 ! END: Left Monotonicity Preserving Bound
6494
6495 ! Right Monotonicity Preserving Bound
6496 d(-1) = vp0 + vm2 - vm1*2._wp
6497 d(0) = vp1 + vm1 - vp0*2._wp
6498 d(1) = vp2 + vp0 - vp1*2._wp
6499
6500 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6501 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6502 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6503
6504 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6505 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6506 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6507 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6508
6509 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6510
6511 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6512
6513 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6514
6515 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6516
6517 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6518
6519 vr_rs_vf(j, k, l, i) = vr_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vr_min - vr_rs_vf(j, k, l, &
6520 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6521 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6522 ! END: Right Monotonicity Preserving Bound
6523 end do
6524 end do
6525 end do
6526 end do
6527
6528# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6529#if defined(MFC_OpenACC)
6530# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6531!$acc end parallel loop
6532# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6533#elif defined(MFC_OpenMP)
6534# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6535
6536# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6537!$omp end target teams loop
6538# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6539#endif
6540# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6541 end if
6542# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6543# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6544# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6545 if (weno_dir == 3) then
6546# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6547
6548# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6549
6550# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6551#if defined(MFC_OpenACC)
6552# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6553!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6554# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6555#elif defined(MFC_OpenMP)
6556# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6557
6558# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6559
6560# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6561
6562# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6563!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6564# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6565!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6566# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6567#endif
6568# 1499 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6569 do l = is1_weno%beg, is1_weno%end
6570# 1500 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6571 do k = is2_weno%beg, is2_weno%end
6572# 1501 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6573 do j = is3_weno%beg, is3_weno%end
6574# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6575 do i = 1, v_size
6576 ! Second-order undivided differences for curvature estimation
6577
6578 vp0 = v_rs_ws(j, k, l, i)
6579# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6580 vm1 = v_rs_ws(j, k, l - 1, i)
6581# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6582 vm2 = v_rs_ws(j, k, l - 2, i)
6583# 1508 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6584 vp1 = v_rs_ws(j, k, l + 1, i)
6585# 1509 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6586 vp2 = v_rs_ws(j, k, l + 2, i)
6587# 1510 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6588
6589 d(-1) = vp0 + vm2 - vm1*2._wp
6590 d(0) = vp1 + vm1 - vp0*2._wp
6591 d(1) = vp2 + vp0 - vp1*2._wp
6592
6593 ! Median function for oscillation detection
6594 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6595 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6596 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6597 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6598
6599 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6600 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6601 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6602
6603 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6604
6605 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6606
6607 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6608
6609 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6610
6611 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6612
6613 vl_rs_vf(j, k, l, i) = vl_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vl_min - vl_rs_vf(j, k, l, &
6614 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6615 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6616 ! END: Left Monotonicity Preserving Bound
6617
6618 ! Right Monotonicity Preserving Bound
6619 d(-1) = vp0 + vm2 - vm1*2._wp
6620 d(0) = vp1 + vm1 - vp0*2._wp
6621 d(1) = vp2 + vp0 - vp1*2._wp
6622
6623 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6624 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6625 & d(1))))*min(abs(4._wp*d(0) - d(1)), abs(d(0)), abs(4._wp*d(1) - d(0)), abs(d(1)))/8._wp
6626
6627 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6628 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6629 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6630 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6631
6632 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6633
6634 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6635
6636 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6637
6638 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6639
6640 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6641
6642 vr_rs_vf(j, k, l, i) = vr_rs_vf(j, k, l, i) + (sign(5.e-1_wp, vr_min - vr_rs_vf(j, k, l, &
6643 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6644 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6645 ! END: Right Monotonicity Preserving Bound
6646 end do
6647 end do
6648 end do
6649 end do
6650
6651# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6652#if defined(MFC_OpenACC)
6653# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6654!$acc end parallel loop
6655# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6656#elif defined(MFC_OpenMP)
6657# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6658
6659# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6660!$omp end target teams loop
6661# 1572 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6662#endif
6663# 1573 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6664 end if
6665# 1575 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6666
6667 end subroutine s_preserve_monotonicity
6668
6669 !> Module deallocation and/or disassociation procedures
6670 impure subroutine s_finalize_weno_module()
6671
6672 if (weno_order == 1) return
6673
6674 ! Deallocating the WENO-stencil of the WENO-reconstructed variables
6675
6676 if (mp_weno .or. int_comp > 0) then
6677#ifdef MFC_DEBUG
6678# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6679 block
6680# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6681 use iso_fortran_env, only: output_unit
6682# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6683
6684# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6685 print *, 'm_weno.fpp:1586: ', '@:DEALLOCATE(v_rs_weno)'
6686# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6687
6688# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6689 call flush (output_unit)
6690# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6691 end block
6692# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6693#endif
6694# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6695
6696# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6697#if defined(MFC_OpenACC)
6698# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6699!$acc exit data delete(v_rs_weno)
6700# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6701#elif defined(MFC_OpenMP)
6702# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6703!$omp target exit data map(release:v_rs_weno)
6704# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6705#endif
6706# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6707 deallocate (v_rs_weno)
6708# 1587 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6709 end if
6710
6711 ! Deallocating WENO coefficients in x-direction
6712#ifdef MFC_DEBUG
6713# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6714 block
6715# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6716 use iso_fortran_env, only: output_unit
6717# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6718
6719# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6720 print *, 'm_weno.fpp:1590: ', '@:DEALLOCATE(poly_coef_cbL_x, poly_coef_cbR_x)'
6721# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6722
6723# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6724 call flush (output_unit)
6725# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6726 end block
6727# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6728#endif
6729# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6730
6731# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6732#if defined(MFC_OpenACC)
6733# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6734!$acc exit data delete(poly_coef_cbL_x, poly_coef_cbR_x)
6735# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6736#elif defined(MFC_OpenMP)
6737# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6738!$omp target exit data map(release:poly_coef_cbL_x, poly_coef_cbR_x)
6739# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6740#endif
6741# 1590 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6742 deallocate (poly_coef_cbl_x, poly_coef_cbr_x)
6743# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6744#ifdef MFC_DEBUG
6745# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6746 block
6747# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6748 use iso_fortran_env, only: output_unit
6749# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6750
6751# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6752 print *, 'm_weno.fpp:1591: ', '@:DEALLOCATE(d_cbL_x, d_cbR_x)'
6753# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6754
6755# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6756 call flush (output_unit)
6757# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6758 end block
6759# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6760#endif
6761# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6762
6763# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6764#if defined(MFC_OpenACC)
6765# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6766!$acc exit data delete(d_cbL_x, d_cbR_x)
6767# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6768#elif defined(MFC_OpenMP)
6769# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6770!$omp target exit data map(release:d_cbL_x, d_cbR_x)
6771# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6772#endif
6773# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6774 deallocate (d_cbl_x, d_cbr_x)
6775# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6776#ifdef MFC_DEBUG
6777# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6778 block
6779# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6780 use iso_fortran_env, only: output_unit
6781# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6782
6783# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6784 print *, 'm_weno.fpp:1592: ', '@:DEALLOCATE(beta_coef_x)'
6785# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6786
6787# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6788 call flush (output_unit)
6789# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6790 end block
6791# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6792#endif
6793# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6794
6795# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6796#if defined(MFC_OpenACC)
6797# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6798!$acc exit data delete(beta_coef_x)
6799# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6800#elif defined(MFC_OpenMP)
6801# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6802!$omp target exit data map(release:beta_coef_x)
6803# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6804#endif
6805# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6806 deallocate (beta_coef_x)
6807# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6808
6809 ! Deallocating WENO coefficients in y-direction
6810 if (n == 0) return
6811
6812#ifdef MFC_DEBUG
6813# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6814 block
6815# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6816 use iso_fortran_env, only: output_unit
6817# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6818
6819# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6820 print *, 'm_weno.fpp:1597: ', '@:DEALLOCATE(poly_coef_cbL_y, poly_coef_cbR_y)'
6821# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6822
6823# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6824 call flush (output_unit)
6825# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6826 end block
6827# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6828#endif
6829# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6830
6831# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6832#if defined(MFC_OpenACC)
6833# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6834!$acc exit data delete(poly_coef_cbL_y, poly_coef_cbR_y)
6835# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6836#elif defined(MFC_OpenMP)
6837# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6838!$omp target exit data map(release:poly_coef_cbL_y, poly_coef_cbR_y)
6839# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6840#endif
6841# 1597 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6842 deallocate (poly_coef_cbl_y, poly_coef_cbr_y)
6843# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6844#ifdef MFC_DEBUG
6845# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6846 block
6847# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6848 use iso_fortran_env, only: output_unit
6849# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6850
6851# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6852 print *, 'm_weno.fpp:1598: ', '@:DEALLOCATE(d_cbL_y, d_cbR_y)'
6853# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6854
6855# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6856 call flush (output_unit)
6857# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6858 end block
6859# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6860#endif
6861# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6862
6863# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6864#if defined(MFC_OpenACC)
6865# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6866!$acc exit data delete(d_cbL_y, d_cbR_y)
6867# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6868#elif defined(MFC_OpenMP)
6869# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6870!$omp target exit data map(release:d_cbL_y, d_cbR_y)
6871# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6872#endif
6873# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6874 deallocate (d_cbl_y, d_cbr_y)
6875# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6876#ifdef MFC_DEBUG
6877# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6878 block
6879# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6880 use iso_fortran_env, only: output_unit
6881# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6882
6883# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6884 print *, 'm_weno.fpp:1599: ', '@:DEALLOCATE(beta_coef_y)'
6885# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6886
6887# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6888 call flush (output_unit)
6889# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6890 end block
6891# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6892#endif
6893# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6894
6895# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6896#if defined(MFC_OpenACC)
6897# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6898!$acc exit data delete(beta_coef_y)
6899# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6900#elif defined(MFC_OpenMP)
6901# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6902!$omp target exit data map(release:beta_coef_y)
6903# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6904#endif
6905# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6906 deallocate (beta_coef_y)
6907# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6908
6909 ! Deallocating WENO coefficients in z-direction
6910 if (p == 0) return
6911
6912#ifdef MFC_DEBUG
6913# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6914 block
6915# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6916 use iso_fortran_env, only: output_unit
6917# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6918
6919# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6920 print *, 'm_weno.fpp:1604: ', '@:DEALLOCATE(poly_coef_cbL_z, poly_coef_cbR_z)'
6921# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6922
6923# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6924 call flush (output_unit)
6925# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6926 end block
6927# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6928#endif
6929# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6930
6931# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6932#if defined(MFC_OpenACC)
6933# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6934!$acc exit data delete(poly_coef_cbL_z, poly_coef_cbR_z)
6935# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6936#elif defined(MFC_OpenMP)
6937# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6938!$omp target exit data map(release:poly_coef_cbL_z, poly_coef_cbR_z)
6939# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6940#endif
6941# 1604 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6942 deallocate (poly_coef_cbl_z, poly_coef_cbr_z)
6943# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6944#ifdef MFC_DEBUG
6945# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6946 block
6947# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6948 use iso_fortran_env, only: output_unit
6949# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6950
6951# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6952 print *, 'm_weno.fpp:1605: ', '@:DEALLOCATE(d_cbL_z, d_cbR_z)'
6953# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6954
6955# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6956 call flush (output_unit)
6957# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6958 end block
6959# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6960#endif
6961# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6962
6963# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6964#if defined(MFC_OpenACC)
6965# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6966!$acc exit data delete(d_cbL_z, d_cbR_z)
6967# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6968#elif defined(MFC_OpenMP)
6969# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6970!$omp target exit data map(release:d_cbL_z, d_cbR_z)
6971# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6972#endif
6973# 1605 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6974 deallocate (d_cbl_z, d_cbr_z)
6975# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6976#ifdef MFC_DEBUG
6977# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6978 block
6979# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6980 use iso_fortran_env, only: output_unit
6981# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6982
6983# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6984 print *, 'm_weno.fpp:1606: ', '@:DEALLOCATE(beta_coef_z)'
6985# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6986
6987# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6988 call flush (output_unit)
6989# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6990 end block
6991# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6992#endif
6993# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6994
6995# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6996#if defined(MFC_OpenACC)
6997# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6998!$acc exit data delete(beta_coef_z)
6999# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
7000#elif defined(MFC_OpenMP)
7001# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
7002!$omp target exit data map(release:beta_coef_z)
7003# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
7004#endif
7005# 1606 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
7006 deallocate (beta_coef_z)
7007# 1607 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
7008
7009 end subroutine s_finalize_weno_module
7010
7011end module m_weno
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer buff_size
Number of ghost cells for boundary condition storage.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
Definition m_nvtx.f90:6
THINC and MTHINC interface compression for volume fraction sharpening. THINC (int_comp=1): 1D directi...
subroutine, public s_thinc_compression(v_rs_ws, vl_rs_vf_x, vr_rs_vf_x, recon_dir, is1_d, is2_d, is3_d)
Applies THINC (int_comp=1) or MTHINC (int_comp=2) interface compression to sharpen volume-fraction an...
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
WENO/WENO-Z/TENO reconstructions with optional monotonicity-preserving bounds and mapped weights.
subroutine s_preserve_monotonicity(v_rs_ws, vl_rs_vf, vr_rs_vf, weno_dir)
Enforce monotonicity-preserving bounds on the WENO reconstruction.
type(int_bounds_info) is2_weno
real(wp), dimension(:,:), allocatable, target d_cbl_z
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbl_x
impure subroutine, public s_initialize_weno_module
Initialize the WENO module.
type(int_bounds_info) is3_weno
real(wp), dimension(:,:), allocatable, target d_cbl_y
real(wp), dimension(:,:,:), allocatable, target beta_coef_y
subroutine, public s_pack_weno_input_arr(v_vf)
real(wp), dimension(:,:), allocatable, target d_cbr_y
real(wp), dimension(:,:,:), allocatable, target beta_coef_x
real(wp), dimension(:,:,:), allocatable, target beta_coef_z
real(wp), dimension(:,:), allocatable, target d_cbr_x
real(wp), dimension(:,:), allocatable, target d_cbr_z
logical, dimension(3) uniform_grid
True if grid spacing is uniform in each direction.
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbl_z
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbr_x
integer v_size
Number of WENO-reconstructed cell-average variables.
real(wp), dimension(:,:), allocatable, target d_cbl_x
type(int_bounds_info) is1_weno
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbr_y
real(wp), dimension(:,:,:,:), allocatable v_rs_weno
subroutine, public s_weno(v_vf, vl_rs_vf_x, vr_rs_vf_x, weno_dir, is1_weno_d, is2_weno_d, is3_weno_d)
Perform WENO reconstruction of left and right cell-boundary values from cell-averaged variables.
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbl_y
subroutine s_compute_weno_coefficients(weno_dir, is)
Compute WENO polynomial coefficients, ideal weights, and smoothness indicators for a given direction.
real(wp), dimension(:,:,:), allocatable, target poly_coef_cbr_z
impure subroutine, public s_finalize_weno_module()
Module deallocation and/or disassociation procedures.
Integer bounds for variables.