MFC: Simulation
High-fidelity multiphase flow simulation
Loading...
Searching...
No Matches
m_weno Module Reference

Weighted essentially non-oscillatory (WENO) reconstruction scheme that is supplemented with monotonicity preserving bounds (MPWENO) and a mapping function that boosts the accuracy of the non-linear weights (WENOM). MPWENO, see Balsara and Shu (2000), prevents the reconstructed values to lay outside the range set by the stencil, while WENOM, see Henrick et al. (2005), recovers the formal order of accuracy of the reconstruction at critical points. Please note that the basic WENO approach is implemented according to the work of Jiang and Shu (1996). WENO-Z, which is less dissipative than WENO-JS and WENO-M, is implemented according to the work of Borges, et al. (2008). TENO, which is even less dissipative than WENO-Z but is less robust, is implemented according to the work of Fu et al. (2016). More...

Functions/Subroutines

impure subroutine, public s_initialize_weno_module
 The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are necessary to setup the module.
 
subroutine s_compute_weno_coefficients (weno_dir, is)
 The purpose of this subroutine is to compute the grid dependent coefficients of the WENO polynomials, ideal weights and smoothness indicators, provided the order, the coordinate direction and the location of the WENO reconstruction.
 
subroutine, public s_weno (v_vf, vl_rs_vf_x, vl_rs_vf_y, vl_rs_vf_z, vr_rs_vf_x, vr_rs_vf_y, vr_rs_vf_z, weno_dir, is1_weno_d, is2_weno_d, is3_weno_d)
 
subroutine, public s_initialize_weno (v_vf, weno_dir)
 The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are required for the setup of the WENO reconstruction.
 
subroutine s_preserve_monotonicity (v_rs_ws, vl_rs_vf, vr_rs_vf)
 The goal of this subroutine is to ensure that the WENO reconstruction is monotonic. The latter is achieved by enforcing monotonicity preserving bounds of Suresh and Huynh (1997). The resulting MPWENO reconstruction, see Balsara and Shu (2000), ensures that the reconstructed values do not reside outside the range spanned by WENO stencil.
 
impure subroutine, public s_finalize_weno_module ()
 Module deallocation and/or disassociation procedures.
 

Variables

integer v_size
 Number of WENO-reconstructed cell-average variables.
 
The cell-average variables that will be WENO-reconstructed. Formerly, they

are stored in v_vf. However, they are transferred to v_rs_wsL and v_rs_wsR as to be reshaped (RS) and/or characteristically decomposed. The reshaping allows the WENO procedure to be independent of the coordinate direction of the reconstruction. Lastly, notice that the left (L) and right (R) results of the characteristic decomposition are stored in custom-constructed WENO- stencils (WS) that are annexed to each position of a given scalar field.

real(wp), dimension(:, :, :, :), allocatable v_rs_ws_x
 
real(wp), dimension(:, :, :, :), allocatable v_rs_ws_y
 
real(wp), dimension(:, :, :, :), allocatable v_rs_ws_z
 
Polynomial coefficients at the left and right cell-boundaries (CB) and at

the left and right quadrature points (QP), in the x-, y- and z-directions. Note that the first dimension of the array identifies the polynomial, the second dimension identifies the position of its coefficients and the last dimension denotes the cell-location in the relevant coordinate direction.

real(wp), dimension(:, :, :), allocatable, target poly_coef_cbl_x
 
real(wp), dimension(:, :, :), allocatable, target poly_coef_cbl_y
 
real(wp), dimension(:, :, :), allocatable, target poly_coef_cbl_z
 
real(wp), dimension(:, :, :), allocatable, target poly_coef_cbr_x
 
real(wp), dimension(:, :, :), allocatable, target poly_coef_cbr_y
 
real(wp), dimension(:, :, :), allocatable, target poly_coef_cbr_z
 
The ideal weights at the left and the right cell-boundaries and at the

left and the right quadrature points, in x-, y- and z-directions. Note that the first dimension of the array identifies the weight, while the last denotes the cell-location in the relevant coordinate direction.

real(wp), dimension(:, :), allocatable, target d_cbl_x
 
real(wp), dimension(:, :), allocatable, target d_cbl_y
 
real(wp), dimension(:, :), allocatable, target d_cbl_z
 
real(wp), dimension(:, :), allocatable, target d_cbr_x
 
real(wp), dimension(:, :), allocatable, target d_cbr_y
 
real(wp), dimension(:, :), allocatable, target d_cbr_z
 
Smoothness indicator coefficients in the x-, y-, and z-directions. Note

that the first array dimension identifies the smoothness indicator, the second identifies the position of its coefficients and the last denotes the cell-location in the relevant coordinate direction.

real(wp), dimension(:, :, :), allocatable, target beta_coef_x
 
real(wp), dimension(:, :, :), allocatable, target beta_coef_y
 
real(wp), dimension(:, :, :), allocatable, target beta_coef_z
 
Indical bounds in the s1-, s2- and s3-directions
type(int_bounds_infois1_weno
 
type(int_bounds_infois2_weno
 
type(int_bounds_infois3_weno
 

Detailed Description

Weighted essentially non-oscillatory (WENO) reconstruction scheme that is supplemented with monotonicity preserving bounds (MPWENO) and a mapping function that boosts the accuracy of the non-linear weights (WENOM). MPWENO, see Balsara and Shu (2000), prevents the reconstructed values to lay outside the range set by the stencil, while WENOM, see Henrick et al. (2005), recovers the formal order of accuracy of the reconstruction at critical points. Please note that the basic WENO approach is implemented according to the work of Jiang and Shu (1996). WENO-Z, which is less dissipative than WENO-JS and WENO-M, is implemented according to the work of Borges, et al. (2008). TENO, which is even less dissipative than WENO-Z but is less robust, is implemented according to the work of Fu et al. (2016).

Function/Subroutine Documentation

◆ s_compute_weno_coefficients()

subroutine m_weno::s_compute_weno_coefficients ( integer, intent(in) weno_dir,
type(int_bounds_info), intent(in) is )

The purpose of this subroutine is to compute the grid dependent coefficients of the WENO polynomials, ideal weights and smoothness indicators, provided the order, the coordinate direction and the location of the WENO reconstruction.

Parameters
weno_dirCoordinate direction of the WENO reconstruction
isIndex bounds in the s-direction
Here is the caller graph for this function:

◆ s_finalize_weno_module()

impure subroutine, public m_weno::s_finalize_weno_module

Module deallocation and/or disassociation procedures.

Here is the caller graph for this function:

◆ s_initialize_weno()

subroutine, public m_weno::s_initialize_weno ( type(scalar_field), dimension(:), intent(in) v_vf,
integer, intent(in) weno_dir )

The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are required for the setup of the WENO reconstruction.

Parameters
v_vfCell-averaged variables
vL_vfLeft WENO reconstructed cell-boundary values
vR_vfRight WENO reconstructed cell-boundary values
norm_dirCharacteristic decommposition coordinate direction
weno_dirCoordinate direction of the WENO reconstruction
is1_wenoIndex bounds in first coordinate direction
is2_wenoIndex bounds in second coordinate direction
is3_wenoIndex bounds in third coordinate direction
Here is the caller graph for this function:

◆ s_initialize_weno_module()

impure subroutine, public m_weno::s_initialize_weno_module

The computation of parameters, the allocation of memory, the association of pointers and/or the execution of any other procedures that are necessary to setup the module.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ s_preserve_monotonicity()

subroutine m_weno::s_preserve_monotonicity ( real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(in) v_rs_ws,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_rs_vf,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_rs_vf )

The goal of this subroutine is to ensure that the WENO reconstruction is monotonic. The latter is achieved by enforcing monotonicity preserving bounds of Suresh and Huynh (1997). The resulting MPWENO reconstruction, see Balsara and Shu (2000), ensures that the reconstructed values do not reside outside the range spanned by WENO stencil.

Parameters
iEquation number
jFirst-coordinate cell index
kSecone-coordinate cell index
lThire-coordinate cell index
Here is the caller graph for this function:

◆ s_weno()

subroutine, public m_weno::s_weno ( type(scalar_field), dimension(1:), intent(in) v_vf,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_rs_vf_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_rs_vf_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vl_rs_vf_z,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_rs_vf_x,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_rs_vf_y,
real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, 1:), intent(inout) vr_rs_vf_z,
integer, intent(in) weno_dir,
type(int_bounds_info), intent(in) is1_weno_d,
type(int_bounds_info), intent(in) is2_weno_d,
type(int_bounds_info), intent(in) is3_weno_d )
Here is the call graph for this function:

Variable Documentation

◆ beta_coef_x

real(wp), dimension(:, :, :), allocatable, target m_weno::beta_coef_x

◆ beta_coef_y

real(wp), dimension(:, :, :), allocatable, target m_weno::beta_coef_y

◆ beta_coef_z

real(wp), dimension(:, :, :), allocatable, target m_weno::beta_coef_z

◆ d_cbl_x

real(wp), dimension(:, :), allocatable, target m_weno::d_cbl_x

◆ d_cbl_y

real(wp), dimension(:, :), allocatable, target m_weno::d_cbl_y

◆ d_cbl_z

real(wp), dimension(:, :), allocatable, target m_weno::d_cbl_z

◆ d_cbr_x

real(wp), dimension(:, :), allocatable, target m_weno::d_cbr_x

◆ d_cbr_y

real(wp), dimension(:, :), allocatable, target m_weno::d_cbr_y

◆ d_cbr_z

real(wp), dimension(:, :), allocatable, target m_weno::d_cbr_z

◆ is1_weno

type(int_bounds_info) m_weno::is1_weno

◆ is2_weno

type(int_bounds_info) m_weno::is2_weno

◆ is3_weno

type(int_bounds_info) m_weno::is3_weno

◆ poly_coef_cbl_x

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbl_x

◆ poly_coef_cbl_y

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbl_y

◆ poly_coef_cbl_z

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbl_z

◆ poly_coef_cbr_x

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbr_x

◆ poly_coef_cbr_y

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbr_y

◆ poly_coef_cbr_z

real(wp), dimension(:, :, :), allocatable, target m_weno::poly_coef_cbr_z

◆ v_rs_ws_x

real(wp), dimension(:, :, :, :), allocatable m_weno::v_rs_ws_x

◆ v_rs_ws_y

real(wp), dimension(:, :, :, :), allocatable m_weno::v_rs_ws_y

◆ v_rs_ws_z

real(wp), dimension(:, :, :, :), allocatable m_weno::v_rs_ws_z

◆ v_size

integer m_weno::v_size

Number of WENO-reconstructed cell-average variables.