Integration methods for the advection equation. More...
Data Types | |
interface | divut_term_computer_interface |
The abstract function for computing div(U phi) More... | |
interface | divut_term_computer_interface_fd |
The abstract function for computing div(U phi) for the FD WENO schemes. More... | |
Functions/Subroutines | |
subroutine | integrate_cell_advection_term_explicit_generic_euler (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, equation_has_immersed_boundaries, equation_isd_target, ibc_variable, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme euler (in time) version. | |
subroutine | integrate_cell_advection_term_explicit_generic_euler_split (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, equation_has_immersed_boundaries, equation_isd_target, ibc_variable, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme euler (in time) version. | |
subroutine | integrate_cell_advection_term_explicit_generic_sspso (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, aki, bi, ci, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme SSP 2 stage 2nd order without velocity extrapolation. | |
subroutine | integrate_cell_advection_term_explicit_generic_sspso_split (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, aki, bi, ci, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme in a splitted manner SSP 2 stage 2nd order without velocity extrapolation. | |
subroutine | integrate_cell_advection_term_explicit_generic_nssp32 (scalar_star, time_step_n, time_step, velocity_nm1, velocity_n, scalar_n, divut_term_computer, flux_type, temporal_stability_factor, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme. | |
subroutine | integrate_cell_advection_term_explicit_generic_nssp32_split (scalar_star, time_step_n, time_step, velocity_nm1, velocity_n, scalar_n, divut_term_computer, flux_type, temporal_stability_factor, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme. | |
subroutine | integrate_cell_advection_term_explicit_generic_nssp53 (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, boundary_condition) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme. | |
subroutine | integrate_cell_advection_term_explicit_generic_nssp53_split (divut, time_step, dt_nm1, dt_n, velocity_nm1, velocity_n, velocity_np1, scalar, divut_term_computer, flux_type, temporal_stability_factor, boundary_condition) |
Integrate the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme. The temporal scheme is a 5 steps NSSP at 3nd order (NSSP53). The integration is done in a split manner (x then y then z) | |
Integration methods for the advection equation.
This module furnishes various temporal integration schemes (mainly RK schemes) for the advection equation. As the explicit resolution of the advection equation is subjected to a stability condition (the CFL), sub iterations can occur during the integration process.
divut_term_computer_interface
is defined for simplifying the process. With this manner, any spatial scheme can be used, may it be first order or WENO. subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_euler | ( | double precision, dimension(:,:,:), intent(inout) | divut, |
double precision, intent(in) | time_step, | ||
double precision, intent(in) | dt_nm1, | ||
double precision, intent(in) | dt_n, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
type(t_face_field), intent(in) | velocity_np1, | ||
double precision, dimension(:,:,:), intent(in) | scalar, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
logical, intent(in) | equation_has_immersed_boundaries, | ||
integer, dimension(:), intent(in) | equation_isd_target, | ||
type(t_immersed_boundary_condition), dimension(:), intent(in) | ibc_variable, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme euler (in time) version.
[in,out] | divut | the resulting term |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | velocity_np1 | velocity field at \( t^{n+1} \) |
[in] | dt_nm1 | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | dt_n | the current time step \( \delta t^{n} = t^{n+1} - t^{n} \) |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
[in] | scalar | the scalar to advect |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | equation_has_immersed_boundaries | true if has IBC |
[in] | equation_isd_target | Subset of immersed boundaries. |
[in] | ibc_variable | boundary conditions on immersed boundaries. |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_euler_split | ( | double precision, dimension(:,:,:), intent(inout) | divut, |
double precision, intent(in) | time_step, | ||
double precision, intent(in) | dt_nm1, | ||
double precision, intent(in) | dt_n, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
type(t_face_field), intent(in) | velocity_np1, | ||
double precision, dimension(:,:,:), intent(in) | scalar, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
logical, intent(in) | equation_has_immersed_boundaries, | ||
integer, dimension(:), intent(in) | equation_isd_target, | ||
type(t_immersed_boundary_condition), dimension(:), intent(in) | ibc_variable, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme euler (in time) version.
[in,out] | divut | the resulting term |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | velocity_np1 | velocity field at \( t^{n+1} \) |
[in] | dt_nm1 | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | dt_n | the current time step \( \delta t^{n} = t^{n+1} - t^{n} \) |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
[in] | scalar | the scalar to advect |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | equation_has_immersed_boundaries | true if has IBC |
[in] | equation_isd_target | Subset of immersed boundaries. |
[in] | ibc_variable | boundary conditions on immersed boundaries. |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_nssp32 | ( | double precision, dimension(:,:,:), intent(inout) | scalar_star, |
double precision, intent(in) | time_step_n, | ||
double precision, intent(in) | time_step, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
double precision, dimension(:,:,:), intent(in) | scalar_n, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme.
Optimized version for 3 stages at order 2
[in,out] | scalar_star | the resulting field |
[in] | time_step_n | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | scalar_n | the scalar to advect at time \( t^{n} \) |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_nssp32_split | ( | double precision, dimension(:,:,:), intent(inout) | scalar_star, |
double precision, intent(in) | time_step_n, | ||
double precision, intent(in) | time_step, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
double precision, dimension(:,:,:), intent(in) | scalar_n, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme.
Optimized version for 3 stages at order 2 The integration is done in a split manner (x then y then z)
[in,out] | scalar_star | the resulting field |
[in] | time_step_n | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | scalar_n | the scalar to advect at time \( t^{n} \) |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_nssp53 | ( | double precision, dimension(:,:,:), intent(inout) | divut, |
double precision, intent(in) | time_step, | ||
double precision, intent(in) | dt_nm1, | ||
double precision, intent(in) | dt_n, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
type(t_face_field), intent(in) | velocity_np1, | ||
double precision, dimension(:,:,:), intent(in) | scalar, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme.
Optimized version for 5 stages at order 3
[in,out] | divut | the resulting field |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | velocity_np1 | velocity field at \( t^{n+1} \) |
[in] | dt_nm1 | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | dt_n | the current time step \( \delta t^{n} = t^{n+1} - t^{n} \) |
[in] | scalar | the scalar to advect |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_sspso | ( | double precision, dimension(:,:,:), intent(inout) | divut, |
double precision, intent(in) | time_step, | ||
double precision, intent(in) | dt_nm1, | ||
double precision, intent(in) | dt_n, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
type(t_face_field), intent(in) | velocity_np1, | ||
double precision, dimension(:,:,:), intent(in) | scalar, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
double precision, dimension(:,:), intent(in) | aki, | ||
double precision, dimension(:), intent(in) | bi, | ||
double precision, dimension(:), intent(in) | ci, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme SSP 2 stage 2nd order without velocity extrapolation.
[in,out] | divut | the resulting field |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | velocity_np1 | velocity field at \( t^{n+1} \) |
[in] | dt_nm1 | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | dt_n | the current time step \( \delta t^{n} = t^{n+1} - t^{n} \) |
[in] | scalar | the scalar to advect |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
[in] | aki,bi,ci | the given coefficients of the Butcher tableau |
subroutine mod_integrate_cell_advection_term_explicit_generic::integrate_cell_advection_term_explicit_generic_sspso_split | ( | double precision, dimension(:,:,:), intent(inout) | divut, |
double precision, intent(in) | time_step, | ||
double precision, intent(in) | dt_nm1, | ||
double precision, intent(in) | dt_n, | ||
type(t_face_field), intent(in) | velocity_nm1, | ||
type(t_face_field), intent(in) | velocity_n, | ||
type(t_face_field), intent(in) | velocity_np1, | ||
double precision, dimension(:,:,:), intent(in) | scalar, | ||
procedure(divut_term_computer_interface) | divut_term_computer, | ||
type(t_fv_flux), intent(in) | flux_type, | ||
double precision, intent(in) | temporal_stability_factor, | ||
double precision, dimension(:,:), intent(in) | aki, | ||
double precision, dimension(:), intent(in) | bi, | ||
double precision, dimension(:), intent(in) | ci, | ||
type(t_boundary_condition), intent(in) | boundary_condition ) |
Adds the advection term \( c \nabla \cdot ( \mathbf{u} \phi ) \) with a generic spatial scheme in a splitted manner SSP 2 stage 2nd order without velocity extrapolation.
[in,out] | divut | the resulting field |
[in] | time_step | the time step on which we integrate (might be different from dt_n for sub integration steps!) |
[in] | velocity_nm1 | velocity field at \( t^{n-1} \) |
[in] | velocity_n | velocity field at \( t^n \) |
[in] | velocity_np1 | velocity field at \( t^{n+1} \) |
[in] | dt_nm1 | the previous time step \( \delta t^{n-1} = t^{n} - t^{n-1} \) |
[in] | dt_n | the current time step \( \delta t^{n} = t^{n+1} - t^{n} \) |
[in] | scalar | the scalar to advect |
[in] | divut_term_computer | the procedure that will compute the div(u phi) term giving u and phi |
[in] | flux_type | the flux type to use for the explicit advection (type_fv_flux) |
[in] | temporal_stability_factor | the cfl coefficient to use (depending on the time and space schemes) |
[in] | boundary_condition | the boundary conditions of the cell scalar |
[in] | aki,bi,ci | the given coefficients of the Butcher tableau |