42  character(len=20) :: WALLM_KNOWN_TYPES(2) = [character(len=20) :: &
 
   56  module subroutine wall_model_factory(object, scheme_name, coef, msk, facet, &
 
   58    class(wall_model_t), 
allocatable, 
intent(inout) :: object
 
   59    character(len=*), 
intent(in) :: scheme_name
 
   60    type(coef_t), 
intent(in) :: coef
 
   61    integer, 
intent(in) :: msk(:)
 
   62    integer, 
intent(in) :: facet(:)
 
   63    type(json_file), 
intent(inout) :: json
 
   64    character(len=:), 
allocatable :: type_name
 
   65    character(len=:), 
allocatable :: type_string
 
   68    call json_get(json, 
"model", type_name)
 
   69    call json_get(json, 
"h_index", h_index)
 
   71    call wall_model_allocator(object, type_name)
 
   74    call object%init(scheme_name, coef, msk, facet, h_index, json)
 
   76  end subroutine wall_model_factory
 
   81  module subroutine wall_model_allocator(object, type_name)
 
   82    class(wall_model_t), 
allocatable, 
intent(inout) :: object
 
   83    character(len=:), 
allocatable, 
intent(in) :: type_name
 
   86    select case (trim(type_name) )
 
   89    case (
"rough_log_law")
 
   92       do i = 1, wall_model_registry_size
 
   93          if (trim(type_name) .eq. trim(wall_model_registry(i)%type_name)) 
then 
   94             call wall_model_registry(i)%allocator(object)
 
  100  end subroutine wall_model_allocator
 
  107  module subroutine register_wall_model(type_name, allocator)
 
  108    character(len=*), 
intent(in) :: type_name
 
  109    procedure(wall_model_allocate), 
pointer, 
intent(in) :: allocator
 
  110    type(allocator_entry), 
allocatable :: temp(:)
 
  113    do i = 1, 
size(wallm_known_types)
 
  114       if (trim(type_name) .eq. trim(wallm_known_types(i))) 
then 
  119    do i = 1, wall_model_registry_size
 
  120       if (trim(type_name) .eq. trim(wall_model_registry(i)%type_name)) 
then 
  126    if (wall_model_registry_size .eq. 0) 
then 
  127       allocate(wall_model_registry(1))
 
  129       allocate(temp(wall_model_registry_size + 1))
 
  130       temp(1:wall_model_registry_size) = wall_model_registry
 
  131       call move_alloc(temp, wall_model_registry)
 
  134    wall_model_registry_size = wall_model_registry_size + 1
 
  135    wall_model_registry(wall_model_registry_size)%type_name = type_name
 
  136    wall_model_registry(wall_model_registry_size)%allocator => allocator
 
  137  end subroutine register_wall_model
 
  139end submodule wall_model_fctry
 
Implements rough_log_law_t.
 
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.
 
Wall model based on the log-law for a rough wall. The formula defining the law is ....
 
Wall model based on Spalding's law of the wall. Reference: http://dx.doi.org/10.1115/1....
 
Implements the Vreman LES model.