MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_cbc Module Reference

Characteristic boundary conditions (CBC) for slip walls, non-reflecting subsonic inflow/outflow, and supersonic boundaries. More...

Functions/Subroutines

impure subroutine, public s_initialize_cbc_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_cbc_coefficients (cbc_dir_in, cbc_loc_in)
 Compute CBC coefficients.
subroutine s_associate_cbc_coefficients_pointers (cbc_dir_in, cbc_loc_in)
 Associates finite-difference and polynomial-interpolation CBC coefficients with targets based on coordinate direction and boundary location. The goal of the procedure is to associate the FD and PI coefficients, or CBC coefficients, with the appropriate targets, based on the coordinate direction and location of the CBC.
subroutine, public s_cbc (q_prim_vf, flux_vf, flux_src_vf, cbc_dir_norm, cbc_loc_norm, ix, iy, iz)
 The following is the implementation of the CBC based on the work of Thompson (1987, 1990) on hyperbolic systems. The CBC is indirectly applied in the computation of the right-hand-side (RHS) near the relevant domain boundary through the modification of the fluxes.
subroutine s_initialize_cbc (q_prim_vf, flux_vf, flux_src_vf, ix, iy, iz)
 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 selected CBC.
subroutine s_finalize_cbc (flux_vf, flux_src_vf)
 Deallocation and/or the disassociation procedures that are necessary in order to finalize the CBC application.
elemental subroutine s_any_cbc_boundaries (toggle)
 Detects whether any domain boundary uses characteristic boundary conditions.
impure subroutine, public s_finalize_cbc_module
 Module deallocation and/or disassociation procedures.

Variables

real(wp), dimension(:, :, :, :), allocatable q_prim_rsx_vf
real(wp), dimension(:, :, :, :), allocatable q_prim_rsy_vf
real(wp), dimension(:, :, :, :), allocatable q_prim_rsz_vf
real(wp), dimension(:, :, :, :), allocatable f_rsx_vf
real(wp), dimension(:, :, :, :), allocatable f_src_rsx_vf
real(wp), dimension(:, :, :, :), allocatable f_rsy_vf
real(wp), dimension(:, :, :, :), allocatable f_src_rsy_vf
real(wp), dimension(:, :, :, :), allocatable f_rsz_vf
real(wp), dimension(:, :, :, :), allocatable f_src_rsz_vf
real(wp), dimension(:, :, :, :), allocatable flux_rsx_vf_l
real(wp), dimension(:, :, :, :), allocatable flux_src_rsx_vf_l
real(wp), dimension(:, :, :, :), allocatable flux_rsy_vf_l
real(wp), dimension(:, :, :, :), allocatable flux_src_rsy_vf_l
real(wp), dimension(:, :, :, :), allocatable flux_rsz_vf_l
real(wp), dimension(:, :, :, :), allocatable flux_src_rsz_vf_l
real(wp), dimension(:), allocatable ds
 Cell-width distribution in the s-direction.
real(wp), dimension(:, :), allocatable fd_coef_x
 Finite diff. coefficients x-dir.
real(wp), dimension(:, :), allocatable fd_coef_y
 Finite diff. coefficients y-dir.
real(wp), dimension(:, :), allocatable fd_coef_z
 Finite diff. coefficients z-dir.
real(wp), dimension(:, :, :), allocatable pi_coef_x
 Polynomial interpolant coefficients in x-dir.
real(wp), dimension(:, :, :), allocatable pi_coef_y
 Polynomial interpolant coefficients in y-dir.
real(wp), dimension(:, :, :), allocatable pi_coef_z
 Polynomial interpolant coefficients in z-dir.
type(int_bounds_infois1
type(int_bounds_infois2
type(int_bounds_infois3
 Indical bounds in the s1-, s2- and s3-directions.
integer dj
integer bcxb
integer bcxe
integer bcyb
integer bcye
integer bczb
integer bcze
integer cbc_dir
integer cbc_loc
integer flux_cbc_index
real(wp), dimension(:), allocatable pres_in
real(wp), dimension(:), allocatable pres_out
real(wp), dimension(:), allocatable del_in
real(wp), dimension(:), allocatable del_out
real(wp), dimension(:, :), allocatable vel_in
real(wp), dimension(:, :), allocatable vel_out
real(wp), dimension(:, :), allocatable alpha_rho_in
real(wp), dimension(:, :), allocatable alpha_in

Detailed Description

Characteristic boundary conditions (CBC) for slip walls, non-reflecting subsonic inflow/outflow, and supersonic boundaries.

Function/Subroutine Documentation

◆ s_any_cbc_boundaries()

elemental subroutine m_cbc::s_any_cbc_boundaries ( logical, intent(inout) toggle)

Detects whether any domain boundary uses characteristic boundary conditions.

Definition at line 7009 of file m_cbc.fpp.f90.

Here is the caller graph for this function:

◆ s_associate_cbc_coefficients_pointers()

subroutine m_cbc::s_associate_cbc_coefficients_pointers ( integer, intent(in) cbc_dir_in,
integer, intent(in) cbc_loc_in )

Associates finite-difference and polynomial-interpolation CBC coefficients with targets based on coordinate direction and boundary location. The goal of the procedure is to associate the FD and PI coefficients, or CBC coefficients, with the appropriate targets, based on the coordinate direction and location of the CBC.

Parameters
cbc_dir_inCBC coordinate direction
cbc_loc_inCBC coordinate location

Definition at line 2384 of file m_cbc.fpp.f90.

Here is the caller graph for this function:

◆ s_cbc()

subroutine, public m_cbc::s_cbc ( type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) flux_vf,
type(scalar_field), dimension(sys_size), intent(inout) flux_src_vf,
integer, intent(in) cbc_dir_norm,
integer, intent(in) cbc_loc_norm,
type(int_bounds_info), intent(in) ix,
type(int_bounds_info), intent(in) iy,
type(int_bounds_info), intent(in) iz )

The following is the implementation of the CBC based on the work of Thompson (1987, 1990) on hyperbolic systems. The CBC is indirectly applied in the computation of the right-hand-side (RHS) near the relevant domain boundary through the modification of the fluxes.

Parameters
q_prim_vfCell-average primitive variables
flux_vfCell-boundary-average fluxes
flux_src_vfCell-boundary-average flux sources
cbc_dir_normCBC coordinate direction
cbc_loc_normCBC coordinate location
ixIndex bound in the first coordinate direction
iyIndex bound in the second coordinate direction
izIndex bound in the third coordinate direction

gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.

gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.

gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.

gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.

gamma_method = 1: Ref. Section 2.3.1 Formulation of doi:10.7907/ZKW8-ES97.

gamma_method = 2: c_p / c_v where c_p, c_v are specific heats.

Definition at line 2464 of file m_cbc.fpp.f90.

Here is the call graph for this function:

◆ s_compute_cbc_coefficients()

subroutine m_cbc::s_compute_cbc_coefficients ( integer, intent(in) cbc_dir_in,
integer, intent(in) cbc_loc_in )

Compute CBC coefficients.

Parameters
cbc_dir_inCBC coordinate direction
cbc_loc_inCBC coordinate location

Definition at line 2149 of file m_cbc.fpp.f90.

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

◆ s_finalize_cbc()

subroutine m_cbc::s_finalize_cbc ( type(scalar_field), dimension(sys_size), intent(inout) flux_vf,
type(scalar_field), dimension(sys_size), intent(inout) flux_src_vf )

Deallocation and/or the disassociation procedures that are necessary in order to finalize the CBC application.

Parameters
flux_vfCell-boundary-average fluxes
flux_src_vfCell-boundary-average flux sources

Definition at line 6358 of file m_cbc.fpp.f90.

Here is the caller graph for this function:

◆ s_finalize_cbc_module()

impure subroutine, public m_cbc::s_finalize_cbc_module

Module deallocation and/or disassociation procedures.

Definition at line 7056 of file m_cbc.fpp.f90.

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

◆ s_initialize_cbc()

subroutine m_cbc::s_initialize_cbc ( type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(in) flux_vf,
type(scalar_field), dimension(sys_size), intent(in) flux_src_vf,
type(int_bounds_info), intent(in) ix,
type(int_bounds_info), intent(in) iy,
type(int_bounds_info), intent(in) iz )

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 selected CBC.

Parameters
q_prim_vfCell-average primitive variables
flux_vfCell-boundary-average fluxes
flux_src_vfCell-boundary-average flux sources
ixIndex bound in the first coordinate direction
iyIndex bound in the second coordinate direction
izIndex bound in the third coordinate direction

Definition at line 5362 of file m_cbc.fpp.f90.

Here is the caller graph for this function:

◆ s_initialize_cbc_module()

impure subroutine, public m_cbc::s_initialize_cbc_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.

Definition at line 505 of file m_cbc.fpp.f90.

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

Variable Documentation

◆ alpha_in

real(wp), dimension(:, :), allocatable m_cbc::alpha_in

Definition at line 465 of file m_cbc.fpp.f90.

◆ alpha_rho_in

real(wp), dimension(:, :), allocatable m_cbc::alpha_rho_in

Definition at line 465 of file m_cbc.fpp.f90.

◆ bcxb

integer m_cbc::bcxb

Definition at line 433 of file m_cbc.fpp.f90.

◆ bcxe

integer m_cbc::bcxe

Definition at line 433 of file m_cbc.fpp.f90.

◆ bcyb

integer m_cbc::bcyb

Definition at line 433 of file m_cbc.fpp.f90.

◆ bcye

integer m_cbc::bcye

Definition at line 433 of file m_cbc.fpp.f90.

◆ bczb

integer m_cbc::bczb

Definition at line 433 of file m_cbc.fpp.f90.

◆ bcze

integer m_cbc::bcze

Definition at line 433 of file m_cbc.fpp.f90.

◆ cbc_dir

integer m_cbc::cbc_dir

Definition at line 434 of file m_cbc.fpp.f90.

◆ cbc_loc

integer m_cbc::cbc_loc

Definition at line 434 of file m_cbc.fpp.f90.

◆ del_in

real(wp), dimension(:), allocatable m_cbc::del_in

Definition at line 463 of file m_cbc.fpp.f90.

◆ del_out

real(wp), dimension(:), allocatable m_cbc::del_out

Definition at line 463 of file m_cbc.fpp.f90.

◆ dj

integer m_cbc::dj

Definition at line 432 of file m_cbc.fpp.f90.

◆ ds

real(wp), dimension(:), allocatable m_cbc::ds

Cell-width distribution in the s-direction.

Definition at line 385 of file m_cbc.fpp.f90.

◆ f_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_rsx_vf

Definition at line 349 of file m_cbc.fpp.f90.

◆ f_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_rsy_vf

Definition at line 350 of file m_cbc.fpp.f90.

◆ f_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_rsz_vf

Definition at line 351 of file m_cbc.fpp.f90.

◆ f_src_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_src_rsx_vf

Definition at line 349 of file m_cbc.fpp.f90.

◆ f_src_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_src_rsy_vf

Definition at line 350 of file m_cbc.fpp.f90.

◆ f_src_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::f_src_rsz_vf

Definition at line 351 of file m_cbc.fpp.f90.

◆ fd_coef_x

real(wp), dimension(:, :), allocatable m_cbc::fd_coef_x

Finite diff. coefficients x-dir.

Definition at line 389 of file m_cbc.fpp.f90.

◆ fd_coef_y

real(wp), dimension(:, :), allocatable m_cbc::fd_coef_y

Finite diff. coefficients y-dir.

Definition at line 390 of file m_cbc.fpp.f90.

◆ fd_coef_z

real(wp), dimension(:, :), allocatable m_cbc::fd_coef_z

Finite diff. coefficients z-dir.

Definition at line 391 of file m_cbc.fpp.f90.

◆ flux_cbc_index

integer m_cbc::flux_cbc_index

Definition at line 435 of file m_cbc.fpp.f90.

◆ flux_rsx_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_rsx_vf_l

Definition at line 370 of file m_cbc.fpp.f90.

◆ flux_rsy_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_rsy_vf_l

Definition at line 371 of file m_cbc.fpp.f90.

◆ flux_rsz_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_rsz_vf_l

Definition at line 372 of file m_cbc.fpp.f90.

◆ flux_src_rsx_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_src_rsx_vf_l

Definition at line 370 of file m_cbc.fpp.f90.

◆ flux_src_rsy_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_src_rsy_vf_l

Definition at line 371 of file m_cbc.fpp.f90.

◆ flux_src_rsz_vf_l

real(wp), dimension(:, :, :, :), allocatable m_cbc::flux_src_rsz_vf_l

Definition at line 372 of file m_cbc.fpp.f90.

◆ is1

type(int_bounds_info) m_cbc::is1

Definition at line 419 of file m_cbc.fpp.f90.

◆ is2

type(int_bounds_info) m_cbc::is2

Definition at line 419 of file m_cbc.fpp.f90.

◆ is3

type(int_bounds_info) m_cbc::is3

Indical bounds in the s1-, s2- and s3-directions.

Definition at line 419 of file m_cbc.fpp.f90.

◆ pi_coef_x

real(wp), dimension(:, :, :), allocatable m_cbc::pi_coef_x

Polynomial interpolant coefficients in x-dir.

Definition at line 399 of file m_cbc.fpp.f90.

◆ pi_coef_y

real(wp), dimension(:, :, :), allocatable m_cbc::pi_coef_y

Polynomial interpolant coefficients in y-dir.

Definition at line 400 of file m_cbc.fpp.f90.

◆ pi_coef_z

real(wp), dimension(:, :, :), allocatable m_cbc::pi_coef_z

Polynomial interpolant coefficients in z-dir.

Definition at line 401 of file m_cbc.fpp.f90.

◆ pres_in

real(wp), dimension(:), allocatable m_cbc::pres_in

Definition at line 463 of file m_cbc.fpp.f90.

◆ pres_out

real(wp), dimension(:), allocatable m_cbc::pres_out

Definition at line 463 of file m_cbc.fpp.f90.

◆ q_prim_rsx_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::q_prim_rsx_vf

Definition at line 331 of file m_cbc.fpp.f90.

◆ q_prim_rsy_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::q_prim_rsy_vf

Definition at line 332 of file m_cbc.fpp.f90.

◆ q_prim_rsz_vf

real(wp), dimension(:, :, :, :), allocatable m_cbc::q_prim_rsz_vf

Definition at line 333 of file m_cbc.fpp.f90.

◆ vel_in

real(wp), dimension(:, :), allocatable m_cbc::vel_in

Definition at line 464 of file m_cbc.fpp.f90.

◆ vel_out

real(wp), dimension(:, :), allocatable m_cbc::vel_out

Definition at line 464 of file m_cbc.fpp.f90.