Neko 0.9.99
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
time_based_controller::time_based_controller_t Type Reference

A utility type for determening whether an action should be executed based on the current time value. Used to e.g. control whether we should write a file or execute a simcomp. Note that the nexecutions variable should be incremented externally by calling the register_execution procedure. This is to allow running the the check multiple times at the same time step. More...

Public Member Functions

procedure, pass(thisinit (this, end_time, control_mode, control_value)
 Constructor.
 
procedure, pass(thischeck (this, t, tstep, force)
 Check if the execution should be performed.
 
procedure, pass(thisregister_execution (this)
 Increment nexectutions.
 
procedure, pass(thisset_counter (this, t)
 Set the counter based on a time (for restarts)
 

Public Attributes

real(kind=rp) frequency = 0
 Frequency of execution.
 
real(kind=rp) time_interval = 0
 Time interval between executions.
 
integer nsteps = 0
 Number of timesteps in between executions.
 
real(kind=rp) end_time = 0
 Simulation end time.
 
integer nexecutions = 0
 Number of times already executed.
 
logical never = .false.
 Whether to never output.
 
character(len=:), allocatable control_mode
 Control mode defining the meaning of control_value. Can be simulationtime, tsteps, nsamples or never.
 
real(kind=rp) control_value
 Defines the frequency of writes.
 

Detailed Description

Definition at line 47 of file time_based_controller.f90.

Member Function/Subroutine Documentation

◆ check()

procedure, pass(this) time_based_controller::time_based_controller_t::check ( class(time_based_controller_t), intent(inout this,
real(kind=rp), intent(in t,
integer, intent(in tstep,
logical, intent(in), optional  force 
)
Parameters
tTime value.
tstepCurrent timestep.
forceWhether to force returning true. Optional.
Note
In the logic, nsteps being zero corresponds to us not knowing the number of time-steps between executions and thus having to rely on nexecutions. This is done in anticipation of having a variable timestep.

Definition at line 70 of file time_based_controller.f90.

◆ init()

procedure, pass(this) time_based_controller::time_based_controller_t::init ( class(time_based_controller_t), intent(inout this,
real(kind=rp), intent(in end_time,
character(len=*), intent(in control_mode,
real(kind=rp), intent(in control_value 
)
Parameters
end_timeThe final simulation time.
control_modeThe way to interpret the control_value parameter.
control_valueThe value definining the execution frequency.

Definition at line 68 of file time_based_controller.f90.

◆ register_execution()

procedure, pass(this) time_based_controller::time_based_controller_t::register_execution ( class(time_based_controller_t), intent(inout this)

Definition at line 72 of file time_based_controller.f90.

◆ set_counter()

procedure, pass(this) time_based_controller::time_based_controller_t::set_counter ( class(time_based_controller_t), intent(inout this,
real(kind=rp), intent(in t 
)
Parameters
tsimulation time.

Definition at line 75 of file time_based_controller.f90.

Member Data Documentation

◆ control_mode

character(len=:), allocatable time_based_controller::time_based_controller_t::control_mode

Definition at line 62 of file time_based_controller.f90.

◆ control_value

real(kind=rp) time_based_controller::time_based_controller_t::control_value

Definition at line 64 of file time_based_controller.f90.

◆ end_time

real(kind=rp) time_based_controller::time_based_controller_t::end_time = 0

Definition at line 55 of file time_based_controller.f90.

◆ frequency

real(kind=rp) time_based_controller::time_based_controller_t::frequency = 0

Definition at line 49 of file time_based_controller.f90.

◆ never

logical time_based_controller::time_based_controller_t::never = .false.

Definition at line 59 of file time_based_controller.f90.

◆ nexecutions

integer time_based_controller::time_based_controller_t::nexecutions = 0

Definition at line 57 of file time_based_controller.f90.

◆ nsteps

integer time_based_controller::time_based_controller_t::nsteps = 0

Definition at line 53 of file time_based_controller.f90.

◆ time_interval

real(kind=rp) time_based_controller::time_based_controller_t::time_interval = 0

Definition at line 51 of file time_based_controller.f90.


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