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 reconstruction 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
478 ! END: WENO Coefficients
479
480 integer :: v_size !< Number of WENO-reconstructed cell-average variables
481
482# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
483#if defined(MFC_OpenACC)
484# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
485!$acc declare create(v_size)
486# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
487#elif defined(MFC_OpenMP)
488# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
489!$omp declare target (v_size)
490# 68 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
491#endif
492# 69 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
493
494 logical :: uniform_grid(3) !< True if grid spacing is uniform in each direction
495
496# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
497#if defined(MFC_OpenACC)
498# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
499!$acc declare create(uniform_grid)
500# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
501#elif defined(MFC_OpenMP)
502# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
503!$omp declare target (uniform_grid)
504# 71 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
505#endif
506# 72 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
507
508 !> @name Indical bounds in the s1-, s2- and s3-directions
509 !> @{
511#ifndef __NVCOMPILER_GPU_UNIFIED_MEM
512
513# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
514#if defined(MFC_OpenACC)
515# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
516!$acc declare create(is1_weno, is2_weno, is3_weno)
517# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
518#elif defined(MFC_OpenMP)
519# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
520!$omp declare target (is1_weno, is2_weno, is3_weno)
521# 77 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
522#endif
523# 78 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
524#endif
525 !
526 !> @}
527
528contains
529
530 !> Initialize the WENO module
531 impure subroutine s_initialize_weno_module
532
533 if (weno_order == 1) return
534
535 ! Allocating/Computing WENO Coefficients in x-direction
536 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
537 if (n == 0) then
538 is2_weno%beg = 0
539 else
540 is2_weno%beg = -buff_size
541 end if
542
543 is2_weno%end = n - is2_weno%beg
544
545 if (p == 0) then
546 is3_weno%beg = 0
547 else
548 is3_weno%beg = -buff_size
549 end if
550
551 is3_weno%end = p - is3_weno%beg
552
553#ifdef MFC_DEBUG
554# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
555 block
556# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
557 use iso_fortran_env, only: output_unit
558# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
559
560# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
561 print *, 'm_weno.fpp:107: ', '@:ALLOCATE(poly_coef_cbL_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
562# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
563
564# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
565 call flush (output_unit)
566# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
567 end block
568# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
569#endif
570# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
571 allocate (poly_coef_cbl_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
572# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
573
574# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
575
576# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
577#if defined(MFC_OpenACC)
578# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
579!$acc enter data create(poly_coef_cbL_x)
580# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
581#elif defined(MFC_OpenMP)
582# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
583!$omp target enter data map(always,alloc:poly_coef_cbL_x)
584# 107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
585#endif
586# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
587#ifdef MFC_DEBUG
588# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
589 block
590# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
591 use iso_fortran_env, only: output_unit
592# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
593
594# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
595 print *, 'm_weno.fpp:108: ', '@:ALLOCATE(poly_coef_cbR_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
596# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
597
598# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
599 call flush (output_unit)
600# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
601 end block
602# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
603#endif
604# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
605 allocate (poly_coef_cbr_x(is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
606# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
607
608# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
609
610# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
611#if defined(MFC_OpenACC)
612# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
613!$acc enter data create(poly_coef_cbR_x)
614# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
615#elif defined(MFC_OpenMP)
616# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
617!$omp target enter data map(always,alloc:poly_coef_cbR_x)
618# 108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
619#endif
620# 109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
621
622#ifdef MFC_DEBUG
623# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
624 block
625# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
626 use iso_fortran_env, only: output_unit
627# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
628
629# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
630 print *, 'm_weno.fpp:110: ', '@:ALLOCATE(d_cbL_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))'
631# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
632
633# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
634 call flush (output_unit)
635# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
636 end block
637# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
638#endif
639# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
640 allocate (d_cbl_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))
641# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
642
643# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
644
645# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
646#if defined(MFC_OpenACC)
647# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
648!$acc enter data create(d_cbL_x)
649# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
650#elif defined(MFC_OpenMP)
651# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
652!$omp target enter data map(always,alloc:d_cbL_x)
653# 110 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
654#endif
655# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
656#ifdef MFC_DEBUG
657# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
658 block
659# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
660 use iso_fortran_env, only: output_unit
661# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
662
663# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
664 print *, 'm_weno.fpp:111: ', '@:ALLOCATE(d_cbR_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))'
665# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
666
667# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
668 call flush (output_unit)
669# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
670 end block
671# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
672#endif
673# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
674 allocate (d_cbr_x(0:weno_num_stencils, is1_weno%beg + weno_polyn:is1_weno%end - weno_polyn))
675# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
676
677# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
678
679# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
680#if defined(MFC_OpenACC)
681# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
682!$acc enter data create(d_cbR_x)
683# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
684#elif defined(MFC_OpenMP)
685# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
686!$omp target enter data map(always,alloc:d_cbR_x)
687# 111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
688#endif
689# 112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
690
691#ifdef MFC_DEBUG
692# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
693 block
694# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
695 use iso_fortran_env, only: output_unit
696# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
697
698# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
699 print *, 'm_weno.fpp:113: ', '@: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))'
700# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
701
702# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
703 call flush (output_unit)
704# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
705 end block
706# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
707#endif
708# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
709 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))
710# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
711
712# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
713
714# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
715#if defined(MFC_OpenACC)
716# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
717!$acc enter data create(beta_coef_x)
718# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
719#elif defined(MFC_OpenMP)
720# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
721!$omp target enter data map(always,alloc:beta_coef_x)
722# 113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
723#endif
724# 115 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
725 ! 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
726 ! differences (dvd) not the values themselves
727
729
730#ifdef MFC_DEBUG
731# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
732 block
733# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
734 use iso_fortran_env, only: output_unit
735# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
736
737# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
738 print *, 'm_weno.fpp:120: ', '@: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))'
739# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
740
741# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
742 call flush (output_unit)
743# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
744 end block
745# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
746#endif
747# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
748 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))
749# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
750
751# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
752
753# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
754#if defined(MFC_OpenACC)
755# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
756!$acc enter data create(v_rs_weno)
757# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
758#elif defined(MFC_OpenMP)
759# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
760!$omp target enter data map(always,alloc:v_rs_weno)
761# 120 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
762#endif
763# 121 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
764
765 ! Allocating/Computing WENO Coefficients in y-direction
766 if (n == 0) return
767
768 is2_weno%beg = -buff_size; is2_weno%end = n - is2_weno%beg
769 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
770
771 if (p == 0) then
772 is3_weno%beg = 0
773 else
774 is3_weno%beg = -buff_size
775 end if
776
777 is3_weno%end = p - is3_weno%beg
778
779#ifdef MFC_DEBUG
780# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
781 block
782# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
783 use iso_fortran_env, only: output_unit
784# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
785
786# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
787 print *, 'm_weno.fpp:136: ', '@:ALLOCATE(poly_coef_cbL_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
788# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
789
790# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
791 call flush (output_unit)
792# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
793 end block
794# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
795#endif
796# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
797 allocate (poly_coef_cbl_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
798# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
799
800# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
801
802# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
803#if defined(MFC_OpenACC)
804# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
805!$acc enter data create(poly_coef_cbL_y)
806# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
807#elif defined(MFC_OpenMP)
808# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
809!$omp target enter data map(always,alloc:poly_coef_cbL_y)
810# 136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
811#endif
812# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
813#ifdef MFC_DEBUG
814# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
815 block
816# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
817 use iso_fortran_env, only: output_unit
818# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
819
820# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
821 print *, 'm_weno.fpp:137: ', '@:ALLOCATE(poly_coef_cbR_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
822# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
823
824# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
825 call flush (output_unit)
826# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
827 end block
828# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
829#endif
830# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
831 allocate (poly_coef_cbr_y(is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
832# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
833
834# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
835
836# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
837#if defined(MFC_OpenACC)
838# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
839!$acc enter data create(poly_coef_cbR_y)
840# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
841#elif defined(MFC_OpenMP)
842# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
843!$omp target enter data map(always,alloc:poly_coef_cbR_y)
844# 137 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
845#endif
846# 138 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
847
848#ifdef MFC_DEBUG
849# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
850 block
851# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
852 use iso_fortran_env, only: output_unit
853# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
854
855# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
856 print *, 'm_weno.fpp:139: ', '@:ALLOCATE(d_cbL_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))'
857# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
858
859# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
860 call flush (output_unit)
861# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
862 end block
863# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
864#endif
865# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
866 allocate (d_cbl_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))
867# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
868
869# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
870
871# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
872#if defined(MFC_OpenACC)
873# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
874!$acc enter data create(d_cbL_y)
875# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
876#elif defined(MFC_OpenMP)
877# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
878!$omp target enter data map(always,alloc:d_cbL_y)
879# 139 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
880#endif
881# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
882#ifdef MFC_DEBUG
883# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
884 block
885# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
886 use iso_fortran_env, only: output_unit
887# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
888
889# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
890 print *, 'm_weno.fpp:140: ', '@:ALLOCATE(d_cbR_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))'
891# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
892
893# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
894 call flush (output_unit)
895# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
896 end block
897# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
898#endif
899# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
900 allocate (d_cbr_y(0:weno_num_stencils, is2_weno%beg + weno_polyn:is2_weno%end - weno_polyn))
901# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
902
903# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
904
905# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
906#if defined(MFC_OpenACC)
907# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
908!$acc enter data create(d_cbR_y)
909# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
910#elif defined(MFC_OpenMP)
911# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
912!$omp target enter data map(always,alloc:d_cbR_y)
913# 140 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
914#endif
915# 141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
916
917#ifdef MFC_DEBUG
918# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
919 block
920# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
921 use iso_fortran_env, only: output_unit
922# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
923
924# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
925 print *, 'm_weno.fpp:142: ', '@: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))'
926# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
927
928# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
929 call flush (output_unit)
930# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
931 end block
932# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
933#endif
934# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
935 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))
936# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
937
938# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
939
940# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
941#if defined(MFC_OpenACC)
942# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
943!$acc enter data create(beta_coef_y)
944# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
945#elif defined(MFC_OpenMP)
946# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
947!$omp target enter data map(always,alloc:beta_coef_y)
948# 142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
949#endif
950# 144 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
951
953
954 ! Allocating/Computing WENO Coefficients in z-direction
955 if (p == 0) return
956
957 is2_weno%beg = -buff_size; is2_weno%end = n - is2_weno%beg
958 is1_weno%beg = -buff_size; is1_weno%end = m - is1_weno%beg
959 is3_weno%beg = -buff_size; is3_weno%end = p - is3_weno%beg
960
961#ifdef MFC_DEBUG
962# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
963 block
964# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
965 use iso_fortran_env, only: output_unit
966# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
967
968# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
969 print *, 'm_weno.fpp:154: ', '@:ALLOCATE(poly_coef_cbL_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
970# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
971
972# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
973 call flush (output_unit)
974# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
975 end block
976# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
977#endif
978# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
979 allocate (poly_coef_cbl_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
980# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
981
982# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
983
984# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
985#if defined(MFC_OpenACC)
986# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
987!$acc enter data create(poly_coef_cbL_z)
988# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
989#elif defined(MFC_OpenMP)
990# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
991!$omp target enter data map(always,alloc:poly_coef_cbL_z)
992# 154 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
993#endif
994# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
995#ifdef MFC_DEBUG
996# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
997 block
998# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
999 use iso_fortran_env, only: output_unit
1000# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1001
1002# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1003 print *, 'm_weno.fpp:155: ', '@:ALLOCATE(poly_coef_cbR_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))'
1004# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1005
1006# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1007 call flush (output_unit)
1008# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1009 end block
1010# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1011#endif
1012# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1013 allocate (poly_coef_cbr_z(is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn, 0:weno_polyn, 0:weno_polyn - 1))
1014# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1015
1016# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1017
1018# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1019#if defined(MFC_OpenACC)
1020# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1021!$acc enter data create(poly_coef_cbR_z)
1022# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1023#elif defined(MFC_OpenMP)
1024# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1025!$omp target enter data map(always,alloc:poly_coef_cbR_z)
1026# 155 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1027#endif
1028# 156 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1029
1030#ifdef MFC_DEBUG
1031# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1032 block
1033# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1034 use iso_fortran_env, only: output_unit
1035# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1036
1037# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1038 print *, 'm_weno.fpp:157: ', '@:ALLOCATE(d_cbL_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))'
1039# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1040
1041# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1042 call flush (output_unit)
1043# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1044 end block
1045# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1046#endif
1047# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1048 allocate (d_cbl_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))
1049# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1050
1051# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1052
1053# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1054#if defined(MFC_OpenACC)
1055# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1056!$acc enter data create(d_cbL_z)
1057# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1058#elif defined(MFC_OpenMP)
1059# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1060!$omp target enter data map(always,alloc:d_cbL_z)
1061# 157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1062#endif
1063# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1064#ifdef MFC_DEBUG
1065# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1066 block
1067# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1068 use iso_fortran_env, only: output_unit
1069# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1070
1071# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1072 print *, 'm_weno.fpp:158: ', '@:ALLOCATE(d_cbR_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))'
1073# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1074
1075# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1076 call flush (output_unit)
1077# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1078 end block
1079# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1080#endif
1081# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1082 allocate (d_cbr_z(0:weno_num_stencils, is3_weno%beg + weno_polyn:is3_weno%end - weno_polyn))
1083# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1084
1085# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1086
1087# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1088#if defined(MFC_OpenACC)
1089# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1090!$acc enter data create(d_cbR_z)
1091# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1092#elif defined(MFC_OpenMP)
1093# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1094!$omp target enter data map(always,alloc:d_cbR_z)
1095# 158 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1096#endif
1097# 159 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1098
1099#ifdef MFC_DEBUG
1100# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1101 block
1102# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1103 use iso_fortran_env, only: output_unit
1104# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1105
1106# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1107 print *, 'm_weno.fpp:160: ', '@: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))'
1108# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1109
1110# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1111 call flush (output_unit)
1112# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1113 end block
1114# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1115#endif
1116# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1117 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))
1118# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1119
1120# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1121
1122# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1123#if defined(MFC_OpenACC)
1124# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1125!$acc enter data create(beta_coef_z)
1126# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1127#elif defined(MFC_OpenMP)
1128# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1129!$omp target enter data map(always,alloc:beta_coef_z)
1130# 160 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1131#endif
1132# 162 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1133
1135
1136 end subroutine s_initialize_weno_module
1137
1138 !> Compute WENO polynomial coefficients, ideal weights, and smoothness indicators for a given direction
1139 subroutine s_compute_weno_coefficients(weno_dir, is)
1140
1141 ! Compute WENO coefficients for a given coordinate direction. Shu (1997)
1142 integer, intent(in) :: weno_dir
1143 type(int_bounds_info), intent(in) :: is
1144 integer :: s
1145 real(wp), pointer, dimension(:) :: s_cb => null() !< Cell-boundary locations in the s-direction
1146 type(int_bounds_info) :: bc_s !< Boundary conditions (BC) in the s-direction
1147 integer :: i !< Generic loop iterator
1148 real(wp) :: w(1:8) !< Intermediate var for ideal weights: s_cb across overall stencil
1149 real(wp) :: y(1:4) !< Intermediate var for poly & beta: diff(s_cb) across sub-stencil
1150 real(wp) :: h0 !< Reference spacing for uniform-grid detection
1151
1152 ! Determine cell count, boundary locations, and BCs for selected WENO direction
1153
1154 if (weno_dir == 1) then
1155 s = m; s_cb => x_cb; bc_s = bc_x
1156 else if (weno_dir == 2) then
1157 s = n; s_cb => y_cb; bc_s = bc_y
1158 else
1159 s = p; s_cb => z_cb; bc_s = bc_z
1160 end if
1161
1162# 192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1163 ! Computing WENO3 Coefficients
1164 if (weno_dir == 1) then
1165# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1166 if (weno_order == 3) then
1167 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1168 ! Polynomial reconstruction coefficients
1169 poly_coef_cbr_x(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
1170# 198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1171 poly_coef_cbr_x(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
1172# 199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1173
1174 poly_coef_cbl_x(i + 1, 0, 0) = -poly_coef_cbr_x(i + 1, 0, 0)
1175# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1176 poly_coef_cbl_x(i + 1, 1, 0) = -poly_coef_cbr_x(i + 1, 1, 0)
1177# 202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1178
1179 ! Ideal (linear) weights
1180 d_cbr_x(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
1181# 205 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1182 d_cbl_x(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
1183# 206 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1184
1185 d_cbr_x(1, i + 1) = 1._wp - d_cbr_x(0, i + 1)
1186# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1187 d_cbl_x(1, i + 1) = 1._wp - d_cbl_x(0, i + 1)
1188# 209 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1189
1190 ! Smoothness indicator coefficients
1191 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
1192# 212 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1193 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
1194# 213 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1195 end do
1196
1197 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1198 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1199 if (null_weights) then
1200 if (bc_s%beg == bc_riemann_extrap) then
1201 d_cbr_x(1, 0) = 0._wp; d_cbr_x(0, 0) = 1._wp
1202# 220 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1203 d_cbl_x(1, 0) = 0._wp; d_cbl_x(0, 0) = 1._wp
1204# 221 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1205 end if
1206
1207 if (bc_s%end == bc_riemann_extrap) then
1208 d_cbr_x(0, s) = 0._wp; d_cbr_x(1, s) = 1._wp
1209# 225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1210 d_cbl_x(0, s) = 0._wp; d_cbl_x(1, s) = 1._wp
1211# 226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1212 end if
1213 end if
1214 ! END: Computing WENO3 Coefficients
1215
1216 ! Computing WENO5 Coefficients
1217 else if (weno_order == 5) then
1218 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1219 ! Polynomial reconstruction coefficients
1220 poly_coef_cbr_x(i + 1, 0, &
1221# 235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1222 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
1223 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
1224 poly_coef_cbr_x(i + 1, 1, &
1225# 238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1226 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
1227 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
1228 poly_coef_cbr_x(i + 1, 1, &
1229# 241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1230 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
1231 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
1232 poly_coef_cbr_x(i + 1, 2, &
1233# 244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1234 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
1235 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
1236 poly_coef_cbl_x(i + 1, 0, &
1237# 247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1238 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
1239 & *(s_cb(i + 3) - s_cb(i + 1)))
1240 poly_coef_cbl_x(i + 1, 1, &
1241# 250 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1242 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
1243 & + 2))*(s_cb(i) - s_cb(i + 2)))
1244 poly_coef_cbl_x(i + 1, 1, &
1245# 253 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1246 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
1247 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
1248 poly_coef_cbl_x(i + 1, 2, &
1249# 256 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1250 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
1251 & *(s_cb(i - 2) - s_cb(i + 1)))
1252
1253 poly_coef_cbr_x(i + 1, 0, &
1254# 260 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1255 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
1256 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
1257 poly_coef_cbr_x(i + 1, 2, &
1258# 263 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1259 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
1260 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
1261 poly_coef_cbl_x(i + 1, 0, &
1262# 266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1263 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
1264 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
1265 poly_coef_cbl_x(i + 1, 2, &
1266# 269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1267 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
1268 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
1269
1270 ! Ideal (linear) weights
1271 d_cbr_x(0, &
1272# 274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1273 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
1274 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
1275 d_cbr_x(2, &
1276# 277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1277 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
1278 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
1279 d_cbl_x(0, &
1280# 280 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1281 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
1282 & *(s_cb(i + 3) - s_cb(i - 1)))
1283 d_cbl_x(2, &
1284# 283 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1285 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
1286 & *(s_cb(i - 2) - s_cb(i + 3)))
1287
1288 d_cbr_x(1, i + 1) = 1._wp - d_cbr_x(0, i + 1) - d_cbr_x(2, i + 1)
1289# 287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1290 d_cbl_x(1, i + 1) = 1._wp - d_cbl_x(0, i + 1) - d_cbl_x(2, i + 1)
1291# 288 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1292
1293 ! Smoothness indicator coefficients
1294 beta_coef_x(i + 1, 0, &
1295# 291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1296 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1297 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
1298 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
1299
1300 beta_coef_x(i + 1, 0, &
1301# 296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1302 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1303 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
1304 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
1305 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
1306
1307 beta_coef_x(i + 1, 0, &
1308# 302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1309 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1310 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
1311 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
1312 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
1313
1314 beta_coef_x(i + 1, 1, &
1315# 308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1316 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1317 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
1318 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
1319
1320 beta_coef_x(i + 1, 1, &
1321# 313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1322 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
1323 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
1324 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
1325 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
1326
1327 beta_coef_x(i + 1, 1, &
1328# 319 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1329 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1330 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
1331 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
1332
1333 beta_coef_x(i + 1, 2, &
1334# 324 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1335 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1336 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
1337 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
1338 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
1339
1340 beta_coef_x(i + 1, 2, &
1341# 330 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1342 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1343 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
1344 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
1345 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
1346
1347 beta_coef_x(i + 1, 2, &
1348# 336 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1349 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
1350 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
1351 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
1352 end do
1353
1354 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1355 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1356 if (null_weights) then
1357 if (bc_s%beg == bc_riemann_extrap) then
1358 d_cbr_x(1:2,0) = 0._wp; d_cbr_x(0, 0) = 1._wp
1359# 346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1360 d_cbl_x(1:2,0) = 0._wp; d_cbl_x(0, 0) = 1._wp
1361# 347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1362 d_cbr_x(2, 1) = 0._wp; d_cbr_x(:,1) = d_cbr_x(:,1)/sum(d_cbr_x(:,1))
1363# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1364 d_cbl_x(2, 1) = 0._wp; d_cbl_x(:,1) = d_cbl_x(:,1)/sum(d_cbl_x(:,1))
1365# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1366 end if
1367
1368 if (bc_s%end == bc_riemann_extrap) then
1369 d_cbr_x(0, s - 1) = 0._wp; d_cbr_x(:,s - 1) = d_cbr_x(:, &
1370# 353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1371 & s - 1)/sum(d_cbr_x(:,s - 1))
1372# 354 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1373 d_cbl_x(0, s - 1) = 0._wp; d_cbl_x(:,s - 1) = d_cbl_x(:, &
1374# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1375 & s - 1)/sum(d_cbl_x(:,s - 1))
1376# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1377 d_cbr_x(0:1,s) = 0._wp; d_cbr_x(2, s) = 1._wp
1378# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1379 d_cbl_x(0:1,s) = 0._wp; d_cbl_x(2, s) = 1._wp
1380# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1381 end if
1382 end if
1383 else
1384 if (.not. teno) then
1385 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1386 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
1387 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
1388 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
1389 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
1390 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
1391 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
1392 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
1393 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
1394 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
1395 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
1396 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
1397
1398 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
1399 d_cbr_x(0, &
1400# 377 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1401 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
1402 & *(w(1) - w(8)))
1403 d_cbr_x(1, &
1404# 380 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1405 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
1406 & *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) &
1407 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
1408 & *(w(2) - w(8)))
1409 d_cbr_x(2, &
1410# 385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1411 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
1412 & *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) &
1413 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
1414 & *(w(3) - w(8)))
1415 d_cbr_x(3, &
1416# 390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1417 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
1418 & *(w(3) - w(8)))
1419
1420 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
1421 d_cbl_x(0, &
1422# 395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1423 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
1424 & *(w(3) - w(8)))
1425 d_cbl_x(1, &
1426# 398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1427 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
1428 & *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) &
1429 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
1430 & *(w(3) - w(8)))
1431 d_cbl_x(2, &
1432# 403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1433 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
1434 & *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) &
1435 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
1436 & *(w(2) - w(8)))
1437 d_cbl_x(3, &
1438# 408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1439 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
1440 & *(w(1) - w(8)))
1441 ! Note: Left has the reversed order of both points and coefficients compared to the right
1442
1443 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
1444 poly_coef_cbr_x(i + 1, 0, &
1445# 414 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1446 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1447 & + y(2) + y(3) + y(4)))
1448 poly_coef_cbr_x(i + 1, 0, &
1449# 417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1450 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
1451 & + 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) &
1452 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1453 poly_coef_cbr_x(i + 1, 0, &
1454# 421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1455 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1456 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
1457 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
1458
1459 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
1460 poly_coef_cbr_x(i + 1, 1, &
1461# 427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1462 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1463 & + y(2) + y(3) + y(4)))
1464 poly_coef_cbr_x(i + 1, 1, &
1465# 430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1466 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
1467 & + 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) &
1468 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1469 poly_coef_cbr_x(i + 1, 1, &
1470# 434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1471 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1472 & + y(2) + y(3) + y(4)))
1473
1474 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
1475 poly_coef_cbr_x(i + 1, 2, &
1476# 439 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1477 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
1478 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
1479 poly_coef_cbr_x(i + 1, 2, &
1480# 442 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1481 & 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 &
1482 & + 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) &
1483 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1484 poly_coef_cbr_x(i + 1, 2, &
1485# 446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1486 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1487 & + y(2) + y(3) + y(4)))
1488
1489 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
1490 poly_coef_cbr_x(i + 1, 3, &
1491# 451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1492 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
1493 & + 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) &
1494 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1495 poly_coef_cbr_x(i + 1, 3, &
1496# 455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1497 & 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) &
1498 & + 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)) &
1499 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1500 & + y(4)))
1501 poly_coef_cbr_x(i + 1, 3, &
1502# 460 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1503 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
1504 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
1505
1506 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
1507 poly_coef_cbl_x(i + 1, 3, &
1508# 465 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1509 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1510 & + y(2) + y(3) + y(4)))
1511 poly_coef_cbl_x(i + 1, 3, &
1512# 468 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1513 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
1514 & + 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) &
1515 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1516 poly_coef_cbl_x(i + 1, 3, &
1517# 472 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1518 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
1519 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
1520 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
1521
1522 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
1523 poly_coef_cbl_x(i + 1, 2, &
1524# 478 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1525 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
1526 & + y(2) + y(3) + y(4)))
1527 poly_coef_cbl_x(i + 1, 2, &
1528# 481 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1529 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
1530 & + 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) &
1531 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1532 poly_coef_cbl_x(i + 1, 2, &
1533# 485 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1534 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1535 & + y(2) + y(3) + y(4)))
1536
1537 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
1538 poly_coef_cbl_x(i + 1, 1, &
1539# 490 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1540 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
1541 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
1542 poly_coef_cbl_x(i + 1, 1, &
1543# 493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1544 & 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 &
1545 & + 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) &
1546 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1547 poly_coef_cbl_x(i + 1, 1, &
1548# 497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1549 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
1550 & + y(2) + y(3) + y(4)))
1551
1552 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
1553 poly_coef_cbl_x(i + 1, 0, &
1554# 502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1555 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
1556 & + 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) &
1557 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
1558 poly_coef_cbl_x(i + 1, 0, &
1559# 506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1560 & 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) &
1561 & + 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)) &
1562 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1563 & + y(4)))
1564 poly_coef_cbl_x(i + 1, 0, &
1565# 511 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1566 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
1567 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
1568
1569 poly_coef_cbl_x(i + 1,:,:) = -poly_coef_cbl_x(i + 1,:,:)
1570# 515 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1571 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
1572
1573 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
1574 beta_coef_x(i + 1, 3, &
1575# 519 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1576 & 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) &
1577 & + 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) &
1578 & **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 &
1579 & + 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) &
1580 & *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) &
1581 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
1582 & + 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) &
1583 & *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) &
1584 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
1585 & **2*(y(1) + y(2) + y(3) + y(4))**2)
1586 beta_coef_x(i + 1, 3, &
1587# 530 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1588 & 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) &
1589 & **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) &
1590 & + 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) &
1591 & + 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) &
1592 & + 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) &
1593 & *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) &
1594 & *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) &
1595 & *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) &
1596 & **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) &
1597 & **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) &
1598 & *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) &
1599 & + 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) &
1600 & *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) &
1601 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
1602 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
1603 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1604 beta_coef_x(i + 1, 3, &
1605# 547 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1606 & 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) &
1607 & **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) &
1608 & + 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) &
1609 & *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 &
1610 & + 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) &
1611 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
1612 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
1613 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1614 beta_coef_x(i + 1, 3, &
1615# 556 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1616 & 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 &
1617 & + 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 &
1618 & + 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 &
1619 & + 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) &
1620 & + 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) &
1621 & **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) &
1622 & **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) &
1623 & **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) &
1624 & **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) &
1625 & *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) &
1626 & **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) &
1627 & **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) &
1628 & **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) &
1629 & **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) &
1630 & **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) &
1631 & **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) &
1632 & **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) &
1633 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
1634 & + 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 &
1635 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
1636 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
1637 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1638 & + y(3) + y(4))**2)
1639 beta_coef_x(i + 1, 3, &
1640# 580 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1641 & 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) &
1642 & **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) &
1643 & **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) &
1644 & **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) &
1645 & *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) &
1646 & *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) &
1647 & **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) &
1648 & **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) &
1649 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
1650 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
1651 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
1652 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
1653 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1654 beta_coef_x(i + 1, 3, &
1655# 594 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1656 & 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 &
1657 & + 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) &
1658 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
1659 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
1660 & + y(4))**2)
1661
1662 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
1663 beta_coef_x(i + 1, 2, &
1664# 602 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1665 & 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 &
1666 & + 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) &
1667 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
1668 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
1669 & + y(4))**2)
1670 beta_coef_x(i + 1, 2, &
1671# 608 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1672 & 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 &
1673 & + 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) &
1674 & - 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 &
1675 & - 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 &
1676 & + 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 &
1677 & + 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 &
1678 & + 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 &
1679 & + 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) &
1680 & **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 &
1681 & - 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 &
1682 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
1683 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
1684 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
1685 & **2)
1686 beta_coef_x(i + 1, 2, &
1687# 623 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1688 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
1689 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
1690 & + 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) &
1691 & *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)) &
1692 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1693 & + y(4))**2)
1694 beta_coef_x(i + 1, 2, &
1695# 630 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1696 & 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 &
1697 & + 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 &
1698 & + 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 &
1699 & + 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) &
1700 & + 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) &
1701 & **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) &
1702 & **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) &
1703 & **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) &
1704 & **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) &
1705 & *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 &
1706 & + 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) &
1707 & **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 &
1708 & + 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 &
1709 & + 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) &
1710 & **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) &
1711 & *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) &
1712 & + 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 &
1713 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
1714 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
1715 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
1716 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1717 & + y(3) + y(4))**2)
1718 beta_coef_x(i + 1, 2, &
1719# 653 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1720 & 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) &
1721 & **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) &
1722 & *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) &
1723 & *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) &
1724 & *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) &
1725 & **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) &
1726 & **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) &
1727 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
1728 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
1729 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
1730 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
1731 & **2)
1732 beta_coef_x(i + 1, 2, &
1733# 666 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1734 & 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 &
1735 & - 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)) &
1736 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
1737
1738 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
1739 beta_coef_x(i + 1, 1, &
1740# 672 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1741 & 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 &
1742 & - 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)) &
1743 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1744 beta_coef_x(i + 1, 1, &
1745# 676 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1746 & 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) &
1747 & *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) &
1748 & **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) &
1749 & **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) &
1750 & **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) &
1751 & **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) &
1752 & **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) &
1753 & *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) &
1754 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
1755 & **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) &
1756 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1757 & + y(3) + y(4))**2)
1758 beta_coef_x(i + 1, 1, &
1759# 689 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1760 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
1761 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
1762 & + 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) &
1763 & *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)) &
1764 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1765 & + y(4))**2)
1766 beta_coef_x(i + 1, 1, &
1767# 696 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1768 & 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) &
1769 & + 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) &
1770 & **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) &
1771 & **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) &
1772 & **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) &
1773 & **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) &
1774 & + 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) &
1775 & **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) &
1776 & **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) &
1777 & **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) &
1778 & **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) &
1779 & - 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) &
1780 & **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) &
1781 & **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) &
1782 & *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) &
1783 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
1784 & **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) &
1785 & **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) &
1786 & **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) &
1787 & **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) &
1788 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1789 beta_coef_x(i + 1, 1, &
1790# 718 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1791 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
1792 & **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) &
1793 & **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) &
1794 & *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) &
1795 & + 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) &
1796 & **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) &
1797 & **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) &
1798 & **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) &
1799 & **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 &
1800 & - 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 &
1801 & - 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) &
1802 & **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) &
1803 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1804 beta_coef_x(i + 1, 1, &
1805# 732 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1806 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
1807 & **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 &
1808 & + 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) &
1809 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
1810 & + y(3) + y(4))**2)
1811
1812 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
1813 beta_coef_x(i + 1, 0, &
1814# 740 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1815 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
1816 & **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 &
1817 & + 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) &
1818 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
1819 & + y(3) + y(4))**2)
1820 beta_coef_x(i + 1, 0, &
1821# 746 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1822 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
1823 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
1824 & **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) &
1825 & **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) &
1826 & + 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) &
1827 & **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 &
1828 & + 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) &
1829 & **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) &
1830 & *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 &
1831 & + 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) &
1832 & + 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) &
1833 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
1834 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1835 beta_coef_x(i + 1, 0, &
1836# 760 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1837 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
1838 & *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) &
1839 & + 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) &
1840 & **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) &
1841 & + 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) &
1842 & *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) &
1843 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
1844 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
1845 beta_coef_x(i + 1, 0, &
1846# 769 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1847 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
1848 & **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) &
1849 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
1850 & + 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) &
1851 & + 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) &
1852 & *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) &
1853 & *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) &
1854 & + 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) &
1855 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
1856 & + 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) &
1857 & **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) &
1858 & **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) &
1859 & *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) &
1860 & **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) &
1861 & **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 &
1862 & + 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) &
1863 & + 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 &
1864 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
1865 & + 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) &
1866 & **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) &
1867 & **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) &
1868 & **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)) &
1869 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
1870 beta_coef_x(i + 1, 0, &
1871# 793 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1872 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
1873 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
1874 & **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) &
1875 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
1876 & **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) &
1877 & **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) &
1878 & **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) &
1879 & + 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) &
1880 & + 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) &
1881 & + 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) &
1882 & *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 &
1883 & + 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) &
1884 & *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) &
1885 & + 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) &
1886 & **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)) &
1887 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
1888 & + y(4))**2)
1889 beta_coef_x(i + 1, 0, &
1890# 811 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1891 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
1892 & **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) &
1893 & + 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) &
1894 & *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 &
1895 & + 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) &
1896 & **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) &
1897 & + 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) &
1898 & **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) &
1899 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
1900 & + y(3) + y(4))**2)
1901 end do
1902 else
1903 ! (Fu, et al., 2016) Table 2 (for right flux)
1904 d_cbl_x(0,:) = 18._wp/35._wp
1905# 825 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1906 d_cbl_x(1,:) = 3._wp/35._wp
1907# 826 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1908 d_cbl_x(2,:) = 9._wp/35._wp
1909# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1910 d_cbl_x(3,:) = 1._wp/35._wp
1911# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1912 d_cbl_x(4,:) = 4._wp/35._wp
1913# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1914
1915 d_cbr_x(0,:) = 18._wp/35._wp
1916# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1917 d_cbr_x(1,:) = 9._wp/35._wp
1918# 832 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1919 d_cbr_x(2,:) = 3._wp/35._wp
1920# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1921 d_cbr_x(3,:) = 4._wp/35._wp
1922# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1923 d_cbr_x(4,:) = 1._wp/35._wp
1924# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1925 end if
1926 end if
1927 end if
1928# 192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1929 ! Computing WENO3 Coefficients
1930 if (weno_dir == 2) then
1931# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1932 if (weno_order == 3) then
1933 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1934 ! Polynomial reconstruction coefficients
1935 poly_coef_cbr_y(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
1936# 198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1937 poly_coef_cbr_y(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
1938# 199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1939
1940 poly_coef_cbl_y(i + 1, 0, 0) = -poly_coef_cbr_y(i + 1, 0, 0)
1941# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1942 poly_coef_cbl_y(i + 1, 1, 0) = -poly_coef_cbr_y(i + 1, 1, 0)
1943# 202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1944
1945 ! Ideal (linear) weights
1946 d_cbr_y(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
1947# 205 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1948 d_cbl_y(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
1949# 206 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1950
1951 d_cbr_y(1, i + 1) = 1._wp - d_cbr_y(0, i + 1)
1952# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1953 d_cbl_y(1, i + 1) = 1._wp - d_cbl_y(0, i + 1)
1954# 209 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1955
1956 ! Smoothness indicator coefficients
1957 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
1958# 212 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1959 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
1960# 213 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1961 end do
1962
1963 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
1964 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
1965 if (null_weights) then
1966 if (bc_s%beg == bc_riemann_extrap) then
1967 d_cbr_y(1, 0) = 0._wp; d_cbr_y(0, 0) = 1._wp
1968# 220 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1969 d_cbl_y(1, 0) = 0._wp; d_cbl_y(0, 0) = 1._wp
1970# 221 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1971 end if
1972
1973 if (bc_s%end == bc_riemann_extrap) then
1974 d_cbr_y(0, s) = 0._wp; d_cbr_y(1, s) = 1._wp
1975# 225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1976 d_cbl_y(0, s) = 0._wp; d_cbl_y(1, s) = 1._wp
1977# 226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1978 end if
1979 end if
1980 ! END: Computing WENO3 Coefficients
1981
1982 ! Computing WENO5 Coefficients
1983 else if (weno_order == 5) then
1984 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
1985 ! Polynomial reconstruction coefficients
1986 poly_coef_cbr_y(i + 1, 0, &
1987# 235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1988 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
1989 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
1990 poly_coef_cbr_y(i + 1, 1, &
1991# 238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1992 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
1993 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
1994 poly_coef_cbr_y(i + 1, 1, &
1995# 241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
1996 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
1997 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
1998 poly_coef_cbr_y(i + 1, 2, &
1999# 244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2000 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2001 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
2002 poly_coef_cbl_y(i + 1, 0, &
2003# 247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2004 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
2005 & *(s_cb(i + 3) - s_cb(i + 1)))
2006 poly_coef_cbl_y(i + 1, 1, &
2007# 250 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2008 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
2009 & + 2))*(s_cb(i) - s_cb(i + 2)))
2010 poly_coef_cbl_y(i + 1, 1, &
2011# 253 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2012 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
2013 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2014 poly_coef_cbl_y(i + 1, 2, &
2015# 256 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2016 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
2017 & *(s_cb(i - 2) - s_cb(i + 1)))
2018
2019 poly_coef_cbr_y(i + 1, 0, &
2020# 260 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2021 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
2022 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
2023 poly_coef_cbr_y(i + 1, 2, &
2024# 263 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2025 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
2026 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
2027 poly_coef_cbl_y(i + 1, 0, &
2028# 266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2029 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
2030 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
2031 poly_coef_cbl_y(i + 1, 2, &
2032# 269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2033 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
2034 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
2035
2036 ! Ideal (linear) weights
2037 d_cbr_y(0, &
2038# 274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2039 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2040 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
2041 d_cbr_y(2, &
2042# 277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2043 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
2044 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
2045 d_cbl_y(0, &
2046# 280 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2047 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
2048 & *(s_cb(i + 3) - s_cb(i - 1)))
2049 d_cbl_y(2, &
2050# 283 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2051 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
2052 & *(s_cb(i - 2) - s_cb(i + 3)))
2053
2054 d_cbr_y(1, i + 1) = 1._wp - d_cbr_y(0, i + 1) - d_cbr_y(2, i + 1)
2055# 287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2056 d_cbl_y(1, i + 1) = 1._wp - d_cbl_y(0, i + 1) - d_cbl_y(2, i + 1)
2057# 288 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2058
2059 ! Smoothness indicator coefficients
2060 beta_coef_y(i + 1, 0, &
2061# 291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2062 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2063 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2064 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
2065
2066 beta_coef_y(i + 1, 0, &
2067# 296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2068 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2069 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
2070 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
2071 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
2072
2073 beta_coef_y(i + 1, 0, &
2074# 302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2075 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2076 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
2077 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
2078 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
2079
2080 beta_coef_y(i + 1, 1, &
2081# 308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2082 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2083 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2084 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
2085
2086 beta_coef_y(i + 1, 1, &
2087# 313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2088 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
2089 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
2090 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
2091 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
2092
2093 beta_coef_y(i + 1, 1, &
2094# 319 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2095 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2096 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2097 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
2098
2099 beta_coef_y(i + 1, 2, &
2100# 324 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2101 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2102 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
2103 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
2104 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
2105
2106 beta_coef_y(i + 1, 2, &
2107# 330 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2108 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2109 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
2110 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
2111 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
2112
2113 beta_coef_y(i + 1, 2, &
2114# 336 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2115 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2116 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2117 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
2118 end do
2119
2120 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2121 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2122 if (null_weights) then
2123 if (bc_s%beg == bc_riemann_extrap) then
2124 d_cbr_y(1:2,0) = 0._wp; d_cbr_y(0, 0) = 1._wp
2125# 346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2126 d_cbl_y(1:2,0) = 0._wp; d_cbl_y(0, 0) = 1._wp
2127# 347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2128 d_cbr_y(2, 1) = 0._wp; d_cbr_y(:,1) = d_cbr_y(:,1)/sum(d_cbr_y(:,1))
2129# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2130 d_cbl_y(2, 1) = 0._wp; d_cbl_y(:,1) = d_cbl_y(:,1)/sum(d_cbl_y(:,1))
2131# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2132 end if
2133
2134 if (bc_s%end == bc_riemann_extrap) then
2135 d_cbr_y(0, s - 1) = 0._wp; d_cbr_y(:,s - 1) = d_cbr_y(:, &
2136# 353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2137 & s - 1)/sum(d_cbr_y(:,s - 1))
2138# 354 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2139 d_cbl_y(0, s - 1) = 0._wp; d_cbl_y(:,s - 1) = d_cbl_y(:, &
2140# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2141 & s - 1)/sum(d_cbl_y(:,s - 1))
2142# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2143 d_cbr_y(0:1,s) = 0._wp; d_cbr_y(2, s) = 1._wp
2144# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2145 d_cbl_y(0:1,s) = 0._wp; d_cbl_y(2, s) = 1._wp
2146# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2147 end if
2148 end if
2149 else
2150 if (.not. teno) then
2151 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2152 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
2153 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
2154 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
2155 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
2156 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
2157 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
2158 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
2159 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
2160 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
2161 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
2162 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
2163
2164 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
2165 d_cbr_y(0, &
2166# 377 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2167 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2168 & *(w(1) - w(8)))
2169 d_cbr_y(1, &
2170# 380 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2171 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2172 & *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) &
2173 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2174 & *(w(2) - w(8)))
2175 d_cbr_y(2, &
2176# 385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2177 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2178 & *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) &
2179 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2180 & *(w(3) - w(8)))
2181 d_cbr_y(3, &
2182# 390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2183 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2184 & *(w(3) - w(8)))
2185
2186 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
2187 d_cbl_y(0, &
2188# 395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2189 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2190 & *(w(3) - w(8)))
2191 d_cbl_y(1, &
2192# 398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2193 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2194 & *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) &
2195 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2196 & *(w(3) - w(8)))
2197 d_cbl_y(2, &
2198# 403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2199 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2200 & *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) &
2201 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2202 & *(w(2) - w(8)))
2203 d_cbl_y(3, &
2204# 408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2205 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2206 & *(w(1) - w(8)))
2207 ! Note: Left has the reversed order of both points and coefficients compared to the right
2208
2209 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2210 poly_coef_cbr_y(i + 1, 0, &
2211# 414 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2212 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2213 & + y(2) + y(3) + y(4)))
2214 poly_coef_cbr_y(i + 1, 0, &
2215# 417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2216 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2217 & + 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) &
2218 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2219 poly_coef_cbr_y(i + 1, 0, &
2220# 421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2221 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2222 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2223 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2224
2225 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2226 poly_coef_cbr_y(i + 1, 1, &
2227# 427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2228 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2229 & + y(2) + y(3) + y(4)))
2230 poly_coef_cbr_y(i + 1, 1, &
2231# 430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2232 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
2233 & + 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) &
2234 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2235 poly_coef_cbr_y(i + 1, 1, &
2236# 434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2237 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2238 & + y(2) + y(3) + y(4)))
2239
2240 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
2241 poly_coef_cbr_y(i + 1, 2, &
2242# 439 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2243 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
2244 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
2245 poly_coef_cbr_y(i + 1, 2, &
2246# 442 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2247 & 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 &
2248 & + 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) &
2249 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2250 poly_coef_cbr_y(i + 1, 2, &
2251# 446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2252 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2253 & + y(2) + y(3) + y(4)))
2254
2255 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
2256 poly_coef_cbr_y(i + 1, 3, &
2257# 451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2258 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
2259 & + 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) &
2260 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2261 poly_coef_cbr_y(i + 1, 3, &
2262# 455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2263 & 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) &
2264 & + 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)) &
2265 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2266 & + y(4)))
2267 poly_coef_cbr_y(i + 1, 3, &
2268# 460 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2269 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
2270 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
2271
2272 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
2273 poly_coef_cbl_y(i + 1, 3, &
2274# 465 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2275 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2276 & + y(2) + y(3) + y(4)))
2277 poly_coef_cbl_y(i + 1, 3, &
2278# 468 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2279 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2280 & + 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) &
2281 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2282 poly_coef_cbl_y(i + 1, 3, &
2283# 472 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2284 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2285 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2286 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2287
2288 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
2289 poly_coef_cbl_y(i + 1, 2, &
2290# 478 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2291 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2292 & + y(2) + y(3) + y(4)))
2293 poly_coef_cbl_y(i + 1, 2, &
2294# 481 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2295 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
2296 & + 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) &
2297 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2298 poly_coef_cbl_y(i + 1, 2, &
2299# 485 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2300 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2301 & + y(2) + y(3) + y(4)))
2302
2303 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
2304 poly_coef_cbl_y(i + 1, 1, &
2305# 490 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2306 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
2307 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
2308 poly_coef_cbl_y(i + 1, 1, &
2309# 493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2310 & 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 &
2311 & + 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) &
2312 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2313 poly_coef_cbl_y(i + 1, 1, &
2314# 497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2315 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
2316 & + y(2) + y(3) + y(4)))
2317
2318 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
2319 poly_coef_cbl_y(i + 1, 0, &
2320# 502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2321 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
2322 & + 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) &
2323 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2324 poly_coef_cbl_y(i + 1, 0, &
2325# 506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2326 & 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) &
2327 & + 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)) &
2328 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2329 & + y(4)))
2330 poly_coef_cbl_y(i + 1, 0, &
2331# 511 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2332 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
2333 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
2334
2335 poly_coef_cbl_y(i + 1,:,:) = -poly_coef_cbl_y(i + 1,:,:)
2336# 515 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2337 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
2338
2339 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
2340 beta_coef_y(i + 1, 3, &
2341# 519 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2342 & 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) &
2343 & + 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) &
2344 & **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 &
2345 & + 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) &
2346 & *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) &
2347 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
2348 & + 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) &
2349 & *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) &
2350 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
2351 & **2*(y(1) + y(2) + y(3) + y(4))**2)
2352 beta_coef_y(i + 1, 3, &
2353# 530 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2354 & 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) &
2355 & **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) &
2356 & + 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) &
2357 & + 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) &
2358 & + 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) &
2359 & *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) &
2360 & *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) &
2361 & *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) &
2362 & **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) &
2363 & **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) &
2364 & *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) &
2365 & + 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) &
2366 & *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) &
2367 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
2368 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
2369 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2370 beta_coef_y(i + 1, 3, &
2371# 547 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2372 & 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) &
2373 & **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) &
2374 & + 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) &
2375 & *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 &
2376 & + 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) &
2377 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
2378 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
2379 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2380 beta_coef_y(i + 1, 3, &
2381# 556 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2382 & 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 &
2383 & + 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 &
2384 & + 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 &
2385 & + 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) &
2386 & + 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) &
2387 & **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) &
2388 & **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) &
2389 & **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) &
2390 & **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) &
2391 & *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) &
2392 & **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) &
2393 & **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) &
2394 & **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) &
2395 & **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) &
2396 & **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) &
2397 & **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) &
2398 & **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) &
2399 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
2400 & + 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 &
2401 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
2402 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
2403 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2404 & + y(3) + y(4))**2)
2405 beta_coef_y(i + 1, 3, &
2406# 580 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2407 & 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) &
2408 & **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) &
2409 & **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) &
2410 & **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) &
2411 & *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) &
2412 & *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) &
2413 & **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) &
2414 & **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) &
2415 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
2416 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
2417 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
2418 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
2419 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2420 beta_coef_y(i + 1, 3, &
2421# 594 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2422 & 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 &
2423 & + 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) &
2424 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
2425 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
2426 & + y(4))**2)
2427
2428 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
2429 beta_coef_y(i + 1, 2, &
2430# 602 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2431 & 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 &
2432 & + 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) &
2433 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
2434 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
2435 & + y(4))**2)
2436 beta_coef_y(i + 1, 2, &
2437# 608 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2438 & 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 &
2439 & + 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) &
2440 & - 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 &
2441 & - 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 &
2442 & + 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 &
2443 & + 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 &
2444 & + 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 &
2445 & + 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) &
2446 & **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 &
2447 & - 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 &
2448 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
2449 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
2450 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
2451 & **2)
2452 beta_coef_y(i + 1, 2, &
2453# 623 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2454 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
2455 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
2456 & + 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) &
2457 & *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)) &
2458 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2459 & + y(4))**2)
2460 beta_coef_y(i + 1, 2, &
2461# 630 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2462 & 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 &
2463 & + 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 &
2464 & + 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 &
2465 & + 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) &
2466 & + 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) &
2467 & **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) &
2468 & **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) &
2469 & **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) &
2470 & **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) &
2471 & *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 &
2472 & + 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) &
2473 & **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 &
2474 & + 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 &
2475 & + 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) &
2476 & **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) &
2477 & *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) &
2478 & + 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 &
2479 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
2480 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
2481 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
2482 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2483 & + y(3) + y(4))**2)
2484 beta_coef_y(i + 1, 2, &
2485# 653 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2486 & 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) &
2487 & **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) &
2488 & *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) &
2489 & *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) &
2490 & *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) &
2491 & **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) &
2492 & **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) &
2493 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
2494 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
2495 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
2496 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
2497 & **2)
2498 beta_coef_y(i + 1, 2, &
2499# 666 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2500 & 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 &
2501 & - 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)) &
2502 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
2503
2504 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2505 beta_coef_y(i + 1, 1, &
2506# 672 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2507 & 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 &
2508 & - 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)) &
2509 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2510 beta_coef_y(i + 1, 1, &
2511# 676 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2512 & 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) &
2513 & *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) &
2514 & **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) &
2515 & **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) &
2516 & **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) &
2517 & **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) &
2518 & **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) &
2519 & *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) &
2520 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
2521 & **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) &
2522 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2523 & + y(3) + y(4))**2)
2524 beta_coef_y(i + 1, 1, &
2525# 689 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2526 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
2527 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
2528 & + 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) &
2529 & *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)) &
2530 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2531 & + y(4))**2)
2532 beta_coef_y(i + 1, 1, &
2533# 696 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2534 & 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) &
2535 & + 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) &
2536 & **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) &
2537 & **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) &
2538 & **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) &
2539 & **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) &
2540 & + 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) &
2541 & **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) &
2542 & **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) &
2543 & **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) &
2544 & **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) &
2545 & - 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) &
2546 & **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) &
2547 & **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) &
2548 & *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) &
2549 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
2550 & **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) &
2551 & **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) &
2552 & **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) &
2553 & **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) &
2554 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2555 beta_coef_y(i + 1, 1, &
2556# 718 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2557 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
2558 & **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) &
2559 & **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) &
2560 & *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) &
2561 & + 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) &
2562 & **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) &
2563 & **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) &
2564 & **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) &
2565 & **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 &
2566 & - 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 &
2567 & - 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) &
2568 & **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) &
2569 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2570 beta_coef_y(i + 1, 1, &
2571# 732 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2572 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
2573 & **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 &
2574 & + 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) &
2575 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
2576 & + y(3) + y(4))**2)
2577
2578 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2579 beta_coef_y(i + 1, 0, &
2580# 740 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2581 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
2582 & **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 &
2583 & + 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) &
2584 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
2585 & + y(3) + y(4))**2)
2586 beta_coef_y(i + 1, 0, &
2587# 746 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2588 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
2589 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
2590 & **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) &
2591 & **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) &
2592 & + 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) &
2593 & **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 &
2594 & + 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) &
2595 & **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) &
2596 & *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 &
2597 & + 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) &
2598 & + 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) &
2599 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
2600 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2601 beta_coef_y(i + 1, 0, &
2602# 760 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2603 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
2604 & *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) &
2605 & + 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) &
2606 & **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) &
2607 & + 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) &
2608 & *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) &
2609 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
2610 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
2611 beta_coef_y(i + 1, 0, &
2612# 769 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2613 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
2614 & **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) &
2615 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
2616 & + 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) &
2617 & + 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) &
2618 & *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) &
2619 & *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) &
2620 & + 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) &
2621 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
2622 & + 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) &
2623 & **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) &
2624 & **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) &
2625 & *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) &
2626 & **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) &
2627 & **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 &
2628 & + 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) &
2629 & + 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 &
2630 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
2631 & + 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) &
2632 & **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) &
2633 & **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) &
2634 & **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)) &
2635 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
2636 beta_coef_y(i + 1, 0, &
2637# 793 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2638 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
2639 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
2640 & **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) &
2641 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
2642 & **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) &
2643 & **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) &
2644 & **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) &
2645 & + 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) &
2646 & + 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) &
2647 & + 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) &
2648 & *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 &
2649 & + 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) &
2650 & *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) &
2651 & + 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) &
2652 & **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)) &
2653 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
2654 & + y(4))**2)
2655 beta_coef_y(i + 1, 0, &
2656# 811 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2657 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
2658 & **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) &
2659 & + 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) &
2660 & *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 &
2661 & + 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) &
2662 & **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) &
2663 & + 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) &
2664 & **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) &
2665 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
2666 & + y(3) + y(4))**2)
2667 end do
2668 else
2669 ! (Fu, et al., 2016) Table 2 (for right flux)
2670 d_cbl_y(0,:) = 18._wp/35._wp
2671# 825 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2672 d_cbl_y(1,:) = 3._wp/35._wp
2673# 826 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2674 d_cbl_y(2,:) = 9._wp/35._wp
2675# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2676 d_cbl_y(3,:) = 1._wp/35._wp
2677# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2678 d_cbl_y(4,:) = 4._wp/35._wp
2679# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2680
2681 d_cbr_y(0,:) = 18._wp/35._wp
2682# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2683 d_cbr_y(1,:) = 9._wp/35._wp
2684# 832 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2685 d_cbr_y(2,:) = 3._wp/35._wp
2686# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2687 d_cbr_y(3,:) = 4._wp/35._wp
2688# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2689 d_cbr_y(4,:) = 1._wp/35._wp
2690# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2691 end if
2692 end if
2693 end if
2694# 192 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2695 ! Computing WENO3 Coefficients
2696 if (weno_dir == 3) then
2697# 194 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2698 if (weno_order == 3) then
2699 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2700 ! Polynomial reconstruction coefficients
2701 poly_coef_cbr_z(i + 1, 0, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i) - s_cb(i + 2))
2702# 198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2703 poly_coef_cbr_z(i + 1, 1, 0) = (s_cb(i) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 1))
2704# 199 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2705
2706 poly_coef_cbl_z(i + 1, 0, 0) = -poly_coef_cbr_z(i + 1, 0, 0)
2707# 201 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2708 poly_coef_cbl_z(i + 1, 1, 0) = -poly_coef_cbr_z(i + 1, 1, 0)
2709# 202 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2710
2711 ! Ideal (linear) weights
2712 d_cbr_z(0, i + 1) = (s_cb(i - 1) - s_cb(i + 1))/(s_cb(i - 1) - s_cb(i + 2))
2713# 205 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2714 d_cbl_z(0, i + 1) = (s_cb(i - 1) - s_cb(i))/(s_cb(i - 1) - s_cb(i + 2))
2715# 206 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2716
2717 d_cbr_z(1, i + 1) = 1._wp - d_cbr_z(0, i + 1)
2718# 208 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2719 d_cbl_z(1, i + 1) = 1._wp - d_cbl_z(0, i + 1)
2720# 209 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2721
2722 ! Smoothness indicator coefficients
2723 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
2724# 212 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2725 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
2726# 213 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2727 end do
2728
2729 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2730 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2731 if (null_weights) then
2732 if (bc_s%beg == bc_riemann_extrap) then
2733 d_cbr_z(1, 0) = 0._wp; d_cbr_z(0, 0) = 1._wp
2734# 220 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2735 d_cbl_z(1, 0) = 0._wp; d_cbl_z(0, 0) = 1._wp
2736# 221 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2737 end if
2738
2739 if (bc_s%end == bc_riemann_extrap) then
2740 d_cbr_z(0, s) = 0._wp; d_cbr_z(1, s) = 1._wp
2741# 225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2742 d_cbl_z(0, s) = 0._wp; d_cbl_z(1, s) = 1._wp
2743# 226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2744 end if
2745 end if
2746 ! END: Computing WENO3 Coefficients
2747
2748 ! Computing WENO5 Coefficients
2749 else if (weno_order == 5) then
2750 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2751 ! Polynomial reconstruction coefficients
2752 poly_coef_cbr_z(i + 1, 0, &
2753# 235 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2754 & 0) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i) - s_cb(i &
2755 & + 3))*(s_cb(i + 3) - s_cb(i + 1)))
2756 poly_coef_cbr_z(i + 1, 1, &
2757# 238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2758 & 0) = ((s_cb(i - 1) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 1) &
2759 & - s_cb(i + 2))*(s_cb(i + 2) - s_cb(i)))
2760 poly_coef_cbr_z(i + 1, 1, &
2761# 241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2762 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i + 2)))/((s_cb(i - 1) &
2763 & - s_cb(i + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2764 poly_coef_cbr_z(i + 1, 2, &
2765# 244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2766 & 1) = ((s_cb(i) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2767 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1)))
2768 poly_coef_cbl_z(i + 1, 0, &
2769# 247 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2770 & 0) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i) - s_cb(i + 3)) &
2771 & *(s_cb(i + 3) - s_cb(i + 1)))
2772 poly_coef_cbl_z(i + 1, 1, &
2773# 250 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2774 & 0) = ((s_cb(i) - s_cb(i - 1))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 1) - s_cb(i &
2775 & + 2))*(s_cb(i) - s_cb(i + 2)))
2776 poly_coef_cbl_z(i + 1, 1, &
2777# 253 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2778 & 1) = ((s_cb(i + 1) - s_cb(i))*(s_cb(i) - s_cb(i + 2)))/((s_cb(i - 1) - s_cb(i &
2779 & + 1))*(s_cb(i - 1) - s_cb(i + 2)))
2780 poly_coef_cbl_z(i + 1, 2, &
2781# 256 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2782 & 1) = ((s_cb(i - 1) - s_cb(i))*(s_cb(i) - s_cb(i + 1)))/((s_cb(i - 2) - s_cb(i)) &
2783 & *(s_cb(i - 2) - s_cb(i + 1)))
2784
2785 poly_coef_cbr_z(i + 1, 0, &
2786# 260 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2787 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i) - s_cb(i &
2788 & + 2))*(s_cb(i) - s_cb(i + 3)))*((s_cb(i) - s_cb(i + 1)))
2789 poly_coef_cbr_z(i + 1, 2, &
2790# 263 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2791 & 0) = ((s_cb(i - 2) - s_cb(i + 1)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 1) &
2792 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 2)))*((s_cb(i + 1) - s_cb(i)))
2793 poly_coef_cbl_z(i + 1, 0, &
2794# 266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2795 & 1) = ((s_cb(i) - s_cb(i + 2)) + (s_cb(i) - s_cb(i + 3)))/((s_cb(i) - s_cb(i + 2)) &
2796 & *(s_cb(i) - s_cb(i + 3)))*((s_cb(i + 1) - s_cb(i)))
2797 poly_coef_cbl_z(i + 1, 2, &
2798# 269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2799 & 0) = ((s_cb(i - 2) - s_cb(i)) + (s_cb(i - 1) - s_cb(i + 1)))/((s_cb(i - 2) &
2800 & - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))*((s_cb(i) - s_cb(i + 1)))
2801
2802 ! Ideal (linear) weights
2803 d_cbr_z(0, &
2804# 274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2805 & i + 1) = ((s_cb(i - 2) - s_cb(i + 1))*(s_cb(i + 1) - s_cb(i - 1)))/((s_cb(i - 2) &
2806 & - s_cb(i + 3))*(s_cb(i + 3) - s_cb(i - 1)))
2807 d_cbr_z(2, &
2808# 277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2809 & i + 1) = ((s_cb(i + 1) - s_cb(i + 2))*(s_cb(i + 1) - s_cb(i + 3)))/((s_cb(i - 2) &
2810 & - s_cb(i + 2))*(s_cb(i - 2) - s_cb(i + 3)))
2811 d_cbl_z(0, &
2812# 280 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2813 & i + 1) = ((s_cb(i - 2) - s_cb(i))*(s_cb(i) - s_cb(i - 1)))/((s_cb(i - 2) - s_cb(i + 3)) &
2814 & *(s_cb(i + 3) - s_cb(i - 1)))
2815 d_cbl_z(2, &
2816# 283 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2817 & i + 1) = ((s_cb(i) - s_cb(i + 2))*(s_cb(i) - s_cb(i + 3)))/((s_cb(i - 2) - s_cb(i + 2)) &
2818 & *(s_cb(i - 2) - s_cb(i + 3)))
2819
2820 d_cbr_z(1, i + 1) = 1._wp - d_cbr_z(0, i + 1) - d_cbr_z(2, i + 1)
2821# 287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2822 d_cbl_z(1, i + 1) = 1._wp - d_cbl_z(0, i + 1) - d_cbl_z(2, i + 1)
2823# 288 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2824
2825 ! Smoothness indicator coefficients
2826 beta_coef_z(i + 1, 0, &
2827# 291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2828 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2829 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2830 & **2._wp)/((s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 1) - s_cb(i + 3))**2._wp)
2831
2832 beta_coef_z(i + 1, 0, &
2833# 296 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2834 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2835 & - (s_cb(i + 1) - s_cb(i))*(s_cb(i + 3) - s_cb(i + 1)) + 2._wp*(s_cb(i + 2) - s_cb(i)) &
2836 & *((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))))/((s_cb(i) - s_cb(i + 2)) &
2837 & *(s_cb(i) - s_cb(i + 3))**2._wp*(s_cb(i + 3) - s_cb(i + 1)))
2838
2839 beta_coef_z(i + 1, 0, &
2840# 302 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2841 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2842 & + (s_cb(i + 1) - s_cb(i))*((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1))) &
2843 & + ((s_cb(i + 2) - s_cb(i)) + (s_cb(i + 3) - s_cb(i + 1)))**2._wp)/((s_cb(i) - s_cb(i &
2844 & + 2))**2._wp*(s_cb(i) - s_cb(i + 3))**2._wp)
2845
2846 beta_coef_z(i + 1, 1, &
2847# 308 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2848 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2849 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2850 & /((s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i) - s_cb(i + 2))**2._wp)
2851
2852 beta_coef_z(i + 1, 1, &
2853# 313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2854 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*((s_cb(i) - s_cb(i + 1))*((s_cb(i) &
2855 & - s_cb(i - 1)) + 20._wp*(s_cb(i + 1) - s_cb(i))) + (2._wp*(s_cb(i) - s_cb(i - 1)) &
2856 & + (s_cb(i + 1) - s_cb(i)))*(s_cb(i + 2) - s_cb(i)))/((s_cb(i + 1) - s_cb(i - 1)) &
2857 & *(s_cb(i - 1) - s_cb(i + 2))**2._wp*(s_cb(i + 2) - s_cb(i)))
2858
2859 beta_coef_z(i + 1, 1, &
2860# 319 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2861 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2862 & + (s_cb(i + 1) - s_cb(i))*(s_cb(i + 2) - s_cb(i + 1)) + (s_cb(i + 2) - s_cb(i + 1)) &
2863 & **2._wp)/((s_cb(i - 1) - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 2))**2._wp)
2864
2865 beta_coef_z(i + 1, 2, &
2866# 324 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2867 & 0) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(12._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2868 & + ((s_cb(i) - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))**2._wp + 3._wp*((s_cb(i) &
2869 & - s_cb(i - 2)) + (s_cb(i) - s_cb(i - 1)))*(s_cb(i + 1) - s_cb(i)))/((s_cb(i - 2) &
2870 & - s_cb(i + 1))**2._wp*(s_cb(i - 1) - s_cb(i + 1))**2._wp)
2871
2872 beta_coef_z(i + 1, 2, &
2873# 330 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2874 & 1) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(19._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2875 & + ((s_cb(i) - s_cb(i - 2))*(s_cb(i) - s_cb(i + 1))) + 2._wp*(s_cb(i + 1) - s_cb(i &
2876 & - 1))*((s_cb(i) - s_cb(i - 2)) + (s_cb(i + 1) - s_cb(i - 1))))/((s_cb(i - 2) &
2877 & - s_cb(i))*(s_cb(i - 2) - s_cb(i + 1))**2._wp*(s_cb(i + 1) - s_cb(i - 1)))
2878
2879 beta_coef_z(i + 1, 2, &
2880# 336 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2881 & 2) = 4._wp*(s_cb(i) - s_cb(i + 1))**2._wp*(10._wp*(s_cb(i + 1) - s_cb(i))**2._wp &
2882 & + (s_cb(i) - s_cb(i - 1))**2._wp + (s_cb(i) - s_cb(i - 1))*(s_cb(i + 1) - s_cb(i))) &
2883 & /((s_cb(i - 2) - s_cb(i))**2._wp*(s_cb(i - 2) - s_cb(i + 1))**2._wp)
2884 end do
2885
2886 ! Modifying the ideal weights coefficients in the neighborhood of beginning and end Riemann state extrapolation
2887 ! BC to avoid any contributions from outside of the physical domain during the WENO reconstruction
2888 if (null_weights) then
2889 if (bc_s%beg == bc_riemann_extrap) then
2890 d_cbr_z(1:2,0) = 0._wp; d_cbr_z(0, 0) = 1._wp
2891# 346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2892 d_cbl_z(1:2,0) = 0._wp; d_cbl_z(0, 0) = 1._wp
2893# 347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2894 d_cbr_z(2, 1) = 0._wp; d_cbr_z(:,1) = d_cbr_z(:,1)/sum(d_cbr_z(:,1))
2895# 348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2896 d_cbl_z(2, 1) = 0._wp; d_cbl_z(:,1) = d_cbl_z(:,1)/sum(d_cbl_z(:,1))
2897# 349 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2898 end if
2899
2900 if (bc_s%end == bc_riemann_extrap) then
2901 d_cbr_z(0, s - 1) = 0._wp; d_cbr_z(:,s - 1) = d_cbr_z(:, &
2902# 353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2903 & s - 1)/sum(d_cbr_z(:,s - 1))
2904# 354 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2905 d_cbl_z(0, s - 1) = 0._wp; d_cbl_z(:,s - 1) = d_cbl_z(:, &
2906# 355 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2907 & s - 1)/sum(d_cbl_z(:,s - 1))
2908# 356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2909 d_cbr_z(0:1,s) = 0._wp; d_cbr_z(2, s) = 1._wp
2910# 357 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2911 d_cbl_z(0:1,s) = 0._wp; d_cbl_z(2, s) = 1._wp
2912# 358 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2913 end if
2914 end if
2915 else
2916 if (.not. teno) then
2917 do i = is%beg - 1 + weno_polyn, is%end - 1 - weno_polyn
2918 ! Reference: Shu (1997) "Essentially Non-Oscillatory and Weighted Essentially Non-Oscillatory Schemes
2919 ! for Hyperbolic Conservation Laws" Equation 2.20: Polynomial Coefficients (poly_coef_cb) Equation 2.61:
2920 ! Smoothness Indicators (beta_coef) To reduce computational cost, we leverage the fact that all
2921 ! polynomial coefficients in a stencil sum to 1 and compute the polynomial coefficients (poly_coef_cb)
2922 ! for the cell value differences (dvd) instead of the values themselves. The computation of coefficients
2923 ! is further simplified by using grid spacing (y or w) rather than the grid locations (s_cb) directly.
2924 ! Ideal weights (d_cb) are obtained by comparing the grid location coefficients of the polynomial
2925 ! coefficients. The smoothness indicators (beta_coef) are calculated through numerical differentiation
2926 ! and integration of each cross term of the polynomial coefficients, using the cell value differences
2927 ! (dvd) instead of the values themselves. While the polynomial coefficients sum to 1, the derivative of
2928 ! 1 is 0, which means it does not create additional cross terms in the smoothness indicators.
2929
2930 w = s_cb(i - 3:i + 4) - s_cb(i) ! Offset using s_cb(i) to reduce floating point error
2931 d_cbr_z(0, &
2932# 377 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2933 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2934 & *(w(1) - w(8)))
2935 d_cbr_z(1, &
2936# 380 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2937 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2938 & *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) &
2939 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2940 & *(w(2) - w(8)))
2941 d_cbr_z(2, &
2942# 385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2943 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2944 & *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) &
2945 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2946 & *(w(3) - w(8)))
2947 d_cbr_z(3, &
2948# 390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2949 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2950 & *(w(3) - w(8)))
2951
2952 w = s_cb(i + 4:i - 3:-1) - s_cb(i)
2953 d_cbl_z(0, &
2954# 395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2955 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(3) - w(5)))/((w(1) - w(8))*(w(2) - w(8)) &
2956 & *(w(3) - w(8)))
2957 d_cbl_z(1, &
2958# 398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2959 & i + 1) = ((w(1) - w(5))*(w(2) - w(5))*(w(5) - w(8))*(w(1)*w(2) + w(1)*w(3) + w(2) &
2960 & *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) &
2961 & *w(8) + w(7)**2 + w(8)**2))/((w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7))*(w(2) - w(8)) &
2962 & *(w(3) - w(8)))
2963 d_cbl_z(2, &
2964# 403 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2965 & i + 1) = ((w(1) - w(5))*(w(5) - w(7))*(w(5) - w(8))*(w(1)*w(2) - w(1)*w(6) - w(1) &
2966 & *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) &
2967 & *w(8) + w(1)**2 + w(2)**2))/((w(1) - w(6))*(w(1) - w(7))*(w(1) - w(8))*(w(2) - w(7)) &
2968 & *(w(2) - w(8)))
2969 d_cbl_z(3, &
2970# 408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2971 & i + 1) = ((w(5) - w(6))*(w(5) - w(7))*(w(5) - w(8)))/((w(1) - w(6))*(w(1) - w(7)) &
2972 & *(w(1) - w(8)))
2973 ! Note: Left has the reversed order of both points and coefficients compared to the right
2974
2975 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
2976 poly_coef_cbr_z(i + 1, 0, &
2977# 414 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2978 & 0) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2979 & + y(2) + y(3) + y(4)))
2980 poly_coef_cbr_z(i + 1, 0, &
2981# 417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2982 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
2983 & + 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) &
2984 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
2985 poly_coef_cbr_z(i + 1, 0, &
2986# 421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2987 & 2) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
2988 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
2989 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
2990
2991 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
2992 poly_coef_cbr_z(i + 1, 1, &
2993# 427 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2994 & 0) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
2995 & + y(2) + y(3) + y(4)))
2996 poly_coef_cbr_z(i + 1, 1, &
2997# 430 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
2998 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
2999 & + 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) &
3000 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3001 poly_coef_cbr_z(i + 1, 1, &
3002# 434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3003 & 2) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3004 & + y(2) + y(3) + y(4)))
3005
3006 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
3007 poly_coef_cbr_z(i + 1, 2, &
3008# 439 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3009 & 0) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
3010 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
3011 poly_coef_cbr_z(i + 1, 2, &
3012# 442 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3013 & 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 &
3014 & + 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) &
3015 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3016 poly_coef_cbr_z(i + 1, 2, &
3017# 446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3018 & 2) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3019 & + y(2) + y(3) + y(4)))
3020
3021 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
3022 poly_coef_cbr_z(i + 1, 3, &
3023# 451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3024 & 0) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
3025 & + 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) &
3026 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3027 poly_coef_cbr_z(i + 1, 3, &
3028# 455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3029 & 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) &
3030 & + 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)) &
3031 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3032 & + y(4)))
3033 poly_coef_cbr_z(i + 1, 3, &
3034# 460 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3035 & 2) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
3036 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
3037
3038 y = s_cb(i + 1:i - 2:-1) - s_cb(i:i - 3:-1)
3039 poly_coef_cbl_z(i + 1, 3, &
3040# 465 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3041 & 2) = (y(1)*y(2)*(y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
3042 & + y(2) + y(3) + y(4)))
3043 poly_coef_cbl_z(i + 1, 3, &
3044# 468 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3045 & 1) = -(y(1)*y(2)*(3*y(2)**2 + 6*y(2)*y(3) + 3*y(2)*y(4) + 2*y(1)*y(2) &
3046 & + 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) &
3047 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3048 poly_coef_cbl_z(i + 1, 3, &
3049# 472 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3050 & 0) = (y(1)*(y(1)**2 + 3*y(1)*y(2) + 2*y(1)*y(3) + y(4)*y(1) + 3*y(2)**2 &
3051 & + 4*y(2)*y(3) + 2*y(4)*y(2) + y(3)**2 + y(4)*y(3)))/((y(1) + y(2))*(y(1) &
3052 & + y(2) + y(3))*(y(1) + y(2) + y(3) + y(4)))
3053
3054 y = s_cb(i + 2:i - 1:-1) - s_cb(i + 1:i - 2:-1)
3055 poly_coef_cbl_z(i + 1, 2, &
3056# 478 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3057 & 2) = -(y(2)*y(3)*(y(1) + y(2)))/((y(3) + y(4))*(y(2) + y(3) + y(4))*(y(1) &
3058 & + y(2) + y(3) + y(4)))
3059 poly_coef_cbl_z(i + 1, 2, &
3060# 481 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3061 & 1) = (y(2)*(y(1) + y(2))*(y(2)**2 + 4*y(2)*y(3) + 2*y(2)*y(4) + y(1)*y(2) &
3062 & + 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) &
3063 & )*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3064 poly_coef_cbl_z(i + 1, 2, &
3065# 485 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3066 & 0) = (y(2)*y(3)*(y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3067 & + y(2) + y(3) + y(4)))
3068
3069 y = s_cb(i + 3:i:-1) - s_cb(i + 2:i - 1:-1)
3070 poly_coef_cbl_z(i + 1, 1, &
3071# 490 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3072 & 2) = (y(3)*(y(2) + y(3))*(y(1) + y(2) + y(3)))/((y(3) + y(4))*(y(2) + y(3) &
3073 & + y(4))*(y(1) + y(2) + y(3) + y(4)))
3074 poly_coef_cbl_z(i + 1, 1, &
3075# 493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3076 & 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 &
3077 & + 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) &
3078 & + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3079 poly_coef_cbl_z(i + 1, 1, &
3080# 497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3081 & 0) = -(y(3)*y(4)*(y(2) + y(3)))/((y(1) + y(2))*(y(1) + y(2) + y(3))*(y(1) &
3082 & + y(2) + y(3) + y(4)))
3083
3084 y = s_cb(i + 4:i + 1:-1) - s_cb(i + 3:i:-1)
3085 poly_coef_cbl_z(i + 1, 0, &
3086# 502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3087 & 2) = (y(4)*(y(2)**2 + 4*y(2)*y(3) + 4*y(2)*y(4) + y(1)*y(2) + 3*y(3)**2 &
3088 & + 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) &
3089 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)))
3090 poly_coef_cbl_z(i + 1, 0, &
3091# 506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3092 & 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) &
3093 & + 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)) &
3094 & /((y(2) + y(3))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3095 & + y(4)))
3096 poly_coef_cbl_z(i + 1, 0, &
3097# 511 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3098 & 0) = (y(4)*(y(3) + y(4))*(y(2) + y(3) + y(4)))/((y(1) + y(2))*(y(1) + y(2) &
3099 & + y(3))*(y(1) + y(2) + y(3) + y(4)))
3100
3101 poly_coef_cbl_z(i + 1,:,:) = -poly_coef_cbl_z(i + 1,:,:)
3102# 515 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3103 ! Note: negative sign as the direction of taking the difference (dvd) is reversed
3104
3105 y = s_cb(i - 2:i + 1) - s_cb(i - 3:i)
3106 beta_coef_z(i + 1, 3, &
3107# 519 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3108 & 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) &
3109 & + 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) &
3110 & **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 &
3111 & + 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) &
3112 & *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) &
3113 & **3*y(3) + 30*y(2)**3*y(4) + 110*y(2)**2*y(3)**2 + 165*y(2)**2*y(3)*y(4) &
3114 & + 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) &
3115 & *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) &
3116 & **2 + 675*y(3)*y(4)**3 + 996*y(4)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4)) &
3117 & **2*(y(1) + y(2) + y(3) + y(4))**2)
3118 beta_coef_z(i + 1, 3, &
3119# 530 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3120 & 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) &
3121 & **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) &
3122 & + 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) &
3123 & + 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) &
3124 & + 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) &
3125 & *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) &
3126 & *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) &
3127 & *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) &
3128 & **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) &
3129 & **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) &
3130 & *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) &
3131 & + 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) &
3132 & *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) &
3133 & *y(4)**4 + 90*y(3)**5 + 270*y(3)**4*y(4) + 1800*y(3)**3*y(4)**2 + 2655*y(3) &
3134 & **2*y(4)**3 + 4464*y(3)*y(4)**4 + 1767*y(4)**5))/(5*(y(2) + y(3))*(y(3) + y(4)) &
3135 & *(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3136 beta_coef_z(i + 1, 3, &
3137# 547 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3138 & 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) &
3139 & **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) &
3140 & + 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) &
3141 & *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 &
3142 & + 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) &
3143 & *y(3)**2*y(4) + 725*y(3)*y(4)**3 + 220*y(1)*y(3)*y(4)**2 + 1767*y(4)**4 &
3144 & + 105*y(1)*y(4)**3))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
3145 & + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3146 beta_coef_z(i + 1, 3, &
3147# 556 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3148 & 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 &
3149 & + 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 &
3150 & + 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 &
3151 & + 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) &
3152 & + 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) &
3153 & **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) &
3154 & **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) &
3155 & **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) &
3156 & **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) &
3157 & *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) &
3158 & **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) &
3159 & **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) &
3160 & **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) &
3161 & **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) &
3162 & **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) &
3163 & **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) &
3164 & **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) &
3165 & *y(4)**3 + 4224*y(2)**2*y(4)**4 + 180*y(2)*y(3)**5 + 450*y(2)*y(3)**4*y(4) &
3166 & + 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 &
3167 & + 3524*y(2)*y(4)**5 + 45*y(3)**6 + 135*y(3)**5*y(4) + 1395*y(3)**4*y(4)**2 &
3168 & + 2565*y(3)**3*y(4)**3 + 4884*y(3)**2*y(4)**4 + 3624*y(3)*y(4)**5 + 831*y(4)**6)) &
3169 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3170 & + y(3) + y(4))**2)
3171 beta_coef_z(i + 1, 3, &
3172# 580 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3173 & 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) &
3174 & **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) &
3175 & **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) &
3176 & **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) &
3177 & *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) &
3178 & *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) &
3179 & **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) &
3180 & **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) &
3181 & *y(4)**2 + 700*y(2)**2*y(4)**3 + 90*y(2)*y(3)**4 + 180*y(2)*y(3)**3*y(4) &
3182 & + 2205*y(2)*y(3)**2*y(4)**2 + 2115*y(2)*y(3)*y(4)**3 + 3624*y(2)*y(4)**4 &
3183 & + 30*y(3)**5 + 75*y(3)**4*y(4) + 1060*y(3)**3*y(4)**2 + 1515*y(3)**2*y(4)**3 &
3184 & + 3824*y(3)*y(4)**4 + 1662*y(4)**5))/(5*(y(1) + y(2))*(y(2) + y(3))*(y(1) + y(2) &
3185 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3186 beta_coef_z(i + 1, 3, &
3187# 594 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3188 & 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 &
3189 & + 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) &
3190 & **3 + 5*y(3)**4 + 10*y(3)**3*y(4) + 205*y(3)**2*y(4)**2 + 200*y(3)*y(4)**3 &
3191 & + 831*y(4)**4))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) &
3192 & + y(4))**2)
3193
3194 y = s_cb(i - 1:i + 2) - s_cb(i - 2:i + 1)
3195 beta_coef_z(i + 1, 2, &
3196# 602 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3197 & 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 &
3198 & + 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) &
3199 & **3 + 5*y(2)**4 + 10*y(2)**3*y(3) + 205*y(2)**2*y(3)**2 + 200*y(2)*y(3)**3 &
3200 & + 831*y(3)**4))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) &
3201 & + y(4))**2)
3202 beta_coef_z(i + 1, 2, &
3203# 608 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3204 & 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 &
3205 & + 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) &
3206 & - 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 &
3207 & - 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 &
3208 & + 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 &
3209 & + 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 &
3210 & + 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 &
3211 & + 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) &
3212 & **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 &
3213 & - 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 &
3214 & - 3694*y(2)*y(3)**4 + 250*y(2)*y(3)**3*y(4) + 220*y(2)*y(3)**2*y(4)**2 &
3215 & - 3219*y(3)**5 - 1452*y(3)**4*y(4) + 105*y(3)**3*y(4)**2))/(5*(y(2) + y(3))*(y(3) &
3216 & + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4)) &
3217 & **2)
3218 beta_coef_z(i + 1, 2, &
3219# 623 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3220 & 2) = -(4*y(3)**2*(5*y(2)**3*y(3) - 95*y(2)*y(3)**3 - 190*y(2)**2*y(3)**2 &
3221 & + 10*y(2)**3*y(4) + 100*y(3)**3*y(4) - 1562*y(3)**4 - 95*y(1)*y(2)*y(3)**2 &
3222 & + 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) &
3223 & *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)) &
3224 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3225 & + y(4))**2)
3226 beta_coef_z(i + 1, 2, &
3227# 630 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3228 & 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 &
3229 & + 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 &
3230 & + 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 &
3231 & + 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) &
3232 & + 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) &
3233 & **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) &
3234 & **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) &
3235 & **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) &
3236 & **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) &
3237 & *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 &
3238 & + 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) &
3239 & **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 &
3240 & + 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 &
3241 & + 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) &
3242 & **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) &
3243 & *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) &
3244 & + 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 &
3245 & + 6648*y(2)*y(3)**5 + 2814*y(2)*y(3)**4*y(4) - 200*y(2)*y(3)**3*y(4)**2 &
3246 & + 140*y(2)*y(3)**2*y(4)**3 + 30*y(2)*y(3)*y(4)**4 + 3174*y(3)**6 + 3039*y(3) &
3247 & **5*y(4) + 771*y(3)**4*y(4)**2 + 135*y(3)**3*y(4)**3 + 60*y(3)**2*y(4)**4)) &
3248 & /(5*(y(2) + y(3))**2*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3249 & + y(3) + y(4))**2)
3250 beta_coef_z(i + 1, 2, &
3251# 653 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3252 & 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) &
3253 & **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) &
3254 & *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) &
3255 & *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) &
3256 & *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) &
3257 & **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) &
3258 & **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) &
3259 & *y(4)**2 + 20*y(2)**2*y(4)**3 + 3224*y(2)*y(3)**4 - 460*y(2)*y(3)**3*y(4) &
3260 & - 35*y(2)*y(3)**2*y(4)**2 + 25*y(2)*y(3)*y(4)**3 + 3124*y(3)**5 + 1467*y(3) &
3261 & **4*y(4) + 110*y(3)**3*y(4)**2 + 105*y(3)**2*y(4)**3))/(5*(y(1) + y(2))*(y(2) &
3262 & + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4)) &
3263 & **2)
3264 beta_coef_z(i + 1, 2, &
3265# 666 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3266 & 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 &
3267 & - 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)) &
3268 & /(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) + y(3) + y(4))**2)
3269
3270 y = s_cb(i:i + 3) - s_cb(i - 1:i + 2)
3271 beta_coef_z(i + 1, 1, &
3272# 672 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3273 & 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 &
3274 & - 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)) &
3275 & /(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3276 beta_coef_z(i + 1, 1, &
3277# 676 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3278 & 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) &
3279 & *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) &
3280 & **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) &
3281 & **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) &
3282 & **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) &
3283 & **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) &
3284 & **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) &
3285 & *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) &
3286 & + 1562*y(2)**4*y(4) + 400*y(2)**3*y(3)**2 + 200*y(2)**3*y(3)*y(4) + 300*y(2) &
3287 & **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) &
3288 & + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3289 & + y(3) + y(4))**2)
3290 beta_coef_z(i + 1, 1, &
3291# 689 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3292 & 2) = -(4*y(2)**2*(100*y(1)*y(2)**3 - 190*y(2)**2*y(3)**2 + 10*y(1)*y(3)**3 &
3293 & + 5*y(2)*y(3)**3 - 95*y(2)**3*y(3) - 1562*y(2)**4 + 15*y(1)*y(2)*y(3)**2 &
3294 & + 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) &
3295 & *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)) &
3296 & *(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3297 & + y(4))**2)
3298 beta_coef_z(i + 1, 1, &
3299# 696 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3300 & 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) &
3301 & + 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) &
3302 & **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) &
3303 & **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) &
3304 & **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) &
3305 & **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) &
3306 & + 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) &
3307 & **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) &
3308 & **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) &
3309 & **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) &
3310 & **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) &
3311 & - 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) &
3312 & **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) &
3313 & **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) &
3314 & *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) &
3315 & *y(2)*y(4)**4 + 3174*y(2)**6 + 6648*y(2)**5*y(3) + 3324*y(2)**5*y(4) + 4224*y(2) &
3316 & **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) &
3317 & **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) &
3318 & **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) &
3319 & **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) &
3320 & + y(2) + y(3))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3321 beta_coef_z(i + 1, 1, &
3322# 718 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3323 & 4) = (4*y(2)**2*(105*y(1)**2*y(2)**3 + 220*y(1)**2*y(2)**2*y(3) + 110*y(1) &
3324 & **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) &
3325 & **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) &
3326 & *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) &
3327 & + 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) &
3328 & **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) &
3329 & **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) &
3330 & **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) &
3331 & **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 &
3332 & - 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 &
3333 & - 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) &
3334 & **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) &
3335 & + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3336 beta_coef_z(i + 1, 1, &
3337# 732 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3338 & 5) = (4*y(2)**2*(831*y(2)**4 + 200*y(2)**3*y(3) + 100*y(2)**3*y(4) + 205*y(2) &
3339 & **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 &
3340 & + 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) &
3341 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
3342 & + y(3) + y(4))**2)
3343
3344 y = s_cb(i + 1:i + 4) - s_cb(i:i + 3)
3345 beta_coef_z(i + 1, 0, &
3346# 740 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3347 & 0) = (4*y(1)**2*(831*y(1)**4 + 200*y(1)**3*y(2) + 100*y(1)**3*y(3) + 205*y(1) &
3348 & **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 &
3349 & + 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) &
3350 & + 5*y(2)**2*y(3)**2))/(5*(y(3) + y(4))**2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) &
3351 & + y(3) + y(4))**2)
3352 beta_coef_z(i + 1, 0, &
3353# 746 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3354 & 1) = -(4*y(1)**2*(1662*y(1)**5 + 3824*y(1)**4*y(2) + 3624*y(1)**4*y(3) &
3355 & + 1762*y(1)**4*y(4) + 1515*y(1)**3*y(2)**2 + 2115*y(1)**3*y(2)*y(3) + 805*y(1) &
3356 & **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) &
3357 & **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) &
3358 & + 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) &
3359 & **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 &
3360 & + 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) &
3361 & **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) &
3362 & *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 &
3363 & + 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) &
3364 & + 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) &
3365 & **2*y(3)*y(4)**2))/(5*(y(2) + y(3))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) &
3366 & + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3367 beta_coef_z(i + 1, 0, &
3368# 760 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3369 & 2) = (4*y(1)**2*(1767*y(1)**4 + 725*y(1)**3*y(2) + 415*y(1)**3*y(3) + 105*y(4) &
3370 & *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) &
3371 & + 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) &
3372 & **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) &
3373 & + 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) &
3374 & *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) &
3375 & *y(2)*y(3)**2))/(5*(y(1) + y(2))*(y(3) + y(4))*(y(1) + y(2) + y(3))*(y(2) + y(3) &
3376 & + y(4))*(y(1) + y(2) + y(3) + y(4))**2)
3377 beta_coef_z(i + 1, 0, &
3378# 769 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3379 & 3) = (4*y(1)**2*(831*y(1)**6 + 3624*y(1)**5*y(2) + 3524*y(1)**5*y(3) + 1762*y(1) &
3380 & **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) &
3381 & + 4224*y(1)**4*y(3)**2 + 4224*y(1)**4*y(3)*y(4) + 1081*y(1)**4*y(4)**2 &
3382 & + 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) &
3383 & + 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) &
3384 & *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) &
3385 & *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) &
3386 & + 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) &
3387 & **2*y(3)*y(4) + 1390*y(1)**2*y(2)**2*y(4)**2 + 2490*y(1)**2*y(2)*y(3)**3 &
3388 & + 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) &
3389 & **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) &
3390 & **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) &
3391 & *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) &
3392 & **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) &
3393 & **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 &
3394 & + 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) &
3395 & + 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 &
3396 & + 45*y(2)**6 + 180*y(2)**5*y(3) + 90*y(2)**5*y(4) + 270*y(2)**4*y(3)**2 &
3397 & + 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) &
3398 & **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) &
3399 & **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) &
3400 & **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)) &
3401 & **2*(y(2) + y(3) + y(4))**2*(y(1) + y(2) + y(3) + y(4))**2)
3402 beta_coef_z(i + 1, 0, &
3403# 793 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3404 & 4) = -(4*y(1)**2*(1767*y(1)**5 + 4464*y(1)**4*y(2) + 4154*y(1)**4*y(3) &
3405 & + 2077*y(1)**4*y(4) + 2655*y(1)**3*y(2)**2 + 4010*y(1)**3*y(2)*y(3) + 2005*y(1) &
3406 & **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) &
3407 & **2 + 1800*y(1)**2*y(2)**3 + 4000*y(1)**2*y(2)**2*y(3) + 2000*y(1)**2*y(2) &
3408 & **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) &
3409 & **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) &
3410 & **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) &
3411 & + 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) &
3412 & + 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) &
3413 & + 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) &
3414 & *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 &
3415 & + 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) &
3416 & *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) &
3417 & + 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) &
3418 & **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)) &
3419 & *(y(2) + y(3))*(y(1) + y(2) + y(3))**2*(y(2) + y(3) + y(4))*(y(1) + y(2) + y(3) &
3420 & + y(4))**2)
3421 beta_coef_z(i + 1, 0, &
3422# 811 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3423 & 5) = (4*y(1)**2*(996*y(1)**4 + 675*y(1)**3*y(2) + 450*y(1)**3*y(3) + 225*y(1) &
3424 & **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) &
3425 & + 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) &
3426 & *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 &
3427 & + 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) &
3428 & **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) &
3429 & + 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) &
3430 & **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) &
3431 & + 5*y(3)**2*y(4)**2))/(5*(y(1) + y(2))**2*(y(1) + y(2) + y(3))**2*(y(1) + y(2) &
3432 & + y(3) + y(4))**2)
3433 end do
3434 else
3435 ! (Fu, et al., 2016) Table 2 (for right flux)
3436 d_cbl_z(0,:) = 18._wp/35._wp
3437# 825 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3438 d_cbl_z(1,:) = 3._wp/35._wp
3439# 826 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3440 d_cbl_z(2,:) = 9._wp/35._wp
3441# 827 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3442 d_cbl_z(3,:) = 1._wp/35._wp
3443# 828 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3444 d_cbl_z(4,:) = 4._wp/35._wp
3445# 829 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3446
3447 d_cbr_z(0,:) = 18._wp/35._wp
3448# 831 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3449 d_cbr_z(1,:) = 9._wp/35._wp
3450# 832 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3451 d_cbr_z(2,:) = 3._wp/35._wp
3452# 833 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3453 d_cbr_z(3,:) = 4._wp/35._wp
3454# 834 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3455 d_cbr_z(4,:) = 1._wp/35._wp
3456# 835 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3457 end if
3458 end if
3459 end if
3460# 839 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3461
3462 ! Detect whether grid spacing is uniform (enables cancellation-free sum-of-squares beta). Tolerance uses sqrt(epsilon) so it
3463 ! works in both double and single precision: ~1.5e-8 relative in double, ~3.5e-4 in single - above FP noise, below real
3464 ! stretching.
3465 uniform_grid(weno_dir) = .true.
3466 h0 = (s_cb(s) - s_cb(0))/real(s, wp)
3467 do i = 0, s - 1
3468 if (abs((s_cb(i + 1) - s_cb(i)) - h0) > sqrt(epsilon(h0))*abs(h0)) then
3469 uniform_grid(weno_dir) = .false.
3470 exit
3471 end if
3472 end do
3473
3474 if (weno_dir == 1) then
3475
3476# 853 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3477#if defined(MFC_OpenACC)
3478# 853 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3479!$acc update device(poly_coef_cbL_x, poly_coef_cbR_x, d_cbL_x, d_cbR_x, beta_coef_x, uniform_grid)
3480# 853 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3481#elif defined(MFC_OpenMP)
3482# 853 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3483!$omp target update to(poly_coef_cbL_x, poly_coef_cbR_x, d_cbL_x, d_cbR_x, beta_coef_x, uniform_grid)
3484# 853 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3485#endif
3486# 854 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3487 else if (weno_dir == 2) then
3488
3489# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3490#if defined(MFC_OpenACC)
3491# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3492!$acc update device(poly_coef_cbL_y, poly_coef_cbR_y, d_cbL_y, d_cbR_y, beta_coef_y, uniform_grid)
3493# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3494#elif defined(MFC_OpenMP)
3495# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3496!$omp target update to(poly_coef_cbL_y, poly_coef_cbR_y, d_cbL_y, d_cbR_y, beta_coef_y, uniform_grid)
3497# 855 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3498#endif
3499# 856 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3500 else
3501
3502# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3503#if defined(MFC_OpenACC)
3504# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3505!$acc update device(poly_coef_cbL_z, poly_coef_cbR_z, d_cbL_z, d_cbR_z, beta_coef_z, uniform_grid)
3506# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3507#elif defined(MFC_OpenMP)
3508# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3509!$omp target update to(poly_coef_cbL_z, poly_coef_cbR_z, d_cbL_z, d_cbR_z, beta_coef_z, uniform_grid)
3510# 857 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3511#endif
3512# 858 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3513 end if
3514
3515 ! Nullifying WENO coefficients and cell-boundary locations pointers
3516
3517 nullify (s_cb)
3518
3519 end subroutine s_compute_weno_coefficients
3520
3521 subroutine s_pack_weno_input_arr(v_vf)
3522
3523 type(scalar_field), dimension(1:), intent(in) :: v_vf
3524 integer :: i, j, k, l, n_vars
3525
3526
3527# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3528
3529# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3530#if defined(MFC_OpenACC)
3531# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3532!$acc parallel loop collapse(4) gang vector default(present)
3533# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3534#elif defined(MFC_OpenMP)
3535# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3536
3537# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3538
3539# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3540
3541# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3542!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3543# 871 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3544#endif
3545# 872 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3546 do i = 1, v_size
3547 do l = idwbuff(3)%beg, idwbuff(3)%end
3548 do k = idwbuff(2)%beg, idwbuff(2)%end
3549 do j = idwbuff(1)%beg, idwbuff(1)%end
3550 v_rs_weno(j, k, l, i) = v_vf(i)%sf(j, k, l)
3551 end do
3552 end do
3553 end do
3554 end do
3555
3556# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3557#if defined(MFC_OpenACC)
3558# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3559!$acc end parallel loop
3560# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3561#elif defined(MFC_OpenMP)
3562# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3563
3564# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3565!$omp end target teams loop
3566# 881 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3567#endif
3568# 882 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3569
3570 end subroutine s_pack_weno_input_arr
3571
3572 !> Perform WENO reconstruction of left and right cell-boundary values from cell-averaged variables
3573 subroutine s_weno(v_vf, vL_rs_vf_x, vR_rs_vf_x, weno_dir, is1_weno_d, is2_weno_d, is3_weno_d)
3574
3575 type(scalar_field), dimension(1:), intent(in) :: v_vf
3576 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vl_rs_vf_x
3577 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vr_rs_vf_x
3578 integer, intent(in) :: weno_dir
3579 type(int_bounds_info), intent(in) :: is1_weno_d, is2_weno_d, is3_weno_d
3580
3581# 902 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3582 real(wp), dimension(-weno_polyn:weno_polyn - 1) :: dvd
3583 real(wp), dimension(0:weno_num_stencils) :: poly
3584 real(wp), dimension(0:weno_num_stencils) :: alpha
3585 real(wp), dimension(0:weno_num_stencils) :: omega
3586 real(wp), dimension(0:weno_num_stencils) :: beta
3587 real(wp), dimension(0:weno_num_stencils) :: delta
3588# 909 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3589 real(wp), dimension(-3:3) :: v !< temporary field value array for clarity (WENO7 only)
3590 real(wp) :: tau
3591 integer :: i, j, k, l, q
3592 real(wp) :: vp0, vp1, vp2, vp3, vm1, vm2, vm3
3593
3594 is1_weno = is1_weno_d
3595 is2_weno = is2_weno_d
3596 is3_weno = is3_weno_d
3597
3598
3599# 918 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3600#if defined(MFC_OpenACC)
3601# 918 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3602!$acc update device(is1_weno, is2_weno, is3_weno)
3603# 918 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3604#elif defined(MFC_OpenMP)
3605# 918 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3606!$omp target update to(is1_weno, is2_weno, is3_weno)
3607# 918 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3608#endif
3609# 919 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3610
3611 v_size = ubound(v_vf, 1)
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(v_size)
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(v_size)
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 if (weno_order == 1) then
3626 if (weno_dir == 1) then
3627
3628# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3629
3630# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3631#if defined(MFC_OpenACC)
3632# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3633!$acc parallel loop collapse(4) gang vector default(present)
3634# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3635#elif defined(MFC_OpenMP)
3636# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3637
3638# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3639
3640# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3641
3642# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3643!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3644# 925 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3645#endif
3646# 926 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3647 do i = 1, v_size
3648 do l = is3_weno%beg, is3_weno%end
3649 do k = is2_weno%beg, is2_weno%end
3650 do j = is1_weno%beg, is1_weno%end
3651 vl_rs_vf_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
3652 vr_rs_vf_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
3653 end do
3654 end do
3655 end do
3656 end do
3657
3658# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3659#if defined(MFC_OpenACC)
3660# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3661!$acc end parallel loop
3662# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3663#elif defined(MFC_OpenMP)
3664# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3665
3666# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3667!$omp end target teams loop
3668# 936 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3669#endif
3670# 937 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3671 else if (weno_dir == 2) then
3672
3673# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3674
3675# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3676#if defined(MFC_OpenACC)
3677# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3678!$acc parallel loop collapse(4) gang vector default(present)
3679# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3680#elif defined(MFC_OpenMP)
3681# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3682
3683# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3684
3685# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3686
3687# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3688!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3689# 938 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3690#endif
3691# 939 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3692 do i = 1, v_size
3693 do l = is3_weno%beg, is3_weno%end
3694 do j = is1_weno%beg, is1_weno%end
3695 do k = is2_weno%beg, is2_weno%end
3696 vl_rs_vf_x(k, j, l, i) = v_vf(i)%sf(k, j, l)
3697 vr_rs_vf_x(k, j, l, i) = v_vf(i)%sf(k, j, l)
3698 end do
3699 end do
3700 end do
3701 end do
3702
3703# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3704#if defined(MFC_OpenACC)
3705# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3706!$acc end parallel loop
3707# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3708#elif defined(MFC_OpenMP)
3709# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3710
3711# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3712!$omp end target teams loop
3713# 949 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3714#endif
3715# 950 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3716 else if (weno_dir == 3) then
3717
3718# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3719
3720# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3721#if defined(MFC_OpenACC)
3722# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3723!$acc parallel loop collapse(4) gang vector default(present)
3724# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3725#elif defined(MFC_OpenMP)
3726# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3727
3728# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3729
3730# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3731
3732# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3733!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
3734# 951 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3735#endif
3736# 952 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3737 do i = 1, v_size
3738 do j = is1_weno%beg, is1_weno%end
3739 do k = is2_weno%beg, is2_weno%end
3740 do l = is3_weno%beg, is3_weno%end
3741 vl_rs_vf_x(l, k, j, i) = v_vf(i)%sf(l, k, j)
3742 vr_rs_vf_x(l, k, j, i) = v_vf(i)%sf(l, k, j)
3743 end do
3744 end do
3745 end do
3746 end do
3747
3748# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3749#if defined(MFC_OpenACC)
3750# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3751!$acc end parallel loop
3752# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3753#elif defined(MFC_OpenMP)
3754# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3755
3756# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3757!$omp end target teams loop
3758# 962 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3759#endif
3760# 963 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3761 end if
3762 end if
3763
3764 if (weno_order /= 1) then
3765 call s_pack_weno_input_arr(v_vf)
3766 end if
3767
3768 if (weno_order == 3) then
3769# 975 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3770# 976 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3771# 977 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3772 if (weno_dir == 1) then
3773# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3774
3775# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3776
3777# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3778#if defined(MFC_OpenACC)
3779# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3780!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3781# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3782#elif defined(MFC_OpenMP)
3783# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3784
3785# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3786
3787# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3788
3789# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3790!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
3791# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3792!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3793# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3794#endif
3795# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3796 do l = is3_weno%beg, is3_weno%end
3797# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3798 do k = is2_weno%beg, is2_weno%end
3799# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3800 do j = is1_weno%beg, is1_weno%end
3801# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3802 do i = 1, v_size
3803 ! reconstruct from left side
3804
3805 alpha(:) = 0._wp
3806
3807 vp0 = v_rs_weno(j, k, l, i)
3808# 988 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3809 vm1 = v_rs_weno(j - 1, k, l, i)
3810# 989 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3811 vp1 = v_rs_weno(j + 1, k, l, i)
3812# 990 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3813
3814 dvd(0) = vp1 - vp0
3815 dvd(-1) = vp0 - vm1
3816
3817 poly(0) = vp0 + poly_coef_cbl_x(j, 0, 0)*dvd(0)
3818# 995 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3819 poly(1) = vp0 + poly_coef_cbl_x(j, 1, 0)*dvd(-1)
3820# 996 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3821
3822 beta(0) = beta_coef_x(j, 0, 0)*dvd(0)*dvd(0) + weno_eps
3823# 998 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3824 beta(1) = beta_coef_x(j, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
3825# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3826
3827 if (wenojs) then
3828 do q = 0, weno_num_stencils
3829 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
3830# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3831 end do
3832 else if (mapped_weno) then
3833 do q = 0, weno_num_stencils
3834 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
3835# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3836 end do
3837 omega = alpha/sum(alpha)
3838 do q = 0, weno_num_stencils
3839 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
3840# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3841 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
3842# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3843 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
3844# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3845 end do
3846 else if (wenoz) then
3847 ! Borges, et al. (2008)
3848 tau = abs(beta(1) - beta(0))
3849 do q = 0, weno_num_stencils
3850 alpha(q) = d_cbl_x(q, j)*(1._wp + tau/beta(q))
3851# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3852 end do
3853 end if
3854 omega = alpha/sum(alpha)
3855
3856 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
3857
3858 ! reconstruct from right side
3859
3860 poly(0) = vp0 + poly_coef_cbr_x(j, 0, 0)*dvd(0)
3861# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3862 poly(1) = vp0 + poly_coef_cbr_x(j, 1, 0)*dvd(-1)
3863# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3864
3865 if (wenojs) then
3866 do q = 0, weno_num_stencils
3867 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
3868# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3869 end do
3870 else if (mapped_weno) then
3871 do q = 0, weno_num_stencils
3872 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
3873# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3874 end do
3875 omega = alpha/sum(alpha)
3876 do q = 0, weno_num_stencils
3877 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
3878# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3879 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
3880# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3881 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
3882# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3883 end do
3884 else if (wenoz) then
3885 do q = 0, weno_num_stencils
3886 alpha(q) = d_cbr_x(q, j)*(1._wp + tau/beta(q))
3887# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3888 end do
3889 end if
3890 omega = alpha/sum(alpha)
3891
3892 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
3893 end do
3894 end do
3895 end do
3896 end do
3897
3898# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3899#if defined(MFC_OpenACC)
3900# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3901!$acc end parallel loop
3902# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3903#elif defined(MFC_OpenMP)
3904# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3905
3906# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3907!$omp end target teams loop
3908# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3909#endif
3910# 1057 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3911 end if
3912# 975 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3913# 976 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3914# 977 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3915 if (weno_dir == 2) then
3916# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3917
3918# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3919
3920# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3921#if defined(MFC_OpenACC)
3922# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3923!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3924# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3925#elif defined(MFC_OpenMP)
3926# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3927
3928# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3929
3930# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3931
3932# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3933!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
3934# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3935!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
3936# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3937#endif
3938# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3939 do l = is3_weno%beg, is3_weno%end
3940# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3941 do k = is1_weno%beg, is1_weno%end
3942# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3943 do j = is2_weno%beg, is2_weno%end
3944# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3945 do i = 1, v_size
3946 ! reconstruct from left side
3947
3948 alpha(:) = 0._wp
3949
3950 vp0 = v_rs_weno(j, k, l, i)
3951# 988 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3952 vm1 = v_rs_weno(j, k - 1, l, i)
3953# 989 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3954 vp1 = v_rs_weno(j, k + 1, l, i)
3955# 990 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3956
3957 dvd(0) = vp1 - vp0
3958 dvd(-1) = vp0 - vm1
3959
3960 poly(0) = vp0 + poly_coef_cbl_y(k, 0, 0)*dvd(0)
3961# 995 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3962 poly(1) = vp0 + poly_coef_cbl_y(k, 1, 0)*dvd(-1)
3963# 996 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3964
3965 beta(0) = beta_coef_y(k, 0, 0)*dvd(0)*dvd(0) + weno_eps
3966# 998 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3967 beta(1) = beta_coef_y(k, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
3968# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3969
3970 if (wenojs) then
3971 do q = 0, weno_num_stencils
3972 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
3973# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3974 end do
3975 else if (mapped_weno) then
3976 do q = 0, weno_num_stencils
3977 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
3978# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3979 end do
3980 omega = alpha/sum(alpha)
3981 do q = 0, weno_num_stencils
3982 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
3983# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3984 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
3985# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3986 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
3987# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3988 end do
3989 else if (wenoz) then
3990 ! Borges, et al. (2008)
3991 tau = abs(beta(1) - beta(0))
3992 do q = 0, weno_num_stencils
3993 alpha(q) = d_cbl_y(q, k)*(1._wp + tau/beta(q))
3994# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
3995 end do
3996 end if
3997 omega = alpha/sum(alpha)
3998
3999 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4000
4001 ! reconstruct from right side
4002
4003 poly(0) = vp0 + poly_coef_cbr_y(k, 0, 0)*dvd(0)
4004# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4005 poly(1) = vp0 + poly_coef_cbr_y(k, 1, 0)*dvd(-1)
4006# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4007
4008 if (wenojs) then
4009 do q = 0, weno_num_stencils
4010 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4011# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4012 end do
4013 else if (mapped_weno) then
4014 do q = 0, weno_num_stencils
4015 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4016# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4017 end do
4018 omega = alpha/sum(alpha)
4019 do q = 0, weno_num_stencils
4020 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
4021# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4022 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
4023# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4024 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
4025# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4026 end do
4027 else if (wenoz) then
4028 do q = 0, weno_num_stencils
4029 alpha(q) = d_cbr_y(q, k)*(1._wp + tau/beta(q))
4030# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4031 end do
4032 end if
4033 omega = alpha/sum(alpha)
4034
4035 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4036 end do
4037 end do
4038 end do
4039 end do
4040
4041# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4042#if defined(MFC_OpenACC)
4043# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4044!$acc end parallel loop
4045# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4046#elif defined(MFC_OpenMP)
4047# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4048
4049# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4050!$omp end target teams loop
4051# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4052#endif
4053# 1057 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4054 end if
4055# 975 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4056# 976 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4057# 977 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4058 if (weno_dir == 3) then
4059# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4060
4061# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4062
4063# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4064#if defined(MFC_OpenACC)
4065# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4066!$acc parallel loop collapse(4) gang vector default(present) private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
4067# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4068#elif defined(MFC_OpenMP)
4069# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4070
4071# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4072
4073# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4074
4075# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4076!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4077# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4078!$omp& private(beta, dvd, poly, omega, alpha, tau, q, vp0, vp1, vm1)
4079# 978 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4080#endif
4081# 979 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4082 do l = is1_weno%beg, is1_weno%end
4083# 980 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4084 do k = is2_weno%beg, is2_weno%end
4085# 981 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4086 do j = is3_weno%beg, is3_weno%end
4087# 982 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4088 do i = 1, v_size
4089 ! reconstruct from left side
4090
4091 alpha(:) = 0._wp
4092
4093 vp0 = v_rs_weno(j, k, l, i)
4094# 988 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4095 vm1 = v_rs_weno(j, k, l - 1, i)
4096# 989 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4097 vp1 = v_rs_weno(j, k, l + 1, i)
4098# 990 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4099
4100 dvd(0) = vp1 - vp0
4101 dvd(-1) = vp0 - vm1
4102
4103 poly(0) = vp0 + poly_coef_cbl_z(l, 0, 0)*dvd(0)
4104# 995 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4105 poly(1) = vp0 + poly_coef_cbl_z(l, 1, 0)*dvd(-1)
4106# 996 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4107
4108 beta(0) = beta_coef_z(l, 0, 0)*dvd(0)*dvd(0) + weno_eps
4109# 998 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4110 beta(1) = beta_coef_z(l, 1, 0)*dvd(-1)*dvd(-1) + weno_eps
4111# 999 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4112
4113 if (wenojs) then
4114 do q = 0, weno_num_stencils
4115 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4116# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4117 end do
4118 else if (mapped_weno) then
4119 do q = 0, weno_num_stencils
4120 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4121# 1007 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4122 end do
4123 omega = alpha/sum(alpha)
4124 do q = 0, weno_num_stencils
4125 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
4126# 1011 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4127 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
4128# 1012 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4129 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
4130# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4131 end do
4132 else if (wenoz) then
4133 ! Borges, et al. (2008)
4134 tau = abs(beta(1) - beta(0))
4135 do q = 0, weno_num_stencils
4136 alpha(q) = d_cbl_z(q, l)*(1._wp + tau/beta(q))
4137# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4138 end do
4139 end if
4140 omega = alpha/sum(alpha)
4141
4142 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4143
4144 ! reconstruct from right side
4145
4146 poly(0) = vp0 + poly_coef_cbr_z(l, 0, 0)*dvd(0)
4147# 1028 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4148 poly(1) = vp0 + poly_coef_cbr_z(l, 1, 0)*dvd(-1)
4149# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4150
4151 if (wenojs) then
4152 do q = 0, weno_num_stencils
4153 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
4154# 1033 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4155 end do
4156 else if (mapped_weno) then
4157 do q = 0, weno_num_stencils
4158 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
4159# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4160 end do
4161 omega = alpha/sum(alpha)
4162 do q = 0, weno_num_stencils
4163 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
4164# 1041 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4165 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
4166# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4167 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
4168# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4169 end do
4170 else if (wenoz) then
4171 do q = 0, weno_num_stencils
4172 alpha(q) = d_cbr_z(q, l)*(1._wp + tau/beta(q))
4173# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4174 end do
4175 end if
4176 omega = alpha/sum(alpha)
4177
4178 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1)
4179 end do
4180 end do
4181 end do
4182 end do
4183
4184# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4185#if defined(MFC_OpenACC)
4186# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4187!$acc end parallel loop
4188# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4189#elif defined(MFC_OpenMP)
4190# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4191
4192# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4193!$omp end target teams loop
4194# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4195#endif
4196# 1057 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4197 end if
4198# 1059 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4199 end if
4200 if (weno_order == 5) then
4201# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4202# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4203# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4204# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4205 if (weno_dir == 1) then
4206# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4207
4208# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4209
4210# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4211#if defined(MFC_OpenACC)
4212# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4213!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4214# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4215#elif defined(MFC_OpenMP)
4216# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4217
4218# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4219
4220# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4221
4222# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4223!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4224# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4225!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4226# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4227#endif
4228# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4229 do l = is3_weno%beg, is3_weno%end
4230# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4231 do k = is2_weno%beg, is2_weno%end
4232# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4233 do j = is1_weno%beg, is1_weno%end
4234# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4235
4236# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4237#if defined(MFC_OpenACC)
4238# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4239!$acc loop seq
4240# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4241#elif defined(MFC_OpenMP)
4242# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4243
4244# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4245#endif
4246# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4247 do i = 1, v_size
4248 ! reconstruct from left side
4249
4250 alpha(:) = 0._wp
4251
4252 vp0 = v_rs_weno(j, k, l, i)
4253# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4254 vm1 = v_rs_weno(j - 1, k, l, i)
4255# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4256 vm2 = v_rs_weno(j - 2, k, l, i)
4257# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4258 vp1 = v_rs_weno(j + 1, k, l, i)
4259# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4260 vp2 = v_rs_weno(j + 2, k, l, i)
4261# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4262
4263 dvd(1) = vp2 - vp1
4264 dvd(0) = vp1 - vp0
4265 dvd(-1) = vp0 - vm1
4266 dvd(-2) = vm1 - vm2
4267
4268 poly(0) = vp0 + poly_coef_cbl_x(j, 0, &
4269# 1092 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4270 & 0)*dvd(1) + poly_coef_cbl_x(j, 0, 1)*dvd(0)
4271# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4272 poly(1) = vp0 + poly_coef_cbl_x(j, 1, &
4273# 1094 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4274 & 0)*dvd(0) + poly_coef_cbl_x(j, 1, 1)*dvd(-1)
4275# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4276 poly(2) = vp0 + poly_coef_cbl_x(j, 2, &
4277# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4278 & 0)*dvd(-1) + poly_coef_cbl_x(j, 2, 1)*dvd(-2)
4279# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4280
4281 if (uniform_grid(1)) then
4282# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4283 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4284 & + weno_eps
4285 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4286 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4287 & + weno_eps
4288 else
4289 beta(0) = beta_coef_x(j, 0, 0)*dvd(1)*dvd(1) + beta_coef_x(j, &
4290# 1106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4291 & 0, 1)*dvd(1)*dvd(0) + beta_coef_x(j, 0, 2)*dvd(0)*dvd(0) + weno_eps
4292# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4293 beta(1) = beta_coef_x(j, 1, 0)*dvd(0)*dvd(0) + beta_coef_x(j, &
4294# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4295 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_x(j, 1, &
4296# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4297 & 2)*dvd(-1)*dvd(-1) + weno_eps
4298 beta(2) = beta_coef_x(j, 2, &
4299# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4300 & 0)*dvd(-1)*dvd(-1) + beta_coef_x(j, 2, &
4301# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4302 & 1)*dvd(-1)*dvd(-2) + beta_coef_x(j, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4303# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4304 end if
4305
4306 if (wenojs) then
4307 do q = 0, weno_num_stencils
4308 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
4309# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4310 end do
4311 else if (mapped_weno) then
4312 do q = 0, weno_num_stencils
4313 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
4314# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4315 end do
4316 omega = alpha/sum(alpha)
4317 do q = 0, weno_num_stencils
4318 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
4319# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4320 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
4321# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4322 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
4323# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4324 end do
4325 else if (wenoz) then
4326 ! Borges, et al. (2008)
4327
4328 tau = abs(beta(2) - beta(0)) ! Equation 25
4329
4330# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4331#if defined(MFC_OpenACC)
4332# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4333!$acc loop seq
4334# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4335#elif defined(MFC_OpenMP)
4336# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4337
4338# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4339#endif
4340# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4341 do q = 0, weno_num_stencils
4342 alpha(q) = d_cbl_x(q, j)*(1._wp + (tau/beta(q)))
4343# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4344 ! Equation 28 (note: weno_eps was already added to beta)
4345 end do
4346 else if (teno) then
4347 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4348 tau = abs(beta(2) - beta(0))
4349
4350# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4351#if defined(MFC_OpenACC)
4352# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4353!$acc loop seq
4354# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4355#elif defined(MFC_OpenMP)
4356# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4357
4358# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4359#endif
4360# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4361 do q = 0, weno_num_stencils
4362 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4363 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4364 alpha(q) = (alpha(q)**3._wp)**2._wp
4365 end do
4366 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4367
4368
4369# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4370#if defined(MFC_OpenACC)
4371# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4372!$acc loop seq
4373# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4374#elif defined(MFC_OpenMP)
4375# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4376
4377# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4378#endif
4379# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4380 do q = 0, weno_num_stencils
4381 if (omega(q) < teno_ct) then ! Equation 26
4382 delta(q) = 0._wp
4383 else
4384 delta(q) = 1._wp
4385 end if
4386 alpha(q) = delta(q)*d_cbl_x(q, j) ! Equation 27
4387# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4388 end do
4389 end if
4390
4391 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4392 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4393 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4394
4395 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4396
4397 ! reconstruct from right side
4398
4399 poly(0) = vp0 + poly_coef_cbr_x(j, 0, &
4400# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4401 & 0)*dvd(1) + poly_coef_cbr_x(j, 0, 1)*dvd(0)
4402# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4403 poly(1) = vp0 + poly_coef_cbr_x(j, 1, &
4404# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4405 & 0)*dvd(0) + poly_coef_cbr_x(j, 1, 1)*dvd(-1)
4406# 1172 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4407 poly(2) = vp0 + poly_coef_cbr_x(j, 2, &
4408# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4409 & 0)*dvd(-1) + poly_coef_cbr_x(j, 2, 1)*dvd(-2)
4410# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4411
4412 if (wenojs) then
4413 do q = 0, weno_num_stencils
4414 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
4415# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4416 end do
4417 else if (mapped_weno) then
4418 do q = 0, weno_num_stencils
4419 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
4420# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4421 end do
4422 omega = alpha/sum(alpha)
4423 do q = 0, weno_num_stencils
4424 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
4425# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4426 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
4427# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4428 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
4429# 1188 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4430 end do
4431 else if (wenoz) then
4432
4433# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4434#if defined(MFC_OpenACC)
4435# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4436!$acc loop seq
4437# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4438#elif defined(MFC_OpenMP)
4439# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4440
4441# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4442#endif
4443# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4444 do q = 0, weno_num_stencils
4445 alpha(q) = d_cbr_x(q, j)*(1._wp + (tau/beta(q)))
4446# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4447 end do
4448 else if (teno) then
4449
4450# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4451#if defined(MFC_OpenACC)
4452# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4453!$acc loop seq
4454# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4455#elif defined(MFC_OpenMP)
4456# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4457
4458# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4459#endif
4460# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4461 do q = 0, weno_num_stencils
4462 alpha(q) = delta(q)*d_cbr_x(q, j)
4463# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4464 end do
4465 end if
4466
4467 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4468 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4469 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4470
4471 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4472 end do
4473 end do
4474 end do
4475 end do
4476
4477# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4478#if defined(MFC_OpenACC)
4479# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4480!$acc end parallel loop
4481# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4482#elif defined(MFC_OpenMP)
4483# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4484
4485# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4486!$omp end target teams loop
4487# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4488#endif
4489# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4490
4491 if (mp_weno) then
4492 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
4493 end if
4494 end if
4495# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4496# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4497# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4498 if (weno_dir == 2) then
4499# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4500
4501# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4502
4503# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4504#if defined(MFC_OpenACC)
4505# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4506!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4507# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4508#elif defined(MFC_OpenMP)
4509# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4510
4511# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4512
4513# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4514
4515# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4516!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4517# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4518!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4519# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4520#endif
4521# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4522 do l = is3_weno%beg, is3_weno%end
4523# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4524 do k = is1_weno%beg, is1_weno%end
4525# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4526 do j = is2_weno%beg, is2_weno%end
4527# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4528
4529# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4530#if defined(MFC_OpenACC)
4531# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4532!$acc loop seq
4533# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4534#elif defined(MFC_OpenMP)
4535# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4536
4537# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4538#endif
4539# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4540 do i = 1, v_size
4541 ! reconstruct from left side
4542
4543 alpha(:) = 0._wp
4544
4545 vp0 = v_rs_weno(j, k, l, i)
4546# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4547 vm1 = v_rs_weno(j, k - 1, l, i)
4548# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4549 vm2 = v_rs_weno(j, k - 2, l, i)
4550# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4551 vp1 = v_rs_weno(j, k + 1, l, i)
4552# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4553 vp2 = v_rs_weno(j, k + 2, l, i)
4554# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4555
4556 dvd(1) = vp2 - vp1
4557 dvd(0) = vp1 - vp0
4558 dvd(-1) = vp0 - vm1
4559 dvd(-2) = vm1 - vm2
4560
4561 poly(0) = vp0 + poly_coef_cbl_y(k, 0, &
4562# 1092 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4563 & 0)*dvd(1) + poly_coef_cbl_y(k, 0, 1)*dvd(0)
4564# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4565 poly(1) = vp0 + poly_coef_cbl_y(k, 1, &
4566# 1094 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4567 & 0)*dvd(0) + poly_coef_cbl_y(k, 1, 1)*dvd(-1)
4568# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4569 poly(2) = vp0 + poly_coef_cbl_y(k, 2, &
4570# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4571 & 0)*dvd(-1) + poly_coef_cbl_y(k, 2, 1)*dvd(-2)
4572# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4573
4574 if (uniform_grid(2)) then
4575# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4576 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4577 & + weno_eps
4578 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4579 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4580 & + weno_eps
4581 else
4582 beta(0) = beta_coef_y(k, 0, 0)*dvd(1)*dvd(1) + beta_coef_y(k, &
4583# 1106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4584 & 0, 1)*dvd(1)*dvd(0) + beta_coef_y(k, 0, 2)*dvd(0)*dvd(0) + weno_eps
4585# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4586 beta(1) = beta_coef_y(k, 1, 0)*dvd(0)*dvd(0) + beta_coef_y(k, &
4587# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4588 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_y(k, 1, &
4589# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4590 & 2)*dvd(-1)*dvd(-1) + weno_eps
4591 beta(2) = beta_coef_y(k, 2, &
4592# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4593 & 0)*dvd(-1)*dvd(-1) + beta_coef_y(k, 2, &
4594# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4595 & 1)*dvd(-1)*dvd(-2) + beta_coef_y(k, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4596# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4597 end if
4598
4599 if (wenojs) then
4600 do q = 0, weno_num_stencils
4601 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
4602# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4603 end do
4604 else if (mapped_weno) then
4605 do q = 0, weno_num_stencils
4606 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
4607# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4608 end do
4609 omega = alpha/sum(alpha)
4610 do q = 0, weno_num_stencils
4611 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
4612# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4613 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
4614# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4615 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
4616# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4617 end do
4618 else if (wenoz) then
4619 ! Borges, et al. (2008)
4620
4621 tau = abs(beta(2) - beta(0)) ! Equation 25
4622
4623# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4624#if defined(MFC_OpenACC)
4625# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4626!$acc loop seq
4627# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4628#elif defined(MFC_OpenMP)
4629# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4630
4631# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4632#endif
4633# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4634 do q = 0, weno_num_stencils
4635 alpha(q) = d_cbl_y(q, k)*(1._wp + (tau/beta(q)))
4636# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4637 ! Equation 28 (note: weno_eps was already added to beta)
4638 end do
4639 else if (teno) then
4640 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4641 tau = abs(beta(2) - beta(0))
4642
4643# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4644#if defined(MFC_OpenACC)
4645# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4646!$acc loop seq
4647# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4648#elif defined(MFC_OpenMP)
4649# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4650
4651# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4652#endif
4653# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4654 do q = 0, weno_num_stencils
4655 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4656 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4657 alpha(q) = (alpha(q)**3._wp)**2._wp
4658 end do
4659 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4660
4661
4662# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4663#if defined(MFC_OpenACC)
4664# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4665!$acc loop seq
4666# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4667#elif defined(MFC_OpenMP)
4668# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4669
4670# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4671#endif
4672# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4673 do q = 0, weno_num_stencils
4674 if (omega(q) < teno_ct) then ! Equation 26
4675 delta(q) = 0._wp
4676 else
4677 delta(q) = 1._wp
4678 end if
4679 alpha(q) = delta(q)*d_cbl_y(q, k) ! Equation 27
4680# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4681 end do
4682 end if
4683
4684 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4685 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4686 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4687
4688 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4689
4690 ! reconstruct from right side
4691
4692 poly(0) = vp0 + poly_coef_cbr_y(k, 0, &
4693# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4694 & 0)*dvd(1) + poly_coef_cbr_y(k, 0, 1)*dvd(0)
4695# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4696 poly(1) = vp0 + poly_coef_cbr_y(k, 1, &
4697# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4698 & 0)*dvd(0) + poly_coef_cbr_y(k, 1, 1)*dvd(-1)
4699# 1172 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4700 poly(2) = vp0 + poly_coef_cbr_y(k, 2, &
4701# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4702 & 0)*dvd(-1) + poly_coef_cbr_y(k, 2, 1)*dvd(-2)
4703# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4704
4705 if (wenojs) then
4706 do q = 0, weno_num_stencils
4707 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4708# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4709 end do
4710 else if (mapped_weno) then
4711 do q = 0, weno_num_stencils
4712 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
4713# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4714 end do
4715 omega = alpha/sum(alpha)
4716 do q = 0, weno_num_stencils
4717 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
4718# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4719 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
4720# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4721 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
4722# 1188 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4723 end do
4724 else if (wenoz) then
4725
4726# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4727#if defined(MFC_OpenACC)
4728# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4729!$acc loop seq
4730# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4731#elif defined(MFC_OpenMP)
4732# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4733
4734# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4735#endif
4736# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4737 do q = 0, weno_num_stencils
4738 alpha(q) = d_cbr_y(q, k)*(1._wp + (tau/beta(q)))
4739# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4740 end do
4741 else if (teno) then
4742
4743# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4744#if defined(MFC_OpenACC)
4745# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4746!$acc loop seq
4747# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4748#elif defined(MFC_OpenMP)
4749# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4750
4751# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4752#endif
4753# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4754 do q = 0, weno_num_stencils
4755 alpha(q) = delta(q)*d_cbr_y(q, k)
4756# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4757 end do
4758 end if
4759
4760 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4761 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4762 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4763
4764 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4765 end do
4766 end do
4767 end do
4768 end do
4769
4770# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4771#if defined(MFC_OpenACC)
4772# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4773!$acc end parallel loop
4774# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4775#elif defined(MFC_OpenMP)
4776# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4777
4778# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4779!$omp end target teams loop
4780# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4781#endif
4782# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4783
4784 if (mp_weno) then
4785 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
4786 end if
4787 end if
4788# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4789# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4790# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4791 if (weno_dir == 3) then
4792# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4793
4794# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4795
4796# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4797#if defined(MFC_OpenACC)
4798# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4799!$acc parallel loop collapse(3) gang vector default(present) private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4800# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4801#elif defined(MFC_OpenMP)
4802# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4803
4804# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4805
4806# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4807
4808# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4809!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
4810# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4811!$omp& private(dvd, poly, beta, alpha, omega, tau, delta, q, vp0, vm1, vm2, vp1, vp2)
4812# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4813#endif
4814# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4815 do l = is1_weno%beg, is1_weno%end
4816# 1072 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4817 do k = is2_weno%beg, is2_weno%end
4818# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4819 do j = is3_weno%beg, is3_weno%end
4820# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4821
4822# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4823#if defined(MFC_OpenACC)
4824# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4825!$acc loop seq
4826# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4827#elif defined(MFC_OpenMP)
4828# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4829
4830# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4831#endif
4832# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4833 do i = 1, v_size
4834 ! reconstruct from left side
4835
4836 alpha(:) = 0._wp
4837
4838 vp0 = v_rs_weno(j, k, l, i)
4839# 1081 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4840 vm1 = v_rs_weno(j, k, l - 1, i)
4841# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4842 vm2 = v_rs_weno(j, k, l - 2, i)
4843# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4844 vp1 = v_rs_weno(j, k, l + 1, i)
4845# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4846 vp2 = v_rs_weno(j, k, l + 2, i)
4847# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4848
4849 dvd(1) = vp2 - vp1
4850 dvd(0) = vp1 - vp0
4851 dvd(-1) = vp0 - vm1
4852 dvd(-2) = vm1 - vm2
4853
4854 poly(0) = vp0 + poly_coef_cbl_z(l, 0, &
4855# 1092 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4856 & 0)*dvd(1) + poly_coef_cbl_z(l, 0, 1)*dvd(0)
4857# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4858 poly(1) = vp0 + poly_coef_cbl_z(l, 1, &
4859# 1094 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4860 & 0)*dvd(0) + poly_coef_cbl_z(l, 1, 1)*dvd(-1)
4861# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4862 poly(2) = vp0 + poly_coef_cbl_z(l, 2, &
4863# 1096 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4864 & 0)*dvd(-1) + poly_coef_cbl_z(l, 2, 1)*dvd(-2)
4865# 1097 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4866
4867 if (uniform_grid(3)) then
4868# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4869 beta(0) = 13._wp/12._wp*(dvd(1) - dvd(0))**2 + 0.25_wp*(dvd(1) - 3._wp*dvd(0))**2 &
4870 & + weno_eps
4871 beta(1) = 13._wp/12._wp*(dvd(0) - dvd(-1))**2 + 0.25_wp*(dvd(0) + dvd(-1))**2 + weno_eps
4872 beta(2) = 13._wp/12._wp*(dvd(-1) - dvd(-2))**2 + 0.25_wp*(3._wp*dvd(-1) - dvd(-2))**2 &
4873 & + weno_eps
4874 else
4875 beta(0) = beta_coef_z(l, 0, 0)*dvd(1)*dvd(1) + beta_coef_z(l, &
4876# 1106 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4877 & 0, 1)*dvd(1)*dvd(0) + beta_coef_z(l, 0, 2)*dvd(0)*dvd(0) + weno_eps
4878# 1107 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4879 beta(1) = beta_coef_z(l, 1, 0)*dvd(0)*dvd(0) + beta_coef_z(l, &
4880# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4881 & 1, 1)*dvd(0)*dvd(-1) + beta_coef_z(l, 1, &
4882# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4883 & 2)*dvd(-1)*dvd(-1) + weno_eps
4884 beta(2) = beta_coef_z(l, 2, &
4885# 1111 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4886 & 0)*dvd(-1)*dvd(-1) + beta_coef_z(l, 2, &
4887# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4888 & 1)*dvd(-1)*dvd(-2) + beta_coef_z(l, 2, 2)*dvd(-2)*dvd(-2) + weno_eps
4889# 1113 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4890 end if
4891
4892 if (wenojs) then
4893 do q = 0, weno_num_stencils
4894 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4895# 1118 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4896 end do
4897 else if (mapped_weno) then
4898 do q = 0, weno_num_stencils
4899 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
4900# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4901 end do
4902 omega = alpha/sum(alpha)
4903 do q = 0, weno_num_stencils
4904 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
4905# 1126 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4906 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
4907# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4908 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
4909# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4910 end do
4911 else if (wenoz) then
4912 ! Borges, et al. (2008)
4913
4914 tau = abs(beta(2) - beta(0)) ! Equation 25
4915
4916# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4917#if defined(MFC_OpenACC)
4918# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4919!$acc loop seq
4920# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4921#elif defined(MFC_OpenMP)
4922# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4923
4924# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4925#endif
4926# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4927 do q = 0, weno_num_stencils
4928 alpha(q) = d_cbl_z(q, l)*(1._wp + (tau/beta(q)))
4929# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4930 ! Equation 28 (note: weno_eps was already added to beta)
4931 end do
4932 else if (teno) then
4933 ! Fu, et al. (2016) Fu''s code: https://dx.doi.org/10.13140/RG.2.2.36250.34247
4934 tau = abs(beta(2) - beta(0))
4935
4936# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4937#if defined(MFC_OpenACC)
4938# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4939!$acc loop seq
4940# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4941#elif defined(MFC_OpenMP)
4942# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4943
4944# 1141 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4945#endif
4946# 1142 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4947 do q = 0, weno_num_stencils
4948 alpha(q) = 1._wp + tau/beta(q) ! Equation 22 (reuse alpha as gamma; pick C=1 & q=6)
4949 ! Equation 22 cont. (some CPU compilers cannot optimize x**6.0)
4950 alpha(q) = (alpha(q)**3._wp)**2._wp
4951 end do
4952 omega = alpha/sum(alpha) ! Equation 25 (reuse omega as xi)
4953
4954
4955# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4956#if defined(MFC_OpenACC)
4957# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4958!$acc loop seq
4959# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4960#elif defined(MFC_OpenMP)
4961# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4962
4963# 1149 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4964#endif
4965# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4966 do q = 0, weno_num_stencils
4967 if (omega(q) < teno_ct) then ! Equation 26
4968 delta(q) = 0._wp
4969 else
4970 delta(q) = 1._wp
4971 end if
4972 alpha(q) = delta(q)*d_cbl_z(q, l) ! Equation 27
4973# 1157 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4974 end do
4975 end if
4976
4977 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
4978 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
4979 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
4980
4981 vl_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
4982
4983 ! reconstruct from right side
4984
4985 poly(0) = vp0 + poly_coef_cbr_z(l, 0, &
4986# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4987 & 0)*dvd(1) + poly_coef_cbr_z(l, 0, 1)*dvd(0)
4988# 1170 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4989 poly(1) = vp0 + poly_coef_cbr_z(l, 1, &
4990# 1171 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4991 & 0)*dvd(0) + poly_coef_cbr_z(l, 1, 1)*dvd(-1)
4992# 1172 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4993 poly(2) = vp0 + poly_coef_cbr_z(l, 2, &
4994# 1173 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4995 & 0)*dvd(-1) + poly_coef_cbr_z(l, 2, 1)*dvd(-2)
4996# 1174 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
4997
4998 if (wenojs) then
4999 do q = 0, weno_num_stencils
5000 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
5001# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5002 end do
5003 else if (mapped_weno) then
5004 do q = 0, weno_num_stencils
5005 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
5006# 1182 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5007 end do
5008 omega = alpha/sum(alpha)
5009 do q = 0, weno_num_stencils
5010 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
5011# 1186 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5012 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
5013# 1187 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5014 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
5015# 1188 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5016 end do
5017 else if (wenoz) then
5018
5019# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5020#if defined(MFC_OpenACC)
5021# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5022!$acc loop seq
5023# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5024#elif defined(MFC_OpenMP)
5025# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5026
5027# 1190 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5028#endif
5029# 1191 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5030 do q = 0, weno_num_stencils
5031 alpha(q) = d_cbr_z(q, l)*(1._wp + (tau/beta(q)))
5032# 1193 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5033 end do
5034 else if (teno) then
5035
5036# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5037#if defined(MFC_OpenACC)
5038# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5039!$acc loop seq
5040# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5041#elif defined(MFC_OpenMP)
5042# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5043
5044# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5045#endif
5046# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5047 do q = 0, weno_num_stencils
5048 alpha(q) = delta(q)*d_cbr_z(q, l)
5049# 1198 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5050 end do
5051 end if
5052
5053 omega(0) = alpha(0)/(alpha(0) + alpha(1) + alpha(2))
5054 omega(1) = alpha(1)/(alpha(0) + alpha(1) + alpha(2))
5055 omega(2) = alpha(2)/(alpha(0) + alpha(1) + alpha(2))
5056
5057 vr_rs_vf_x(j, k, l, i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2)
5058 end do
5059 end do
5060 end do
5061 end do
5062
5063# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5064#if defined(MFC_OpenACC)
5065# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5066!$acc end parallel loop
5067# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5068#elif defined(MFC_OpenMP)
5069# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5070
5071# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5072!$omp end target teams loop
5073# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5074#endif
5075# 1211 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5076
5077 if (mp_weno) then
5078 call s_preserve_monotonicity(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir)
5079 end if
5080 end if
5081# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5082# 1218 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5083 end if
5084 if (weno_order == 7) then
5085# 1221 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5086# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5087# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5088# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5089 if (weno_dir == 1) then
5090# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5091
5092# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5093
5094# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5095#if defined(MFC_OpenACC)
5096# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5097!$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)
5098# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5099#elif defined(MFC_OpenMP)
5100# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5101
5102# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5103
5104# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5105
5106# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5107!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5108# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5109!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5110# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5111#endif
5112# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5113 do l = is3_weno%beg, is3_weno%end
5114# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5115 do k = is2_weno%beg, is2_weno%end
5116# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5117 do j = is1_weno%beg, is1_weno%end
5118# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5119
5120# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5121#if defined(MFC_OpenACC)
5122# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5123!$acc loop seq
5124# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5125#elif defined(MFC_OpenMP)
5126# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5127
5128# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5129#endif
5130# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5131 do i = 1, v_size
5132 alpha(:) = 0._wp
5133
5134 vp0 = v_rs_weno(j, k, l, i)
5135# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5136 vm1 = v_rs_weno(j - 1, k, l, i)
5137# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5138 vm2 = v_rs_weno(j - 2, k, l, i)
5139# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5140 vm3 = v_rs_weno(j - 3, k, l, i)
5141# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5142 vp1 = v_rs_weno(j + 1, k, l, i)
5143# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5144 vp2 = v_rs_weno(j + 2, k, l, i)
5145# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5146 vp3 = v_rs_weno(j + 3, k, l, i)
5147# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5148
5149 if (teno) then
5150 v(-3) = vm3
5151 v(-2) = vm2
5152 v(-1) = vm1
5153 v(0) = vp0
5154 v(1) = vp1
5155 v(2) = vp2
5156 v(3) = vp3
5157 end if
5158
5159 if (.not. teno) then
5160 dvd(2) = vp3 - vp2
5161 dvd(1) = vp2 - vp1
5162 dvd(0) = vp1 - vp0
5163 dvd(-1) = vp0 - vm1
5164 dvd(-2) = vm1 - vm2
5165 dvd(-3) = vm2 - vm3
5166
5167 poly(3) = vp0 + poly_coef_cbl_x(j, 0, &
5168# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5169 & 0)*dvd(2) + poly_coef_cbl_x(j, 0, &
5170# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5171 & 1)*dvd(1) + poly_coef_cbl_x(j, 0, 2)*dvd(0)
5172# 1266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5173 poly(2) = vp0 + poly_coef_cbl_x(j, 1, &
5174# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5175 & 0)*dvd(1) + poly_coef_cbl_x(j, 1, &
5176# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5177 & 1)*dvd(0) + poly_coef_cbl_x(j, 1, 2)*dvd(-1)
5178# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5179 poly(1) = vp0 + poly_coef_cbl_x(j, 2, &
5180# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5181 & 0)*dvd(0) + poly_coef_cbl_x(j, 2, &
5182# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5183 & 1)*dvd(-1) + poly_coef_cbl_x(j, 2, 2)*dvd(-2)
5184# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5185 poly(0) = vp0 + poly_coef_cbl_x(j, 3, &
5186# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5187 & 0)*dvd(-1) + poly_coef_cbl_x(j, 3, &
5188# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5189 & 1)*dvd(-2) + poly_coef_cbl_x(j, 3, 2)*dvd(-3)
5190# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5191 else
5192# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5193 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5194 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5195 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5196 ! to keep the stencil order to reuse the beta coefficients
5197 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5198 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5199 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5200 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5201 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5202# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5203 end if
5204
5205 if (.not. teno) then
5206 beta(3) = beta_coef_x(j, 0, 0)*dvd(2)*dvd(2) + beta_coef_x(j, &
5207# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5208 & 0, 1)*dvd(2)*dvd(1) + beta_coef_x(j, 0, &
5209# 1292 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5210 & 2)*dvd(2)*dvd(0) + beta_coef_x(j, 0, &
5211# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5212 & 3)*dvd(1)*dvd(1) + beta_coef_x(j, 0, &
5213# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5214 & 4)*dvd(1)*dvd(0) + beta_coef_x(j, 0, 5)*dvd(0)*dvd(0) + weno_eps
5215# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5216
5217 beta(2) = beta_coef_x(j, 1, 0)*dvd(1)*dvd(1) + beta_coef_x(j, &
5218# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5219 & 1, 1)*dvd(1)*dvd(0) + beta_coef_x(j, 1, &
5220# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5221 & 2)*dvd(1)*dvd(-1) + beta_coef_x(j, 1, &
5222# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5223 & 3)*dvd(0)*dvd(0) + beta_coef_x(j, 1, &
5224# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5225 & 4)*dvd(0)*dvd(-1) + beta_coef_x(j, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
5226# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5227
5228 beta(1) = beta_coef_x(j, 2, 0)*dvd(0)*dvd(0) + beta_coef_x(j, &
5229# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5230 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_x(j, 2, &
5231# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5232 & 2)*dvd(0)*dvd(-2) + beta_coef_x(j, 2, &
5233# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5234 & 3)*dvd(-1)*dvd(-1) + beta_coef_x(j, 2, &
5235# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5236 & 4)*dvd(-1)*dvd(-2) + beta_coef_x(j, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
5237# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5238
5239 beta(0) = beta_coef_x(j, 3, &
5240# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5241 & 0)*dvd(-1)*dvd(-1) + beta_coef_x(j, 3, &
5242# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5243 & 1)*dvd(-1)*dvd(-2) + beta_coef_x(j, 3, &
5244# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5245 & 2)*dvd(-1)*dvd(-3) + beta_coef_x(j, 3, &
5246# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5247 & 3)*dvd(-2)*dvd(-2) + beta_coef_x(j, 3, &
5248# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5249 & 4)*dvd(-2)*dvd(-3) + beta_coef_x(j, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
5250# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5251 else
5252# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5253 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
5254 ! & Tang, 2019) Section 3.2
5255 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
5256 & **2._wp)/4._wp + weno_eps
5257 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
5258 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
5259 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
5260 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
5261
5262 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
5263 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
5264 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
5265
5266 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
5267 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
5268 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
5269# 1333 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5270 end if
5271
5272 if (wenojs) then
5273 do q = 0, weno_num_stencils
5274 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
5275# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5276 end do
5277 else if (mapped_weno) then
5278 do q = 0, weno_num_stencils
5279 alpha(q) = d_cbl_x(q, j)/(beta(q)**2._wp)
5280# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5281 end do
5282 omega = alpha/sum(alpha)
5283 do q = 0, weno_num_stencils
5284 alpha(q) = (d_cbl_x(q, j)*(1._wp + d_cbl_x(q, &
5285# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5286 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_x(q, &
5287# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5288 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_x(q, j))))
5289# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5290 end do
5291 else if (wenoz) then
5292 ! Castro, et al. (2010) Don & Borges (2013) also helps
5293 tau = abs(beta(3) - beta(0)) ! Equation 50
5294
5295# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5296#if defined(MFC_OpenACC)
5297# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5298!$acc loop seq
5299# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5300#elif defined(MFC_OpenMP)
5301# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5302
5303# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5304#endif
5305# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5306 do q = 0, weno_num_stencils
5307 ! wenoz_q = 2,3,4 for stability
5308 alpha(q) = d_cbl_x(q, j)*(1._wp + (tau/beta(q))**wenoz_q)
5309# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5310 end do
5311 else if (teno) then
5312# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5313 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
5314 alpha = 1._wp + tau/beta
5315 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
5316 omega = alpha/sum(alpha)
5317
5318
5319# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5320#if defined(MFC_OpenACC)
5321# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5322!$acc loop seq
5323# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5324#elif defined(MFC_OpenMP)
5325# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5326
5327# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5328#endif
5329# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5330 do q = 0, weno_num_stencils
5331 if (omega(q) < teno_ct) then ! Equation 26
5332 delta(q) = 0._wp
5333 else
5334 delta(q) = 1._wp
5335 end if
5336 alpha(q) = delta(q)*d_cbl_x(q, j) ! Equation 27
5337# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5338 end do
5339# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5340 end if
5341
5342 omega = alpha/sum(alpha)
5343
5344 vl_rs_vf_x(j, k, l, &
5345 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5346
5347 if (teno) then
5348# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5349 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5350# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5351 end if
5352
5353 if (.not. teno) then
5354 poly(3) = vp0 + poly_coef_cbr_x(j, 0, &
5355# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5356 & 0)*dvd(2) + poly_coef_cbr_x(j, 0, &
5357# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5358 & 1)*dvd(1) + poly_coef_cbr_x(j, 0, 2)*dvd(0)
5359# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5360 poly(2) = vp0 + poly_coef_cbr_x(j, 1, &
5361# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5362 & 0)*dvd(1) + poly_coef_cbr_x(j, 1, &
5363# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5364 & 1)*dvd(0) + poly_coef_cbr_x(j, 1, 2)*dvd(-1)
5365# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5366 poly(1) = vp0 + poly_coef_cbr_x(j, 2, &
5367# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5368 & 0)*dvd(0) + poly_coef_cbr_x(j, 2, &
5369# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5370 & 1)*dvd(-1) + poly_coef_cbr_x(j, 2, 2)*dvd(-2)
5371# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5372 poly(0) = vp0 + poly_coef_cbr_x(j, 3, &
5373# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5374 & 0)*dvd(-1) + poly_coef_cbr_x(j, 3, &
5375# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5376 & 1)*dvd(-2) + poly_coef_cbr_x(j, 3, 2)*dvd(-3)
5377# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5378 else
5379# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5380 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
5381 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
5382 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
5383 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
5384 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
5385# 1408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5386 end if
5387
5388 if (wenojs) then
5389 do q = 0, weno_num_stencils
5390 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
5391# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5392 end do
5393 else if (mapped_weno) then
5394 do q = 0, weno_num_stencils
5395 alpha(q) = d_cbr_x(q, j)/(beta(q)**2._wp)
5396# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5397 end do
5398 omega = alpha/sum(alpha)
5399 do q = 0, weno_num_stencils
5400 alpha(q) = (d_cbr_x(q, j)*(1._wp + d_cbr_x(q, &
5401# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5402 & j) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_x(q, &
5403# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5404 & j)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_x(q, j))))
5405# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5406 end do
5407 else if (wenoz) then
5408
5409# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5410#if defined(MFC_OpenACC)
5411# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5412!$acc loop seq
5413# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5414#elif defined(MFC_OpenMP)
5415# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5416
5417# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5418#endif
5419# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5420 do q = 0, weno_num_stencils
5421 ! wenoz_q = 2,3,4 for stability
5422 alpha(q) = d_cbr_x(q, j)*(1._wp + (tau/beta(q))**wenoz_q)
5423# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5424 end do
5425 else if (teno) then
5426
5427# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5428#if defined(MFC_OpenACC)
5429# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5430!$acc loop seq
5431# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5432#elif defined(MFC_OpenMP)
5433# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5434
5435# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5436#endif
5437# 1432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5438 do q = 0, weno_num_stencils
5439 alpha(q) = delta(q)*d_cbr_x(q, j)
5440# 1434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5441 end do
5442 end if
5443
5444 omega = alpha/sum(alpha)
5445
5446 vr_rs_vf_x(j, k, l, &
5447 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5448
5449 if (teno) then
5450# 1444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5451 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5452# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5453 end if
5454 end do
5455 end do
5456 end do
5457 end do
5458
5459# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5460#if defined(MFC_OpenACC)
5461# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5462!$acc end parallel loop
5463# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5464#elif defined(MFC_OpenMP)
5465# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5466
5467# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5468!$omp end target teams loop
5469# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5470#endif
5471# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5472 end if
5473# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5474# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5475# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5476 if (weno_dir == 2) then
5477# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5478
5479# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5480
5481# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5482#if defined(MFC_OpenACC)
5483# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5484!$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)
5485# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5486#elif defined(MFC_OpenMP)
5487# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5488
5489# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5490
5491# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5492
5493# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5494!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5495# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5496!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5497# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5498#endif
5499# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5500 do l = is3_weno%beg, is3_weno%end
5501# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5502 do k = is1_weno%beg, is1_weno%end
5503# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5504 do j = is2_weno%beg, is2_weno%end
5505# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5506
5507# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5508#if defined(MFC_OpenACC)
5509# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5510!$acc loop seq
5511# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5512#elif defined(MFC_OpenMP)
5513# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5514
5515# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5516#endif
5517# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5518 do i = 1, v_size
5519 alpha(:) = 0._wp
5520
5521 vp0 = v_rs_weno(j, k, l, i)
5522# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5523 vm1 = v_rs_weno(j, k - 1, l, i)
5524# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5525 vm2 = v_rs_weno(j, k - 2, l, i)
5526# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5527 vm3 = v_rs_weno(j, k - 3, l, i)
5528# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5529 vp1 = v_rs_weno(j, k + 1, l, i)
5530# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5531 vp2 = v_rs_weno(j, k + 2, l, i)
5532# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5533 vp3 = v_rs_weno(j, k + 3, l, i)
5534# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5535
5536 if (teno) then
5537 v(-3) = vm3
5538 v(-2) = vm2
5539 v(-1) = vm1
5540 v(0) = vp0
5541 v(1) = vp1
5542 v(2) = vp2
5543 v(3) = vp3
5544 end if
5545
5546 if (.not. teno) then
5547 dvd(2) = vp3 - vp2
5548 dvd(1) = vp2 - vp1
5549 dvd(0) = vp1 - vp0
5550 dvd(-1) = vp0 - vm1
5551 dvd(-2) = vm1 - vm2
5552 dvd(-3) = vm2 - vm3
5553
5554 poly(3) = vp0 + poly_coef_cbl_y(k, 0, &
5555# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5556 & 0)*dvd(2) + poly_coef_cbl_y(k, 0, &
5557# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5558 & 1)*dvd(1) + poly_coef_cbl_y(k, 0, 2)*dvd(0)
5559# 1266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5560 poly(2) = vp0 + poly_coef_cbl_y(k, 1, &
5561# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5562 & 0)*dvd(1) + poly_coef_cbl_y(k, 1, &
5563# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5564 & 1)*dvd(0) + poly_coef_cbl_y(k, 1, 2)*dvd(-1)
5565# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5566 poly(1) = vp0 + poly_coef_cbl_y(k, 2, &
5567# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5568 & 0)*dvd(0) + poly_coef_cbl_y(k, 2, &
5569# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5570 & 1)*dvd(-1) + poly_coef_cbl_y(k, 2, 2)*dvd(-2)
5571# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5572 poly(0) = vp0 + poly_coef_cbl_y(k, 3, &
5573# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5574 & 0)*dvd(-1) + poly_coef_cbl_y(k, 3, &
5575# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5576 & 1)*dvd(-2) + poly_coef_cbl_y(k, 3, 2)*dvd(-3)
5577# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5578 else
5579# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5580 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5581 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5582 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5583 ! to keep the stencil order to reuse the beta coefficients
5584 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5585 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5586 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5587 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5588 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5589# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5590 end if
5591
5592 if (.not. teno) then
5593 beta(3) = beta_coef_y(k, 0, 0)*dvd(2)*dvd(2) + beta_coef_y(k, &
5594# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5595 & 0, 1)*dvd(2)*dvd(1) + beta_coef_y(k, 0, &
5596# 1292 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5597 & 2)*dvd(2)*dvd(0) + beta_coef_y(k, 0, &
5598# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5599 & 3)*dvd(1)*dvd(1) + beta_coef_y(k, 0, &
5600# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5601 & 4)*dvd(1)*dvd(0) + beta_coef_y(k, 0, 5)*dvd(0)*dvd(0) + weno_eps
5602# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5603
5604 beta(2) = beta_coef_y(k, 1, 0)*dvd(1)*dvd(1) + beta_coef_y(k, &
5605# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5606 & 1, 1)*dvd(1)*dvd(0) + beta_coef_y(k, 1, &
5607# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5608 & 2)*dvd(1)*dvd(-1) + beta_coef_y(k, 1, &
5609# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5610 & 3)*dvd(0)*dvd(0) + beta_coef_y(k, 1, &
5611# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5612 & 4)*dvd(0)*dvd(-1) + beta_coef_y(k, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
5613# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5614
5615 beta(1) = beta_coef_y(k, 2, 0)*dvd(0)*dvd(0) + beta_coef_y(k, &
5616# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5617 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_y(k, 2, &
5618# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5619 & 2)*dvd(0)*dvd(-2) + beta_coef_y(k, 2, &
5620# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5621 & 3)*dvd(-1)*dvd(-1) + beta_coef_y(k, 2, &
5622# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5623 & 4)*dvd(-1)*dvd(-2) + beta_coef_y(k, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
5624# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5625
5626 beta(0) = beta_coef_y(k, 3, &
5627# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5628 & 0)*dvd(-1)*dvd(-1) + beta_coef_y(k, 3, &
5629# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5630 & 1)*dvd(-1)*dvd(-2) + beta_coef_y(k, 3, &
5631# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5632 & 2)*dvd(-1)*dvd(-3) + beta_coef_y(k, 3, &
5633# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5634 & 3)*dvd(-2)*dvd(-2) + beta_coef_y(k, 3, &
5635# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5636 & 4)*dvd(-2)*dvd(-3) + beta_coef_y(k, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
5637# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5638 else
5639# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5640 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
5641 ! & Tang, 2019) Section 3.2
5642 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
5643 & **2._wp)/4._wp + weno_eps
5644 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
5645 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
5646 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
5647 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
5648
5649 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
5650 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
5651 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
5652
5653 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
5654 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
5655 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
5656# 1333 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5657 end if
5658
5659 if (wenojs) then
5660 do q = 0, weno_num_stencils
5661 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
5662# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5663 end do
5664 else if (mapped_weno) then
5665 do q = 0, weno_num_stencils
5666 alpha(q) = d_cbl_y(q, k)/(beta(q)**2._wp)
5667# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5668 end do
5669 omega = alpha/sum(alpha)
5670 do q = 0, weno_num_stencils
5671 alpha(q) = (d_cbl_y(q, k)*(1._wp + d_cbl_y(q, &
5672# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5673 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_y(q, &
5674# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5675 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_y(q, k))))
5676# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5677 end do
5678 else if (wenoz) then
5679 ! Castro, et al. (2010) Don & Borges (2013) also helps
5680 tau = abs(beta(3) - beta(0)) ! Equation 50
5681
5682# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5683#if defined(MFC_OpenACC)
5684# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5685!$acc loop seq
5686# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5687#elif defined(MFC_OpenMP)
5688# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5689
5690# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5691#endif
5692# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5693 do q = 0, weno_num_stencils
5694 ! wenoz_q = 2,3,4 for stability
5695 alpha(q) = d_cbl_y(q, k)*(1._wp + (tau/beta(q))**wenoz_q)
5696# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5697 end do
5698 else if (teno) then
5699# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5700 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
5701 alpha = 1._wp + tau/beta
5702 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
5703 omega = alpha/sum(alpha)
5704
5705
5706# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5707#if defined(MFC_OpenACC)
5708# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5709!$acc loop seq
5710# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5711#elif defined(MFC_OpenMP)
5712# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5713
5714# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5715#endif
5716# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5717 do q = 0, weno_num_stencils
5718 if (omega(q) < teno_ct) then ! Equation 26
5719 delta(q) = 0._wp
5720 else
5721 delta(q) = 1._wp
5722 end if
5723 alpha(q) = delta(q)*d_cbl_y(q, k) ! Equation 27
5724# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5725 end do
5726# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5727 end if
5728
5729 omega = alpha/sum(alpha)
5730
5731 vl_rs_vf_x(j, k, l, &
5732 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5733
5734 if (teno) then
5735# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5736 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5737# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5738 end if
5739
5740 if (.not. teno) then
5741 poly(3) = vp0 + poly_coef_cbr_y(k, 0, &
5742# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5743 & 0)*dvd(2) + poly_coef_cbr_y(k, 0, &
5744# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5745 & 1)*dvd(1) + poly_coef_cbr_y(k, 0, 2)*dvd(0)
5746# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5747 poly(2) = vp0 + poly_coef_cbr_y(k, 1, &
5748# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5749 & 0)*dvd(1) + poly_coef_cbr_y(k, 1, &
5750# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5751 & 1)*dvd(0) + poly_coef_cbr_y(k, 1, 2)*dvd(-1)
5752# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5753 poly(1) = vp0 + poly_coef_cbr_y(k, 2, &
5754# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5755 & 0)*dvd(0) + poly_coef_cbr_y(k, 2, &
5756# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5757 & 1)*dvd(-1) + poly_coef_cbr_y(k, 2, 2)*dvd(-2)
5758# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5759 poly(0) = vp0 + poly_coef_cbr_y(k, 3, &
5760# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5761 & 0)*dvd(-1) + poly_coef_cbr_y(k, 3, &
5762# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5763 & 1)*dvd(-2) + poly_coef_cbr_y(k, 3, 2)*dvd(-3)
5764# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5765 else
5766# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5767 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
5768 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
5769 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
5770 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
5771 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
5772# 1408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5773 end if
5774
5775 if (wenojs) then
5776 do q = 0, weno_num_stencils
5777 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
5778# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5779 end do
5780 else if (mapped_weno) then
5781 do q = 0, weno_num_stencils
5782 alpha(q) = d_cbr_y(q, k)/(beta(q)**2._wp)
5783# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5784 end do
5785 omega = alpha/sum(alpha)
5786 do q = 0, weno_num_stencils
5787 alpha(q) = (d_cbr_y(q, k)*(1._wp + d_cbr_y(q, &
5788# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5789 & k) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_y(q, &
5790# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5791 & k)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_y(q, k))))
5792# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5793 end do
5794 else if (wenoz) then
5795
5796# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5797#if defined(MFC_OpenACC)
5798# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5799!$acc loop seq
5800# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5801#elif defined(MFC_OpenMP)
5802# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5803
5804# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5805#endif
5806# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5807 do q = 0, weno_num_stencils
5808 ! wenoz_q = 2,3,4 for stability
5809 alpha(q) = d_cbr_y(q, k)*(1._wp + (tau/beta(q))**wenoz_q)
5810# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5811 end do
5812 else if (teno) then
5813
5814# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5815#if defined(MFC_OpenACC)
5816# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5817!$acc loop seq
5818# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5819#elif defined(MFC_OpenMP)
5820# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5821
5822# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5823#endif
5824# 1432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5825 do q = 0, weno_num_stencils
5826 alpha(q) = delta(q)*d_cbr_y(q, k)
5827# 1434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5828 end do
5829 end if
5830
5831 omega = alpha/sum(alpha)
5832
5833 vr_rs_vf_x(j, k, l, &
5834 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
5835
5836 if (teno) then
5837# 1444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5838 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
5839# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5840 end if
5841 end do
5842 end do
5843 end do
5844 end do
5845
5846# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5847#if defined(MFC_OpenACC)
5848# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5849!$acc end parallel loop
5850# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5851#elif defined(MFC_OpenMP)
5852# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5853
5854# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5855!$omp end target teams loop
5856# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5857#endif
5858# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5859 end if
5860# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5861# 1226 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5862# 1227 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5863 if (weno_dir == 3) then
5864# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5865
5866# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5867
5868# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5869#if defined(MFC_OpenACC)
5870# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5871!$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)
5872# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5873#elif defined(MFC_OpenMP)
5874# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5875
5876# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5877
5878# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5879
5880# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5881!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
5882# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5883!$omp& private(poly, beta, alpha, omega, tau, delta, dvd, v, q, vp0, vp1, vp2, vp3, vm1, vm2, vm3)
5884# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5885#endif
5886# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5887 do l = is1_weno%beg, is1_weno%end
5888# 1231 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5889 do k = is2_weno%beg, is2_weno%end
5890# 1232 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5891 do j = is3_weno%beg, is3_weno%end
5892# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5893
5894# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5895#if defined(MFC_OpenACC)
5896# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5897!$acc loop seq
5898# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5899#elif defined(MFC_OpenMP)
5900# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5901
5902# 1233 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5903#endif
5904# 1234 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5905 do i = 1, v_size
5906 alpha(:) = 0._wp
5907
5908 vp0 = v_rs_weno(j, k, l, i)
5909# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5910 vm1 = v_rs_weno(j, k, l - 1, i)
5911# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5912 vm2 = v_rs_weno(j, k, l - 2, i)
5913# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5914 vm3 = v_rs_weno(j, k, l - 3, i)
5915# 1241 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5916 vp1 = v_rs_weno(j, k, l + 1, i)
5917# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5918 vp2 = v_rs_weno(j, k, l + 2, i)
5919# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5920 vp3 = v_rs_weno(j, k, l + 3, i)
5921# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5922
5923 if (teno) then
5924 v(-3) = vm3
5925 v(-2) = vm2
5926 v(-1) = vm1
5927 v(0) = vp0
5928 v(1) = vp1
5929 v(2) = vp2
5930 v(3) = vp3
5931 end if
5932
5933 if (.not. teno) then
5934 dvd(2) = vp3 - vp2
5935 dvd(1) = vp2 - vp1
5936 dvd(0) = vp1 - vp0
5937 dvd(-1) = vp0 - vm1
5938 dvd(-2) = vm1 - vm2
5939 dvd(-3) = vm2 - vm3
5940
5941 poly(3) = vp0 + poly_coef_cbl_z(l, 0, &
5942# 1264 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5943 & 0)*dvd(2) + poly_coef_cbl_z(l, 0, &
5944# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5945 & 1)*dvd(1) + poly_coef_cbl_z(l, 0, 2)*dvd(0)
5946# 1266 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5947 poly(2) = vp0 + poly_coef_cbl_z(l, 1, &
5948# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5949 & 0)*dvd(1) + poly_coef_cbl_z(l, 1, &
5950# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5951 & 1)*dvd(0) + poly_coef_cbl_z(l, 1, 2)*dvd(-1)
5952# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5953 poly(1) = vp0 + poly_coef_cbl_z(l, 2, &
5954# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5955 & 0)*dvd(0) + poly_coef_cbl_z(l, 2, &
5956# 1271 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5957 & 1)*dvd(-1) + poly_coef_cbl_z(l, 2, 2)*dvd(-2)
5958# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5959 poly(0) = vp0 + poly_coef_cbl_z(l, 3, &
5960# 1273 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5961 & 0)*dvd(-1) + poly_coef_cbl_z(l, 3, &
5962# 1274 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5963 & 1)*dvd(-2) + poly_coef_cbl_z(l, 3, 2)*dvd(-3)
5964# 1275 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5965 else
5966# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5967 ! (Fu, et al., 2016) Table 1 Note: Unlike TENO5, TENO7 stencils differ from WENO7
5968 ! stencils See Figure 2 (right) for right-sided flux (at i+1/2) Here we need the
5969 ! left-sided flux, so we flip the weights with respect to the x=i point But we need
5970 ! to keep the stencil order to reuse the beta coefficients
5971 poly(0) = (2._wp*v(-1) + 5._wp*v(0) - 1._wp*v(1))/6._wp
5972 poly(1) = (11._wp*v(0) - 7._wp*v(1) + 2._wp*v(2))/6._wp
5973 poly(2) = (-1._wp*v(-2) + 5._wp*v(-1) + 2._wp*v(0))/6._wp
5974 poly(3) = (25._wp*v(0) - 23._wp*v(1) + 13._wp*v(2) - 3._wp*v(3))/12._wp
5975 poly(4) = (1._wp*v(-3) - 5._wp*v(-2) + 13._wp*v(-1) + 3._wp*v(0))/12._wp
5976# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5977 end if
5978
5979 if (.not. teno) then
5980 beta(3) = beta_coef_z(l, 0, 0)*dvd(2)*dvd(2) + beta_coef_z(l, &
5981# 1291 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5982 & 0, 1)*dvd(2)*dvd(1) + beta_coef_z(l, 0, &
5983# 1292 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5984 & 2)*dvd(2)*dvd(0) + beta_coef_z(l, 0, &
5985# 1293 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5986 & 3)*dvd(1)*dvd(1) + beta_coef_z(l, 0, &
5987# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5988 & 4)*dvd(1)*dvd(0) + beta_coef_z(l, 0, 5)*dvd(0)*dvd(0) + weno_eps
5989# 1295 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5990
5991 beta(2) = beta_coef_z(l, 1, 0)*dvd(1)*dvd(1) + beta_coef_z(l, &
5992# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5993 & 1, 1)*dvd(1)*dvd(0) + beta_coef_z(l, 1, &
5994# 1298 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5995 & 2)*dvd(1)*dvd(-1) + beta_coef_z(l, 1, &
5996# 1299 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5997 & 3)*dvd(0)*dvd(0) + beta_coef_z(l, 1, &
5998# 1300 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
5999 & 4)*dvd(0)*dvd(-1) + beta_coef_z(l, 1, 5)*dvd(-1)*dvd(-1) + weno_eps
6000# 1301 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6001
6002 beta(1) = beta_coef_z(l, 2, 0)*dvd(0)*dvd(0) + beta_coef_z(l, &
6003# 1303 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6004 & 2, 1)*dvd(0)*dvd(-1) + beta_coef_z(l, 2, &
6005# 1304 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6006 & 2)*dvd(0)*dvd(-2) + beta_coef_z(l, 2, &
6007# 1305 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6008 & 3)*dvd(-1)*dvd(-1) + beta_coef_z(l, 2, &
6009# 1306 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6010 & 4)*dvd(-1)*dvd(-2) + beta_coef_z(l, 2, 5)*dvd(-2)*dvd(-2) + weno_eps
6011# 1307 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6012
6013 beta(0) = beta_coef_z(l, 3, &
6014# 1309 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6015 & 0)*dvd(-1)*dvd(-1) + beta_coef_z(l, 3, &
6016# 1310 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6017 & 1)*dvd(-1)*dvd(-2) + beta_coef_z(l, 3, &
6018# 1311 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6019 & 2)*dvd(-1)*dvd(-3) + beta_coef_z(l, 3, &
6020# 1312 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6021 & 3)*dvd(-2)*dvd(-2) + beta_coef_z(l, 3, &
6022# 1313 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6023 & 4)*dvd(-2)*dvd(-3) + beta_coef_z(l, 3, 5)*dvd(-3)*dvd(-3) + weno_eps
6024# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6025 else
6026# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6027 ! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu
6028 ! & Tang, 2019) Section 3.2
6029 beta(0) = 13._wp/12._wp*(v(-1) - 2._wp*v(0) + v(1))**2._wp + ((v(-1) - v(1)) &
6030 & **2._wp)/4._wp + weno_eps
6031 beta(1) = 13._wp/12._wp*(v(0) - 2._wp*v(1) + v(2))**2._wp + ((3._wp*v(0) &
6032 & - 4._wp*v(1) + v(2))**2._wp)/4._wp + weno_eps
6033 beta(2) = 13._wp/12._wp*(v(-2) - 2._wp*v(-1) + v(0))**2._wp + ((v(-2) &
6034 & - 4._wp*v(-1) + 3._wp*v(0))**2._wp)/4._wp + weno_eps
6035
6036 beta(3) = (v(0)*(2107._wp*v(0) - 9402._wp*v(1) + 7042._wp*v(2) - 1854._wp*v(3)) &
6037 & + v(1)*(11003._wp*v(1) - 17246._wp*v(2) + 4642._wp*v(3)) + v(2) &
6038 & *(7043._wp*v(2) - 3882._wp*v(3)) + v(3)*(547._wp*v(3)))/240._wp + weno_eps
6039
6040 beta(4) = (v(-3)*(547._wp*v(-3) - 3882._wp*v(-2) + 4642._wp*v(-1) - 1854._wp*v(0)) &
6041 & + v(-2)*(7043._wp*v(-2) - 17246._wp*v(-1) + 7042._wp*v(0)) + v(-1) &
6042 & *(11003._wp*v(-1) - 9402._wp*v(0)) + v(0)*(2107._wp*v(0)))/240._wp + weno_eps
6043# 1333 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6044 end if
6045
6046 if (wenojs) then
6047 do q = 0, weno_num_stencils
6048 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
6049# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6050 end do
6051 else if (mapped_weno) then
6052 do q = 0, weno_num_stencils
6053 alpha(q) = d_cbl_z(q, l)/(beta(q)**2._wp)
6054# 1342 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6055 end do
6056 omega = alpha/sum(alpha)
6057 do q = 0, weno_num_stencils
6058 alpha(q) = (d_cbl_z(q, l)*(1._wp + d_cbl_z(q, &
6059# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6060 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbl_z(q, &
6061# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6062 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbl_z(q, l))))
6063# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6064 end do
6065 else if (wenoz) then
6066 ! Castro, et al. (2010) Don & Borges (2013) also helps
6067 tau = abs(beta(3) - beta(0)) ! Equation 50
6068
6069# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6070#if defined(MFC_OpenACC)
6071# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6072!$acc loop seq
6073# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6074#elif defined(MFC_OpenMP)
6075# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6076
6077# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6078#endif
6079# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6080 do q = 0, weno_num_stencils
6081 ! wenoz_q = 2,3,4 for stability
6082 alpha(q) = d_cbl_z(q, l)*(1._wp + (tau/beta(q))**wenoz_q)
6083# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6084 end do
6085 else if (teno) then
6086# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6087 tau = abs(beta(4) - beta(3)) ! Note the reordering of stencils
6088 alpha = 1._wp + tau/beta
6089 alpha = (alpha**3._wp)**2._wp ! some CPU compilers cannot optimize x**6.0
6090 omega = alpha/sum(alpha)
6091
6092
6093# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6094#if defined(MFC_OpenACC)
6095# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6096!$acc loop seq
6097# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6098#elif defined(MFC_OpenMP)
6099# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6100
6101# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6102#endif
6103# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6104 do q = 0, weno_num_stencils
6105 if (omega(q) < teno_ct) then ! Equation 26
6106 delta(q) = 0._wp
6107 else
6108 delta(q) = 1._wp
6109 end if
6110 alpha(q) = delta(q)*d_cbl_z(q, l) ! Equation 27
6111# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6112 end do
6113# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6114 end if
6115
6116 omega = alpha/sum(alpha)
6117
6118 vl_rs_vf_x(j, k, l, &
6119 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
6120
6121 if (teno) then
6122# 1383 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6123 vl_rs_vf_x(j, k, l, i) = vl_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
6124# 1385 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6125 end if
6126
6127 if (.not. teno) then
6128 poly(3) = vp0 + poly_coef_cbr_z(l, 0, &
6129# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6130 & 0)*dvd(2) + poly_coef_cbr_z(l, 0, &
6131# 1390 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6132 & 1)*dvd(1) + poly_coef_cbr_z(l, 0, 2)*dvd(0)
6133# 1391 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6134 poly(2) = vp0 + poly_coef_cbr_z(l, 1, &
6135# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6136 & 0)*dvd(1) + poly_coef_cbr_z(l, 1, &
6137# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6138 & 1)*dvd(0) + poly_coef_cbr_z(l, 1, 2)*dvd(-1)
6139# 1394 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6140 poly(1) = vp0 + poly_coef_cbr_z(l, 2, &
6141# 1395 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6142 & 0)*dvd(0) + poly_coef_cbr_z(l, 2, &
6143# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6144 & 1)*dvd(-1) + poly_coef_cbr_z(l, 2, 2)*dvd(-2)
6145# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6146 poly(0) = vp0 + poly_coef_cbr_z(l, 3, &
6147# 1398 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6148 & 0)*dvd(-1) + poly_coef_cbr_z(l, 3, &
6149# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6150 & 1)*dvd(-2) + poly_coef_cbr_z(l, 3, 2)*dvd(-3)
6151# 1400 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6152 else
6153# 1402 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6154 poly(0) = (-1._wp*v(-1) + 5._wp*v(0) + 2._wp*v(1))/6._wp
6155 poly(1) = (2._wp*v(0) + 5._wp*v(1) - 1._wp*v(2))/6._wp
6156 poly(2) = (2._wp*v(-2) - 7._wp*v(-1) + 11._wp*v(0))/6._wp
6157 poly(3) = (3._wp*v(0) + 13._wp*v(1) - 5._wp*v(2) + 1._wp*v(3))/12._wp
6158 poly(4) = (-3._wp*v(-3) + 13._wp*v(-2) - 23._wp*v(-1) + 25._wp*v(0))/12._wp
6159# 1408 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6160 end if
6161
6162 if (wenojs) then
6163 do q = 0, weno_num_stencils
6164 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
6165# 1413 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6166 end do
6167 else if (mapped_weno) then
6168 do q = 0, weno_num_stencils
6169 alpha(q) = d_cbr_z(q, l)/(beta(q)**2._wp)
6170# 1417 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6171 end do
6172 omega = alpha/sum(alpha)
6173 do q = 0, weno_num_stencils
6174 alpha(q) = (d_cbr_z(q, l)*(1._wp + d_cbr_z(q, &
6175# 1421 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6176 & l) - 3._wp*omega(q)) + omega(q)**2._wp)*(omega(q)/(d_cbr_z(q, &
6177# 1422 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6178 & l)**2._wp + omega(q)*(1._wp - 2._wp*d_cbr_z(q, l))))
6179# 1423 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6180 end do
6181 else if (wenoz) then
6182
6183# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6184#if defined(MFC_OpenACC)
6185# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6186!$acc loop seq
6187# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6188#elif defined(MFC_OpenMP)
6189# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6190
6191# 1425 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6192#endif
6193# 1426 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6194 do q = 0, weno_num_stencils
6195 ! wenoz_q = 2,3,4 for stability
6196 alpha(q) = d_cbr_z(q, l)*(1._wp + (tau/beta(q))**wenoz_q)
6197# 1429 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6198 end do
6199 else if (teno) then
6200
6201# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6202#if defined(MFC_OpenACC)
6203# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6204!$acc loop seq
6205# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6206#elif defined(MFC_OpenMP)
6207# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6208
6209# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6210#endif
6211# 1432 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6212 do q = 0, weno_num_stencils
6213 alpha(q) = delta(q)*d_cbr_z(q, l)
6214# 1434 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6215 end do
6216 end if
6217
6218 omega = alpha/sum(alpha)
6219
6220 vr_rs_vf_x(j, k, l, &
6221 & i) = omega(0)*poly(0) + omega(1)*poly(1) + omega(2)*poly(2) + omega(3)*poly(3)
6222
6223 if (teno) then
6224# 1444 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6225 vr_rs_vf_x(j, k, l, i) = vr_rs_vf_x(j, k, l, i) + omega(4)*poly(4)
6226# 1446 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6227 end if
6228 end do
6229 end do
6230 end do
6231 end do
6232
6233# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6234#if defined(MFC_OpenACC)
6235# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6236!$acc end parallel loop
6237# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6238#elif defined(MFC_OpenMP)
6239# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6240
6241# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6242!$omp end target teams loop
6243# 1451 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6244#endif
6245# 1452 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6246 end if
6247# 1454 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6248# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6249 end if
6250
6251 if (int_comp > 0 .and. v_size >= eqn_idx%adv%end) then
6252 call nvtxstartrange("WENO-INTCOMP")
6253 call s_thinc_compression(v_rs_weno, vl_rs_vf_x, vr_rs_vf_x, weno_dir, is1_weno, is2_weno, is3_weno)
6254 call nvtxendrange()
6255 end if
6256
6257 end subroutine s_weno
6258
6259 !> Enforce monotonicity-preserving bounds on the WENO reconstruction
6260 subroutine s_preserve_monotonicity(v_rs_ws, vL_rs_vf, vR_rs_vf, weno_dir)
6261
6262 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(in) :: v_rs_ws
6263 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:), intent(inout) :: vL_rs_vf, vR_rs_vf
6264 integer, intent(in) :: weno_dir
6265 integer :: i, j, k, l
6266 real(wp), dimension(-1:1) :: d !< Curvature measures at the zone centers
6267 real(wp) :: d_MD, d_LC !< Median (md) curvature and large curvature (LC) measures
6268 ! The left and right upper bounds (UL), medians, large curvatures, minima, and maxima of the WENO-reconstructed values of
6269 ! the cell- average variables.
6270 real(wp) :: vL_UL, vR_UL
6271 real(wp) :: vL_MD, vR_MD
6272 real(wp) :: vL_LC, vR_LC
6273 real(wp) :: vL_min, vR_min
6274 real(wp) :: vL_max, vR_max
6275 real(wp), parameter :: alpha = 2._wp !< Max CFL stability parameter (CFL < 1/(1+alpha))
6276 real(wp), parameter :: beta = 4._wp/3._wp !< Local curvature freedom parameter
6277 real(wp), parameter :: alpha_mp = 2._wp
6278 real(wp), parameter :: beta_mp = 4._wp/3._wp
6279 real(wp) :: vp0, vp1, vp2, vm1, vm2
6280
6281# 1491 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6282# 1492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6283# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6284 if (weno_dir == 1) then
6285# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6286
6287# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6288
6289# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6290#if defined(MFC_OpenACC)
6291# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6292!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6293# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6294#elif defined(MFC_OpenMP)
6295# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6296
6297# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6298
6299# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6300
6301# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6302!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6303# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6304!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6305# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6306#endif
6307# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6308 do l = is3_weno%beg, is3_weno%end
6309# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6310 do k = is2_weno%beg, is2_weno%end
6311# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6312 do j = is1_weno%beg, is1_weno%end
6313# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6314 do i = 1, v_size
6315 ! Second-order undivided differences for curvature estimation
6316
6317 vp0 = v_rs_ws(j, k, l, i)
6318# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6319 vm1 = v_rs_ws(j - 1, k, l, i)
6320# 1503 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6321 vm2 = v_rs_ws(j - 2, k, l, i)
6322# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6323 vp1 = v_rs_ws(j + 1, k, l, i)
6324# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6325 vp2 = v_rs_ws(j + 2, k, l, i)
6326# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6327
6328 d(-1) = vp0 + vm2 - vm1*2._wp
6329 d(0) = vp1 + vm1 - vp0*2._wp
6330 d(1) = vp2 + vp0 - vp1*2._wp
6331
6332 ! Median function for oscillation detection
6333 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6334 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6335 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6336 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6337
6338 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6339 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6340 & 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
6341
6342 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6343
6344 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6345
6346 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6347
6348 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6349
6350 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6351
6352 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, &
6353 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6354 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6355 ! END: Left Monotonicity Preserving Bound
6356
6357 ! Right Monotonicity Preserving Bound
6358 d(-1) = vp0 + vm2 - vm1*2._wp
6359 d(0) = vp1 + vm1 - vp0*2._wp
6360 d(1) = vp2 + vp0 - vp1*2._wp
6361
6362 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6363 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6364 & 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
6365
6366 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6367 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6368 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6369 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6370
6371 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6372
6373 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6374
6375 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6376
6377 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6378
6379 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6380
6381 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, &
6382 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6383 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6384 ! END: Right Monotonicity Preserving Bound
6385 end do
6386 end do
6387 end do
6388 end do
6389
6390# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6391#if defined(MFC_OpenACC)
6392# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6393!$acc end parallel loop
6394# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6395#elif defined(MFC_OpenMP)
6396# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6397
6398# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6399!$omp end target teams loop
6400# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6401#endif
6402# 1569 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6403 end if
6404# 1491 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6405# 1492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6406# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6407 if (weno_dir == 2) then
6408# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6409
6410# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6411
6412# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6413#if defined(MFC_OpenACC)
6414# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6415!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6416# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6417#elif defined(MFC_OpenMP)
6418# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6419
6420# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6421
6422# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6423
6424# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6425!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6426# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6427!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6428# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6429#endif
6430# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6431 do l = is3_weno%beg, is3_weno%end
6432# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6433 do k = is1_weno%beg, is1_weno%end
6434# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6435 do j = is2_weno%beg, is2_weno%end
6436# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6437 do i = 1, v_size
6438 ! Second-order undivided differences for curvature estimation
6439
6440 vp0 = v_rs_ws(j, k, l, i)
6441# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6442 vm1 = v_rs_ws(j, k - 1, l, i)
6443# 1503 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6444 vm2 = v_rs_ws(j, k - 2, l, i)
6445# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6446 vp1 = v_rs_ws(j, k + 1, l, i)
6447# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6448 vp2 = v_rs_ws(j, k + 2, l, i)
6449# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6450
6451 d(-1) = vp0 + vm2 - vm1*2._wp
6452 d(0) = vp1 + vm1 - vp0*2._wp
6453 d(1) = vp2 + vp0 - vp1*2._wp
6454
6455 ! Median function for oscillation detection
6456 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6457 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6458 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6459 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6460
6461 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6462 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6463 & 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
6464
6465 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6466
6467 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6468
6469 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6470
6471 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6472
6473 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6474
6475 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, &
6476 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6477 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6478 ! END: Left Monotonicity Preserving Bound
6479
6480 ! Right Monotonicity Preserving Bound
6481 d(-1) = vp0 + vm2 - vm1*2._wp
6482 d(0) = vp1 + vm1 - vp0*2._wp
6483 d(1) = vp2 + vp0 - vp1*2._wp
6484
6485 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6486 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6487 & 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
6488
6489 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6490 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6491 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6492 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6493
6494 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6495
6496 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6497
6498 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6499
6500 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6501
6502 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6503
6504 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, &
6505 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6506 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6507 ! END: Right Monotonicity Preserving Bound
6508 end do
6509 end do
6510 end do
6511 end do
6512
6513# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6514#if defined(MFC_OpenACC)
6515# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6516!$acc end parallel loop
6517# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6518#elif defined(MFC_OpenMP)
6519# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6520
6521# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6522!$omp end target teams loop
6523# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6524#endif
6525# 1569 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6526 end if
6527# 1491 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6528# 1492 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6529# 1493 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6530 if (weno_dir == 3) then
6531# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6532
6533# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6534
6535# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6536#if defined(MFC_OpenACC)
6537# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6538!$acc parallel loop collapse(4) gang vector default(present) private(d, vp0, vp1, vp2, vm1, vm2)
6539# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6540#elif defined(MFC_OpenMP)
6541# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6542
6543# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6544
6545# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6546
6547# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6548!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
6549# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6550!$omp& private(d, vp0, vp1, vp2, vm1, vm2)
6551# 1494 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6552#endif
6553# 1495 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6554 do l = is1_weno%beg, is1_weno%end
6555# 1496 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6556 do k = is2_weno%beg, is2_weno%end
6557# 1497 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6558 do j = is3_weno%beg, is3_weno%end
6559# 1498 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6560 do i = 1, v_size
6561 ! Second-order undivided differences for curvature estimation
6562
6563 vp0 = v_rs_ws(j, k, l, i)
6564# 1502 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6565 vm1 = v_rs_ws(j, k, l - 1, i)
6566# 1503 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6567 vm2 = v_rs_ws(j, k, l - 2, i)
6568# 1504 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6569 vp1 = v_rs_ws(j, k, l + 1, i)
6570# 1505 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6571 vp2 = v_rs_ws(j, k, l + 2, i)
6572# 1506 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6573
6574 d(-1) = vp0 + vm2 - vm1*2._wp
6575 d(0) = vp1 + vm1 - vp0*2._wp
6576 d(1) = vp2 + vp0 - vp1*2._wp
6577
6578 ! Median function for oscillation detection
6579 d_md = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6580 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6581 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6582 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6583
6584 d_lc = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6585 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6586 & 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
6587
6588 vl_ul = vp0 - (vp1 - vp0)*alpha_mp
6589
6590 vl_md = (vp0 + vm1 - d_md)*5.e-1_wp
6591
6592 vl_lc = vp0 - (vp1 - vp0)*5.e-1_wp + beta_mp*d_lc
6593
6594 vl_min = max(min(vp0, vm1, vl_md), min(vp0, vl_ul, vl_lc))
6595
6596 vl_max = min(max(vp0, vm1, vl_md), max(vp0, vl_ul, vl_lc))
6597
6598 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, &
6599 & i)) + sign(5.e-1_wp, vl_max - vl_rs_vf(j, k, l, i)))*min(abs(vl_min - vl_rs_vf(j, k, &
6600 & l, i)), abs(vl_max - vl_rs_vf(j, k, l, i)))
6601 ! END: Left Monotonicity Preserving Bound
6602
6603 ! Right Monotonicity Preserving Bound
6604 d(-1) = vp0 + vm2 - vm1*2._wp
6605 d(0) = vp1 + vm1 - vp0*2._wp
6606 d(1) = vp2 + vp0 - vp1*2._wp
6607
6608 d_md = (sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, 4._wp*d(1) - d(0)))*abs((sign(1._wp, &
6609 & 4._wp*d(0) - d(1)) + sign(1._wp, d(0)))*(sign(1._wp, 4._wp*d(0) - d(1)) + sign(1._wp, &
6610 & 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
6611
6612 d_lc = (sign(1._wp, 4._wp*d(-1) - d(0)) + sign(1._wp, 4._wp*d(0) - d(-1)))*abs((sign(1._wp, &
6613 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(-1)))*(sign(1._wp, &
6614 & 4._wp*d(-1) - d(0)) + sign(1._wp, d(0))))*min(abs(4._wp*d(-1) - d(0)), abs(d(-1)), &
6615 & abs(4._wp*d(0) - d(-1)), abs(d(0)))/8._wp
6616
6617 vr_ul = vp0 + (vp0 - vm1)*alpha_mp
6618
6619 vr_md = (vp0 + vp1 - d_md)*5.e-1_wp
6620
6621 vr_lc = vp0 + (vp0 - vm1)*5.e-1_wp + beta_mp*d_lc
6622
6623 vr_min = max(min(vp0, vp1, vr_md), min(vp0, vr_ul, vr_lc))
6624
6625 vr_max = min(max(vp0, vp1, vr_md), max(vp0, vr_ul, vr_lc))
6626
6627 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, &
6628 & i)) + sign(5.e-1_wp, vr_max - vr_rs_vf(j, k, l, i)))*min(abs(vr_min - vr_rs_vf(j, k, &
6629 & l, i)), abs(vr_max - vr_rs_vf(j, k, l, i)))
6630 ! END: Right Monotonicity Preserving Bound
6631 end do
6632 end do
6633 end do
6634 end do
6635
6636# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6637#if defined(MFC_OpenACC)
6638# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6639!$acc end parallel loop
6640# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6641#elif defined(MFC_OpenMP)
6642# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6643
6644# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6645!$omp end target teams loop
6646# 1568 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6647#endif
6648# 1569 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6649 end if
6650# 1571 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6651
6652 end subroutine s_preserve_monotonicity
6653
6654 !> Module deallocation and/or disassociation procedures
6655 impure subroutine s_finalize_weno_module()
6656
6657 if (weno_order == 1) return
6658
6659 ! Deallocating the WENO-stencil of the WENO-reconstructed variables
6660
6661#ifdef MFC_DEBUG
6662# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6663 block
6664# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6665 use iso_fortran_env, only: output_unit
6666# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6667
6668# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6669 print *, 'm_weno.fpp:1581: ', '@:DEALLOCATE(v_rs_weno)'
6670# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6671
6672# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6673 call flush (output_unit)
6674# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6675 end block
6676# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6677#endif
6678# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6679
6680# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6681#if defined(MFC_OpenACC)
6682# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6683!$acc exit data delete(v_rs_weno)
6684# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6685#elif defined(MFC_OpenMP)
6686# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6687!$omp target exit data map(release:v_rs_weno)
6688# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6689#endif
6690# 1581 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6691 deallocate (v_rs_weno)
6692# 1582 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6693
6694 ! Deallocating WENO coefficients in x-direction
6695#ifdef MFC_DEBUG
6696# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6697 block
6698# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6699 use iso_fortran_env, only: output_unit
6700# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6701
6702# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6703 print *, 'm_weno.fpp:1584: ', '@:DEALLOCATE(poly_coef_cbL_x, poly_coef_cbR_x)'
6704# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6705
6706# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6707 call flush (output_unit)
6708# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6709 end block
6710# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6711#endif
6712# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6713
6714# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6715#if defined(MFC_OpenACC)
6716# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6717!$acc exit data delete(poly_coef_cbL_x, poly_coef_cbR_x)
6718# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6719#elif defined(MFC_OpenMP)
6720# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6721!$omp target exit data map(release:poly_coef_cbL_x, poly_coef_cbR_x)
6722# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6723#endif
6724# 1584 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6725 deallocate (poly_coef_cbl_x, poly_coef_cbr_x)
6726# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6727#ifdef MFC_DEBUG
6728# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6729 block
6730# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6731 use iso_fortran_env, only: output_unit
6732# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6733
6734# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6735 print *, 'm_weno.fpp:1585: ', '@:DEALLOCATE(d_cbL_x, d_cbR_x)'
6736# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6737
6738# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6739 call flush (output_unit)
6740# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6741 end block
6742# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6743#endif
6744# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6745
6746# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6747#if defined(MFC_OpenACC)
6748# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6749!$acc exit data delete(d_cbL_x, d_cbR_x)
6750# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6751#elif defined(MFC_OpenMP)
6752# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6753!$omp target exit data map(release:d_cbL_x, d_cbR_x)
6754# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6755#endif
6756# 1585 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6757 deallocate (d_cbl_x, d_cbr_x)
6758# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6759#ifdef MFC_DEBUG
6760# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6761 block
6762# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6763 use iso_fortran_env, only: output_unit
6764# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6765
6766# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6767 print *, 'm_weno.fpp:1586: ', '@:DEALLOCATE(beta_coef_x)'
6768# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6769
6770# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6771 call flush (output_unit)
6772# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6773 end block
6774# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6775#endif
6776# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6777
6778# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6779#if defined(MFC_OpenACC)
6780# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6781!$acc exit data delete(beta_coef_x)
6782# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6783#elif defined(MFC_OpenMP)
6784# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6785!$omp target exit data map(release:beta_coef_x)
6786# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6787#endif
6788# 1586 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6789 deallocate (beta_coef_x)
6790# 1587 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6791
6792 ! Deallocating WENO coefficients in y-direction
6793 if (n == 0) return
6794
6795#ifdef MFC_DEBUG
6796# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6797 block
6798# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6799 use iso_fortran_env, only: output_unit
6800# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6801
6802# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6803 print *, 'm_weno.fpp:1591: ', '@:DEALLOCATE(poly_coef_cbL_y, poly_coef_cbR_y)'
6804# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6805
6806# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6807 call flush (output_unit)
6808# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6809 end block
6810# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6811#endif
6812# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6813
6814# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6815#if defined(MFC_OpenACC)
6816# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6817!$acc exit data delete(poly_coef_cbL_y, poly_coef_cbR_y)
6818# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6819#elif defined(MFC_OpenMP)
6820# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6821!$omp target exit data map(release:poly_coef_cbL_y, poly_coef_cbR_y)
6822# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6823#endif
6824# 1591 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6825 deallocate (poly_coef_cbl_y, poly_coef_cbr_y)
6826# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6827#ifdef MFC_DEBUG
6828# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6829 block
6830# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6831 use iso_fortran_env, only: output_unit
6832# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6833
6834# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6835 print *, 'm_weno.fpp:1592: ', '@:DEALLOCATE(d_cbL_y, d_cbR_y)'
6836# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6837
6838# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6839 call flush (output_unit)
6840# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6841 end block
6842# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6843#endif
6844# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6845
6846# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6847#if defined(MFC_OpenACC)
6848# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6849!$acc exit data delete(d_cbL_y, d_cbR_y)
6850# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6851#elif defined(MFC_OpenMP)
6852# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6853!$omp target exit data map(release:d_cbL_y, d_cbR_y)
6854# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6855#endif
6856# 1592 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6857 deallocate (d_cbl_y, d_cbr_y)
6858# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6859#ifdef MFC_DEBUG
6860# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6861 block
6862# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6863 use iso_fortran_env, only: output_unit
6864# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6865
6866# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6867 print *, 'm_weno.fpp:1593: ', '@:DEALLOCATE(beta_coef_y)'
6868# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6869
6870# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6871 call flush (output_unit)
6872# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6873 end block
6874# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6875#endif
6876# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6877
6878# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6879#if defined(MFC_OpenACC)
6880# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6881!$acc exit data delete(beta_coef_y)
6882# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6883#elif defined(MFC_OpenMP)
6884# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6885!$omp target exit data map(release:beta_coef_y)
6886# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6887#endif
6888# 1593 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6889 deallocate (beta_coef_y)
6890# 1594 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6891
6892 ! Deallocating WENO coefficients in z-direction
6893 if (p == 0) return
6894
6895#ifdef MFC_DEBUG
6896# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6897 block
6898# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6899 use iso_fortran_env, only: output_unit
6900# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6901
6902# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6903 print *, 'm_weno.fpp:1598: ', '@:DEALLOCATE(poly_coef_cbL_z, poly_coef_cbR_z)'
6904# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6905
6906# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6907 call flush (output_unit)
6908# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6909 end block
6910# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6911#endif
6912# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6913
6914# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6915#if defined(MFC_OpenACC)
6916# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6917!$acc exit data delete(poly_coef_cbL_z, poly_coef_cbR_z)
6918# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6919#elif defined(MFC_OpenMP)
6920# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6921!$omp target exit data map(release:poly_coef_cbL_z, poly_coef_cbR_z)
6922# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6923#endif
6924# 1598 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6925 deallocate (poly_coef_cbl_z, poly_coef_cbr_z)
6926# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6927#ifdef MFC_DEBUG
6928# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6929 block
6930# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6931 use iso_fortran_env, only: output_unit
6932# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6933
6934# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6935 print *, 'm_weno.fpp:1599: ', '@:DEALLOCATE(d_cbL_z, d_cbR_z)'
6936# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6937
6938# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6939 call flush (output_unit)
6940# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6941 end block
6942# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6943#endif
6944# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6945
6946# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6947#if defined(MFC_OpenACC)
6948# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6949!$acc exit data delete(d_cbL_z, d_cbR_z)
6950# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6951#elif defined(MFC_OpenMP)
6952# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6953!$omp target exit data map(release:d_cbL_z, d_cbR_z)
6954# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6955#endif
6956# 1599 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6957 deallocate (d_cbl_z, d_cbr_z)
6958# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6959#ifdef MFC_DEBUG
6960# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6961 block
6962# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6963 use iso_fortran_env, only: output_unit
6964# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6965
6966# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6967 print *, 'm_weno.fpp:1600: ', '@:DEALLOCATE(beta_coef_z)'
6968# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6969
6970# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6971 call flush (output_unit)
6972# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6973 end block
6974# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6975#endif
6976# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6977
6978# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6979#if defined(MFC_OpenACC)
6980# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6981!$acc exit data delete(beta_coef_z)
6982# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6983#elif defined(MFC_OpenMP)
6984# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6985!$omp target exit data map(release:beta_coef_z)
6986# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6987#endif
6988# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6989 deallocate (beta_coef_z)
6990# 1601 "/home/runner/work/MFC/MFC/src/simulation/m_weno.fpp"
6991
6992 end subroutine s_finalize_weno_module
6993
6994end 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 reconstruction 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.