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 wall_model_allocator(object, type_name)
70 call json_get(json,
"model", type_name)
71 call json_get(json,
"h_index", h_index)
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=*),
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.