38  use json_module, 
only : json_file
 
   56     real(kind=
rp) :: start_time
 
   62     integer :: n_avg_fields = 0
 
   64     character(len=20), 
allocatable :: field_names(:)
 
   72     generic :: init_from_components => &
 
   73          init_from_controllers, init_from_controllers_properties
 
   75     procedure, pass(this) :: init_from_controllers => &
 
   79     procedure, pass(this) :: init_from_controllers_properties => &
 
 
   97    type(json_file), 
intent(inout) :: json
 
   98    class(
case_t), 
intent(inout), 
target :: case
 
   99    character(len=:), 
allocatable :: filename
 
  100    character(len=:), 
allocatable :: avg_dir
 
  102    call this%init_base(json, 
case)
 
  105    call json%info(
'fields', n_children = this%n_avg_fields)
 
  106    call json_get(json, 
'fields', this%field_names)
 
  112         case%fluid%c_Xh, avg_dir, filename = filename)
 
 
  119    if (time%t .gt. this%time) this%time = time%t
 
 
  135       preprocess_controller, compute_controller, output_controller, &
 
  136       start_time, coef, avg_dir, filename, precision)
 
  138    class(
case_t), 
intent(inout), 
target :: case
 
  143    real(kind=
rp), 
intent(in) :: start_time
 
  144    character(len=*), 
intent(in) :: avg_dir
 
  145    type(
coef_t), 
intent(inout) :: coef
 
  146    character(len=*), 
intent(in), 
optional :: filename
 
  147    integer, 
intent(in), 
optional :: precision
 
  149    call this%init_base_from_components(
case, order, preprocess_controller, &
 
  151    call this%init_common(start_time, coef, avg_dir, filename, precision)
 
 
  173       case, order, preprocess_control, preprocess_value, compute_control, &
 
  174       compute_value, output_control, output_value, start_time, coef, avg_dir, &
 
  177    class(
case_t), 
intent(inout), 
target :: case
 
  179    character(len=*), 
intent(in) :: preprocess_control
 
  180    real(kind=
rp), 
intent(in) :: preprocess_value
 
  181    character(len=*), 
intent(in) :: compute_control
 
  182    real(kind=
rp), 
intent(in) :: compute_value
 
  183    character(len=*), 
intent(in) :: output_control
 
  184    real(kind=
rp), 
intent(in) :: output_value
 
  185    real(kind=
rp), 
intent(in) :: start_time
 
  186    character(len=*), 
intent(in) :: avg_dir
 
  187    type(
coef_t), 
intent(inout) :: coef
 
  188    character(len=*), 
intent(in), 
optional :: filename
 
  189    integer, 
intent(in), 
optional :: precision
 
  191    call this%init_base_from_components(
case, order, preprocess_control, &
 
  192         preprocess_value, compute_control, compute_value, output_control, &
 
  194    call this%init_common(start_time, coef, avg_dir, filename, precision)
 
 
  206    character(len=*), 
intent(in) :: filename
 
  207    integer, 
intent(in), 
optional :: precision
 
  208    real(kind=
rp), 
intent(in) :: start_time
 
  209    character(len=*), 
intent(in) :: avg_dir
 
  210    type(
coef_t), 
intent(inout) :: coef
 
  212    type(
field_t), 
pointer :: field_to_avg
 
  214    this%start_time = start_time
 
  215    this%time = start_time
 
  218    allocate(this%mean_fields(this%n_avg_fields))
 
  219    do i = 1, this%n_avg_fields
 
  221       call this%mean_fields(i)%init(field_to_avg)
 
  224    call this%output%init(this%mean_fields, this%n_avg_fields, &
 
  225         this%start_time, coef, avg_dir, name=filename)
 
  226    call this%case%output_controller%add(this%output, &
 
  227         this%output_controller%control_value, &
 
  228         this%output_controller%control_mode)
 
 
  236    call this%free_base()
 
  238    if (
allocated(this%mean_fields)) 
then 
  239       do i = 1, this%n_avg_fields
 
  240          call this%mean_fields(i)%free()
 
  242       deallocate(this%mean_fields)
 
  245    if (
allocated(this%field_names)) 
then 
  246       deallocate(this%field_names)
 
 
  259    if (time%t .ge. this%start_time) 
then 
  260       do i = 1, this%n_avg_fields
 
  261          call this%mean_fields(i)%update(time%t - this%time)
 
 
Retrieves a parameter by name or assigns a provided default value. In the latter case also adds the m...
 
Retrieves a parameter by name or throws an error.
 
Defines a simulation case.
 
Defines a registry for storing solution fields.
 
type(field_registry_t), target, public neko_field_registry
Global field registry.
 
Utilities for retrieving parameters from the case files.
 
Defines an output for a list of mean fields.
 
integer, parameter, public dp
 
integer, parameter, public sp
 
integer, parameter, public rp
Global precision used in computations.
 
Implements output_controller_t
 
Simulation components are objects that encapsulate functionality that can be fit to a particular comp...
 
subroutine restart_(this, time)
Dummy restart function.
 
subroutine compute_(this, time)
Dummy compute function.
 
Contains the time_based_controller_t type.
 
Module with things related to the simulation time.
 
Implements the user_stats_t type.
 
subroutine user_stats_free(this)
Destructor.
 
subroutine user_stats_compute(this, time)
Update the running averages.
 
subroutine user_stats_restart(this, time)
 
subroutine user_stats_init_from_controllers_properties(this, case, order, preprocess_control, preprocess_value, compute_control, compute_value, output_control, output_value, start_time, coef, avg_dir, filename, precision)
Constructor from components, passing properties to the time_based_controller` components in the base ...
 
subroutine user_stats_init_from_json(this, json, case)
Constructor from json.
 
subroutine user_stats_init_from_controllers(this, case, order, preprocess_controller, compute_controller, output_controller, start_time, coef, avg_dir, filename, precision)
Constructor from components, passing controllers.
 
subroutine user_stats_init_common(this, start_time, coef, avg_dir, filename, precision)
Common part of constructors.
 
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
 
Computes the temporal mean of a field.
 
Output for a list of mean fields.
 
Base abstract class for simulation components.
 
A utility type for determining whether an action should be executed based on the current time value....
 
A struct that contains all info about the time, expand as needed.
 
A simulation component that computes the averages of fields in the registry.