55  character(len=20) :: SIMCOMPS_KNOWN_TYPES(14) = [character(len=20) :: &
 
   77  module subroutine simulation_component_factory(object, json, 
case)
 
   78    class(simulation_component_t), 
allocatable, 
intent(inout) :: object
 
   79    type(json_file), 
intent(inout) :: json
 
   80    class(case_t), 
intent(inout), 
target :: case
 
   81    character(len=:), 
allocatable :: type_name
 
   82    character(len=:), 
allocatable :: type_string
 
   86    call json_get_or_default(json, 
"is_user", is_user, .false.)
 
   90    call json_get(json, 
"type", type_name)
 
   93    call simulation_component_allocator(object, type_name)
 
   96    call object%init(json, 
case)
 
   98  end subroutine simulation_component_factory
 
  103  module subroutine simulation_component_allocator(object, type_name)
 
  104    class(simulation_component_t), 
allocatable, 
intent(inout) :: object
 
  105    character(len=*), 
intent(in):: type_name
 
  108    select case (trim(type_name))
 
  115    case (
"field_writer")
 
  127    case (
"force_torque")
 
  131    case (
"scalar_stats")
 
  135    case (
"spectral_error")
 
  138       do i = 1, simcomp_registry_size
 
  139          if (trim(type_name) == &
 
  140               trim(simcomp_registry(i)%type_name)) 
then 
  141             call simcomp_registry(i)%allocator(object)
 
  146            simcomps_known_types)
 
  149  end subroutine simulation_component_allocator
 
  156  module subroutine register_simulation_component(type_name, allocator)
 
  157    character(len=*), 
intent(in) :: type_name
 
  158    procedure(simulation_component_allocate), 
pointer, 
intent(in) :: allocator
 
  159    type(allocator_entry), 
allocatable :: temp(:)
 
  162    do i = 1, 
size(simcomps_known_types)
 
  163       if (trim(type_name) .eq. trim(simcomps_known_types(i))) 
then 
  169    do i = 1, simcomp_registry_size
 
  170       if (trim(type_name) .eq. &
 
  171            trim(simcomp_registry(i)%type_name)) 
then 
  178    if (simcomp_registry_size == 0) 
then 
  179       allocate(simcomp_registry(1))
 
  181       allocate(temp(simcomp_registry_size + 1))
 
  182       temp(1:simcomp_registry_size) = simcomp_registry
 
  183       call move_alloc(temp, simcomp_registry)
 
  186    simcomp_registry_size = simcomp_registry_size + 1
 
  187    simcomp_registry(simcomp_registry_size)%type_name = type_name
 
  188    simcomp_registry(simcomp_registry_size)%allocator => allocator
 
  189  end subroutine register_simulation_component
 
  191end submodule simulation_component_fctry
 
Defines a simulation case.
 
Implements the curl_t type.
 
Implements the derivative_t type.
 
Implements the divergence_t type.
 
Implements the field_writer_t type.
 
Implements the fluid_stats_simcomp_t type.
 
Implements the force_torque_t type.
 
Implements the gradient_t type.
 
A simulation component that computes lambda2 The values are stored in the field registry under the na...
 
Implements the les_simcomp_t type.
 
Implements the scalar_stats_simcomp_t type.
 
Simulation components are objects that encapsulate functionality that can be fit to a particular comp...
 
Implements type spectral_error_t.
 
Implements the user_stats_t type.
 
character(:) function, allocatable, public concat_string_array(array, sep, prepend)
Concatenate an array of strings into one string with array items separated by spaces.
 
subroutine, public neko_type_registration_error(base_type, wrong_type, known)
 
subroutine, public neko_type_error(base_type, wrong_type, known_types)
Reports an error allocating a type for a particular base pointer class.
 
Implements the weak_gradient_t type.
 
A simulation component that computes the curl of a vector field. Added to the field registry as curl_...
 
A simulation component that computes a derivative of a field. Wraps the duxyz operator.
 
A simulation component that computes the divergence of a vector field. Added to the field registry as...
 
A simulation component that writes a 3d field to a file.
 
A simulation component that computes the velocity and pressure statistics up to 4th order....
 
A simulation component that computes the force and torque on a given boundary zone.
 
A simulation component that computes the gradient of a field. Wraps the gradient operator.
 
A simulation component that drives the computation of the SGS viscosity.
 
A simulation component that computes the scalar statistics for the skewness, kurtosis,...
 
Provides tools to calculate the spectral error indicator.
 
A simulation component that computes the averages of fields in the registry.
 
A simulation component that computes the weak gradient of a field. Wraps the opgradient operator.