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) | |
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 ) |
[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 ) |
[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 ) |
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 ) |
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 ) |
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 ) |
[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 ) |
[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 |