Neko  0.8.1
A portable framework for high-order spectral element flow simulations
time_scheme_controller::time_scheme_controller_t Type Reference

Implements the logic to compute the time coefficients for the advection and diffusion operators in a transport equation. More...

Collaboration diagram for time_scheme_controller::time_scheme_controller_t:

Public Member Functions

procedure, pass(this) init => time_scheme_controller_init
 Constructor. More...
 
procedure, pass(this) free => time_scheme_controller_free
 Destructor. More...
 
procedure, pass(this) set_coeffs => time_scheme_controller_set_coeffs
 Set the time coefficients. More...
 

Public Attributes

type(ext_time_scheme_text
 
type(ab_time_scheme_tab
 
type(bdf_time_scheme_tbdf
 
real(kind=rp), dimension(4) advection_coeffs = 0
 Time coefficients for the advection operator. More...
 
real(kind=rp), dimension(4) diffusion_coeffs = 0
 Time coefficients for the diffusion operator. More...
 
integer ndiff = 0
 Controls the actual order of the diffusion scheme, e.g. 1 at the first time-step. More...
 
integer nadv = 0
 Controls the actual order of the advection scheme, e.g. 1 at the first time-step. More...
 
integer advection_time_order = 3
 Order of the advection scheme. More...
 
integer diffusion_time_order
 Order of the diffusion scheme. More...
 
type(c_ptr) advection_coeffs_d = C_NULL_PTR
 Device pointer for advection_coeffs More...
 
type(c_ptr) diffusion_coeffs_d = C_NULL_PTR
 Device pointer for diffusion_coeffs More...
 

Detailed Description

Implements the logic to compute the time coefficients for the advection and diffusion operators in a transport equation.

Uses the BDF scheme for the diffusion, where as the term for advection the scheme depends on the orders of the BDF and advection schemes.

  • Order 1 advection
    • BDF1 for diffusion -> Adam-Bashforth scheme.
  • Order 2 advection
    • BDF1 for diffusion -> Adam-Bashforth scheme.
    • BDF2 for diffusion -> Explcit extrapolation scheme.
  • Order 3 advection
    • BDF1 for diffusion -> Adam-Bashforth scheme.
    • BDF2 for diffusion -> Modified explcit extrapolation scheme.
    • BDF3 for diffusion -> Explciit extrapolation scheme. The order of the BDF scheme in the above logic is set by the user, whereas the advection scheme is set to forward Euler when BDF is order 1, and otherwise to a 3rd order scheme (excluding the first 2 timesteps). This means that some of the options in the above list never get realized, particularly order 2 and 3 advection for 1st order BDF. They remain in the code so as to have the orinigal Nek5000 logic in place for possible adoption in the future. An important detail here is the handling of the first timesteps where a high-order scheme cannot be constructed. The parameters nadv and ndiff, which are initialized to 0, hold the current order of the respective scheme.
      Note
      the advection scheme also applies to source terms.

Definition at line 71 of file time_scheme_controller.f90.

Member Function/Subroutine Documentation

◆ free()

procedure, pass(this) time_scheme_controller::time_scheme_controller_t::free

Destructor.

Definition at line 99 of file time_scheme_controller.f90.

◆ init()

procedure, pass(this) time_scheme_controller::time_scheme_controller_t::init

Constructor.

Definition at line 97 of file time_scheme_controller.f90.

◆ set_coeffs()

procedure, pass(this) time_scheme_controller::time_scheme_controller_t::set_coeffs

Set the time coefficients.

Definition at line 101 of file time_scheme_controller.f90.

Member Data Documentation

◆ ab

type(ab_time_scheme_t) time_scheme_controller::time_scheme_controller_t::ab

Definition at line 73 of file time_scheme_controller.f90.

◆ advection_coeffs

real(kind=rp), dimension(4) time_scheme_controller::time_scheme_controller_t::advection_coeffs = 0

Time coefficients for the advection operator.

Definition at line 77 of file time_scheme_controller.f90.

◆ advection_coeffs_d

type(c_ptr) time_scheme_controller::time_scheme_controller_t::advection_coeffs_d = C_NULL_PTR

Device pointer for advection_coeffs

Definition at line 91 of file time_scheme_controller.f90.

◆ advection_time_order

integer time_scheme_controller::time_scheme_controller_t::advection_time_order = 3

Order of the advection scheme.

Definition at line 87 of file time_scheme_controller.f90.

◆ bdf

type(bdf_time_scheme_t) time_scheme_controller::time_scheme_controller_t::bdf

Definition at line 74 of file time_scheme_controller.f90.

◆ diffusion_coeffs

real(kind=rp), dimension(4) time_scheme_controller::time_scheme_controller_t::diffusion_coeffs = 0

Time coefficients for the diffusion operator.

Definition at line 79 of file time_scheme_controller.f90.

◆ diffusion_coeffs_d

type(c_ptr) time_scheme_controller::time_scheme_controller_t::diffusion_coeffs_d = C_NULL_PTR

Device pointer for diffusion_coeffs

Definition at line 93 of file time_scheme_controller.f90.

◆ diffusion_time_order

integer time_scheme_controller::time_scheme_controller_t::diffusion_time_order

Order of the diffusion scheme.

Definition at line 89 of file time_scheme_controller.f90.

◆ ext

type(ext_time_scheme_t) time_scheme_controller::time_scheme_controller_t::ext

Definition at line 72 of file time_scheme_controller.f90.

◆ nadv

integer time_scheme_controller::time_scheme_controller_t::nadv = 0

Controls the actual order of the advection scheme, e.g. 1 at the first time-step.

Definition at line 85 of file time_scheme_controller.f90.

◆ ndiff

integer time_scheme_controller::time_scheme_controller_t::ndiff = 0

Controls the actual order of the diffusion scheme, e.g. 1 at the first time-step.

Definition at line 82 of file time_scheme_controller.f90.


The documentation for this type was generated from the following file: