38  use json_module, 
only : json_file
 
   60     real(kind=
rp), 
pointer, 
contiguous :: dr(:,:,:,:)
 
   62     real(kind=
rp), 
pointer, 
contiguous :: ds(:,:,:,:)
 
   64     real(kind=
rp), 
pointer, 
contiguous :: dt(:,:,:,:)
 
   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 => &
 
 
   94    type(json_file), 
intent(inout) :: json
 
   95    class(
case_t), 
intent(inout), 
target :: case
 
   96    character(len=:), 
allocatable :: field_name
 
   97    character(len=:), 
allocatable :: direction
 
   98    character(len=:), 
allocatable :: computed_field
 
   99    character(len=20) :: fields(1)
 
  103    call json_get(json, 
"field", field_name)
 
  104    call json_get(json, 
"direction", direction)
 
  107         "d" // trim(field_name) // 
"_d" // direction)
 
  109    fields(1) = trim(computed_field)
 
  110    call json%add(
"fields", fields)
 
  112    call this%init_base(json, 
case)
 
  113    call this%writer%init(json, 
case)
 
  115    call this%init_common(field_name, computed_field, direction)
 
 
  125    character(len=*) :: field_name
 
  126    character(len=*) :: computed_field
 
  127    character(len=*) :: direction
 
  132         "d" // field_name // 
"_d" // direction)
 
  134    if (direction .eq. 
"x") 
then 
  135       this%dr => this%case%fluid%c_Xh%drdx
 
  136       this%ds => this%case%fluid%c_Xh%dsdx
 
  137       this%dt => this%case%fluid%c_Xh%dtdx
 
  138    else if (direction .eq. 
"y") 
then 
  139       this%dr => this%case%fluid%c_Xh%drdy
 
  140       this%ds => this%case%fluid%c_Xh%dsdy
 
  141       this%dt => this%case%fluid%c_Xh%dtdy
 
  142    else if (direction .eq. 
"z") 
then 
  143       this%dr => this%case%fluid%c_Xh%drdz
 
  144       this%ds => this%case%fluid%c_Xh%dsdz
 
  145       this%dt => this%case%fluid%c_Xh%dtdz
 
  147       call neko_error(
"The direction of the derivative must be x, y or z")
 
 
  164       preprocess_controller, compute_controller, output_controller, &
 
  165       field_name, computed_field, direction, filename, precision)
 
  167    class(
case_t), 
intent(inout), 
target :: case
 
  172    character(len=*) :: field_name
 
  173    character(len=*) :: computed_field
 
  174    character(len=*) :: direction
 
  175    character(len=*), 
intent(in), 
optional :: filename
 
  176    integer, 
intent(in), 
optional :: precision
 
  178    character(len=20) :: fields(1)
 
  180    fields(1) = trim(computed_field)
 
  182    call this%init_base_from_components(
case, order, preprocess_controller, &
 
  184    call this%writer%init_from_components(
case, order, preprocess_controller, &
 
  186    call this%init_common(field_name, computed_field, direction)
 
 
  208       case, order, preprocess_control, preprocess_value, compute_control, &
 
  209       compute_value, output_control, output_value, field_name, &
 
  210       computed_field, direction, filename, precision)
 
  212    class(
case_t), 
intent(inout), 
target :: case
 
  214    character(len=*), 
intent(in) :: preprocess_control
 
  215    real(kind=
rp), 
intent(in) :: preprocess_value
 
  216    character(len=*), 
intent(in) :: compute_control
 
  217    real(kind=
rp), 
intent(in) :: compute_value
 
  218    character(len=*), 
intent(in) :: output_control
 
  219    real(kind=
rp), 
intent(in) :: output_value
 
  220    character(len=*) :: field_name
 
  221    character(len=*) :: computed_field
 
  222    character(len=*) :: direction
 
  223    character(len=*), 
intent(in), 
optional :: filename
 
  224    integer, 
intent(in), 
optional :: precision
 
  226    character(len=20) :: fields(1)
 
  228    fields(1) = trim(computed_field)
 
  230    call this%init_base_from_components(
case, order, preprocess_control, &
 
  231         preprocess_value, compute_control, compute_value, output_control, &
 
  233    call this%writer%init_from_components(
case, order, preprocess_control, &
 
  234         preprocess_value, compute_control, compute_value, output_control, &
 
  235         output_value, fields, filename, precision)
 
  236    call this%init_common(field_name, computed_field, direction)
 
 
  244    call this%free_base()
 
  245    call this%writer%free()
 
 
  259    call dudxyz(this%du%x, this%u%x, this%dr, this%ds, this%dt,&
 
  260         this%case%fluid%c_Xh)
 
 
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.
 
Implements the derivative_t type.
 
subroutine derivative_free(this)
Destructor.
 
subroutine derivative_compute(this, time)
Compute the derivative field.
 
subroutine derivative_init_from_json(this, json, case)
Constructor from json.
 
subroutine derivative_init_from_controllers_properties(this, case, order, preprocess_control, preprocess_value, compute_control, compute_value, output_control, output_value, field_name, computed_field, direction, filename, precision)
Constructor from components, passing properties to the time_based_controller` components in the base ...
 
subroutine derivative_init_common(this, field_name, computed_field, direction)
Common part of constructors from components.
 
subroutine derivative_init_from_controllers(this, case, order, preprocess_controller, compute_controller, output_controller, field_name, computed_field, direction, filename, precision)
Constructor from components, passing controllers.
 
Defines a registry for storing solution fields.
 
type(field_registry_t), target, public neko_field_registry
Global field registry.
 
Implements the field_writer_t type.
 
Utilities for retrieving parameters from the case files.
 
integer, parameter, public dp
 
integer, parameter, public sp
 
integer, parameter, public rp
Global precision used in computations.
 
subroutine, public dudxyz(du, u, dr, ds, dt, coef)
Compute derivative of a scalar field along a single direction.
 
Implements output_controller_t
 
Simulation components are objects that encapsulate functionality that can be fit to a particular comp...
 
subroutine compute_(this, time)
Dummy compute function.
 
Contains the time_based_controller_t type.
 
Module with things related to the simulation time.
 
A simulation component that computes a derivative of a field. Wraps the duxyz operator.
 
A simulation component that writes a 3d field to a file.
 
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.