43 character(len=25) :: EULER_KNOWN_BCS(7) = [character(len=25) :: &
59 module subroutine density_bc_factory(object, scheme, json, coef,
user)
60 class(bc_t),
pointer,
intent(inout) :: object
61 type(fluid_scheme_compressible_euler_t),
intent(in) :: scheme
62 type(json_file),
intent(inout) :: json
63 type(coef_t),
intent(in) :: coef
64 type(user_t),
intent(in) :: user
65 character(len=:),
allocatable :: type
67 integer,
allocatable :: zone_indices(:)
71 select case (trim(type))
72 case (
"density_value")
75 do i = 1,
size(euler_known_bcs)
76 if (trim(type) .eq. trim(euler_known_bcs(i)))
return
78 call neko_type_error(
"compressible_euler boundary conditions",
type, &
83 call object%init(coef, json)
85 do i = 1,
size(zone_indices)
86 call object%mark_zone(coef%msh%labeled_zones(zone_indices(i)))
88 call object%finalize()
89 end subroutine density_bc_factory
97 module subroutine pressure_bc_factory(object, scheme, json, coef,
user)
98 class(bc_t),
pointer,
intent(inout) :: object
99 type(fluid_scheme_compressible_euler_t),
intent(inout) :: scheme
100 type(json_file),
intent(inout) :: json
101 type(coef_t),
intent(in) :: coef
102 type(user_t),
intent(in) :: user
103 character(len=:),
allocatable :: type
105 integer,
allocatable :: zone_indices(:)
109 select case (trim(type))
110 case (
"outflow",
"normal_outflow")
112 case (
"pressure_value")
115 do i = 1,
size(euler_known_bcs)
116 if (trim(type) .eq. trim(euler_known_bcs(i)))
return
118 call neko_type_error(
"compressible_euler boundary conditions",
type, &
123 call object%init(coef, json)
125 do i = 1,
size(zone_indices)
126 call object%mark_zone(coef%msh%labeled_zones(zone_indices(i)))
128 call object%finalize()
132 do i = 1,
size(zone_indices)
133 do j = 1, scheme%msh%nelv
134 do k = 1, 2 * scheme%msh%gdim
135 if (scheme%msh%facet_type(k,j) .eq. -zone_indices(i))
then
136 scheme%msh%facet_type(k, j) = 1
141 end subroutine pressure_bc_factory
149 module subroutine velocity_bc_factory(object, scheme, json, coef,
user)
150 class(bc_t),
pointer,
intent(inout) :: object
151 type(fluid_scheme_compressible_euler_t),
intent(in) :: scheme
152 type(json_file),
intent(inout) :: json
153 type(coef_t),
intent(in) :: coef
154 type(user_t),
intent(in) :: user
155 character(len=:),
allocatable :: type
157 integer,
allocatable :: zone_indices(:)
161 select case (trim(type))
166 case (
"velocity_value")
169 do i = 1,
size(euler_known_bcs)
170 if (trim(type) .eq. trim(euler_known_bcs(i)))
return
172 call neko_type_error(
"compressible_euler boundary conditions",
type, &
177 call object%init(coef, json)
178 do i = 1,
size(zone_indices)
179 call object%mark_zone(coef%msh%labeled_zones(zone_indices(i)))
181 call object%finalize()
183 end subroutine velocity_bc_factory
185end submodule euler_bc_fctry
Retrieves a parameter by name or throws an error.
Defines a dirichlet boundary condition.
Defines inflow dirichlet conditions.
Utilities for retrieving parameters from the case files.
Mixed Dirichlet-Neumann axis aligned symmetry plane.
Defines a zero-valued Dirichlet boundary condition.
Generic Dirichlet boundary condition on .
Dirichlet condition for inlet (vector valued)
Mixed Dirichlet-Neumann symmetry plane condition.
Zero-valued Dirichlet boundary condition. Used for no-slip walls, but also for various auxillary cond...