48 use json_module,
only : json_file, json_core, json_value
57 subroutine useric(u, v, w, p, params)
60 type(
field_t),
intent(inout) :: u
61 type(
field_t),
intent(inout) :: v
62 type(
field_t),
intent(inout) :: w
63 type(
field_t),
intent(inout) :: p
64 type(json_file),
intent(inout) :: params
73 type(
field_t),
intent(inout) :: s
74 type(json_file),
intent(inout) :: params
86 type(
field_t),
intent(inout) :: u
87 type(
field_t),
intent(inout) :: v
88 type(
field_t),
intent(inout) :: w
89 type(
field_t),
intent(inout) :: p
90 type(
coef_t),
intent(inout) :: coef
91 type(json_file),
intent(inout) :: params
99 type(json_file),
intent(inout) :: params
107 type(
mesh_t),
intent(inout) :: msh
118 real(kind=
rp),
intent(in) :: t
119 integer,
intent(in) :: tstep
120 type(
field_t),
intent(inout) :: u
121 type(
field_t),
intent(inout) :: v
122 type(
field_t),
intent(inout) :: w
123 type(
field_t),
intent(inout) :: p
124 type(
coef_t),
intent(inout) :: coef
125 type(json_file),
intent(inout) :: param
135 type(json_file),
intent(inout) :: param
150 real(kind=
rp),
intent(in) :: t
151 integer,
intent(in) :: tstep
152 real(kind=
rp),
intent(inout) :: rho, mu, cp, lambda
153 type(json_file),
intent(inout) :: params
159 procedure(
useric),
nopass,
pointer :: fluid_user_ic => null()
163 procedure(
usermsh),
nopass,
pointer :: user_mesh_setup => null()
164 procedure(
usercheck),
nopass,
pointer :: user_check => null()
186 class(
user_t),
intent(inout) :: u
187 logical :: user_extended = .false.
188 character(len=256),
dimension(13) :: extensions
192 if (.not.
associated(u%fluid_user_ic))
then
195 user_extended = .true.
197 write(extensions(n),
'(A)')
'- Fluid initial condition'
200 if (.not.
associated(u%scalar_user_ic))
then
203 user_extended = .true.
205 write(extensions(n),
'(A)')
'- Scalar initial condition'
208 if (.not.
associated(u%fluid_user_f))
then
211 user_extended = .true.
213 write(extensions(n),
'(A)')
'- Fluid source term'
216 if (.not.
associated(u%fluid_user_f_vector))
then
219 user_extended = .true.
221 write(extensions(n),
'(A)')
'- Fluid source term vector'
224 if (.not.
associated(u%scalar_user_f))
then
227 user_extended = .true.
229 write(extensions(n),
'(A)')
'- Scalar source term'
232 if (.not.
associated(u%scalar_user_f_vector))
then
235 user_extended = .true.
237 write(extensions(n),
'(A)')
'- Scalar source term vector'
240 if (.not.
associated(u%scalar_user_bc))
then
243 user_extended = .true.
245 write(extensions(n),
'(A)')
'- Scalar boundary condition'
248 if (.not.
associated(u%user_dirichlet_update))
then
251 user_extended = .true.
253 write(extensions(n),
'(A)')
'- Dirichlet boundary condition'
256 if (.not.
associated(u%user_mesh_setup))
then
259 user_extended = .true.
261 write(extensions(n),
'(A)')
'- Mesh setup'
264 if (.not.
associated(u%user_check))
then
267 user_extended = .true.
269 write(extensions(n),
'(A)')
'- User check'
272 if (.not.
associated(u%user_init_modules))
then
275 user_extended = .true.
277 write(extensions(n),
'(A)')
'- Initialize modules'
280 if (.not.
associated(u%init_user_simcomp))
then
284 if (.not.
associated(u%user_finalize_modules))
then
287 user_extended = .true.
289 write(extensions(n),
'(A)')
'- Finalize modules'
292 if (.not.
associated(u%material_properties))
then
295 user_extended = .true.
297 write(extensions(n),
'(A)')
'- Material properties'
300 if (user_extended)
then
301 call neko_log%section(
'User defined extensions')
304 call neko_log%message(extensions(i))
320 type(
field_t),
intent(inout) :: u
321 type(
field_t),
intent(inout) :: v
322 type(
field_t),
intent(inout) :: w
323 type(
field_t),
intent(inout) :: p
324 type(json_file),
intent(inout) :: params
325 call neko_error(
'Dummy user defined initial condition set')
332 type(
field_t),
intent(inout) :: s
333 type(json_file),
intent(inout) :: params
334 call neko_error(
'Dummy user defined scalar initial condition set')
340 real(kind=
rp),
intent(in) :: t
341 call neko_error(
'Dummy user defined vector valued forcing set')
346 real(kind=
rp),
intent(inout) :: u
347 real(kind=
rp),
intent(inout) :: v
348 real(kind=
rp),
intent(inout) :: w
349 integer,
intent(in) :: j
350 integer,
intent(in) :: k
351 integer,
intent(in) :: l
352 integer,
intent(in) :: e
353 real(kind=
rp),
intent(in) :: t
354 call neko_error(
'Dummy user defined forcing set')
360 real(kind=
rp),
intent(in) :: t
361 call neko_error(
'Dummy user defined vector valued forcing set')
366 real(kind=
rp),
intent(inout) :: s
367 integer,
intent(in) :: j
368 integer,
intent(in) :: k
369 integer,
intent(in) :: l
370 integer,
intent(in) :: e
371 real(kind=
rp),
intent(in) :: t
372 call neko_error(
'Dummy user defined forcing set')
376 subroutine dummy_scalar_user_bc(s, x, y, z, nx, ny, nz, ix, iy, iz, ie, t, tstep)
377 real(kind=
rp),
intent(inout) :: s
378 real(kind=
rp),
intent(in) :: x
379 real(kind=
rp),
intent(in) :: y
380 real(kind=
rp),
intent(in) :: z
381 real(kind=
rp),
intent(in) :: nx
382 real(kind=
rp),
intent(in) :: ny
383 real(kind=
rp),
intent(in) :: nz
384 integer,
intent(in) :: ix
385 integer,
intent(in) :: iy
386 integer,
intent(in) :: iz
387 integer,
intent(in) :: ie
388 real(kind=
rp),
intent(in) :: t
389 integer,
intent(in) :: tstep
390 call neko_warning(
'Dummy scalar user bc set, applied on all non-labeled zones')
395 type(
mesh_t),
intent(inout) :: msh
400 real(kind=
rp),
intent(in) :: t
401 integer,
intent(in) :: tstep
402 type(
field_t),
intent(inout) :: u
403 type(
field_t),
intent(inout) :: v
404 type(
field_t),
intent(inout) :: w
405 type(
field_t),
intent(inout) :: p
406 type(
coef_t),
intent(inout) :: coef
407 type(json_file),
intent(inout) :: params
412 type(
field_t),
intent(inout) :: u
413 type(
field_t),
intent(inout) :: v
414 type(
field_t),
intent(inout) :: w
415 type(
field_t),
intent(inout) :: p
416 type(
coef_t),
intent(inout) :: coef
417 type(json_file),
intent(inout) :: params
421 type(json_file),
intent(inout) :: params
426 type(json_file),
intent(inout) :: params
430 coef, t, tstep, which_solver)
431 type(
field_list_t),
intent(inout) :: dirichlet_field_list
432 type(
bc_list_t),
intent(inout) :: dirichlet_bc_list
433 type(
coef_t),
intent(inout) :: coef
434 real(kind=
rp),
intent(in) :: t
435 integer,
intent(in) :: tstep
436 character(len=*),
intent(in) :: which_solver
441 real(kind=
rp),
intent(in) :: t
442 integer,
intent(in) :: tstep
443 real(kind=
rp),
intent(inout) :: rho, mu, cp, lambda
444 type(json_file),
intent(inout) :: params
455 character(len=*),
intent(in) :: name
456 type(json_file),
intent(inout) :: params
457 type(json_file) :: comp_subdict
459 type(json_core) :: core
460 type(json_value),
pointer :: simcomp_object
461 character(len=:),
allocatable :: current_type
462 integer :: n_simcomps
464 logical :: found, is_user
466 call params%get_core(core)
467 call params%get(simcomp_object)
468 call params%info(
'', n_children=n_simcomps)
474 if (.not. is_user) cycle
476 call json_get(comp_subdict,
"type", current_type)
477 if (trim(current_type) .eq. trim(name))
then
483 if (.not. found)
then
484 call neko_error(
"User-defined simulation component " &
485 // trim(name) //
" not found in case file.")
Abstract interface defining a dirichlet condition on a list of fields.
Computes the source term at a single point.
Computes the source term and adds the result to fields.
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.
Computes the source term at a single point.
Computes the source term and adds the result to fields.
Abstract interface for finalizating user variables.
Abstract interface for initilialization of modules.
Abstract interface for setting material properties.
Abstract interface for adding user defined simulation components.
Abstract interface for user defined check functions.
Abstract interface for user defined scalar initial conditions.
Abstract interface for user defined initial conditions.
Abstract interface for user defined mesh deformation functions.
Abstract interface defining a user defined inflow condition (pointwise)
Abstract interface defining a user defined scalar boundary condition (pointwise) Just imitating inflo...
Defines a boundary condition.
Defines inflow dirichlet conditions.
Implements the fluid_user_source_term_t type.
Utilities for retrieving parameters from the case files.
type(log_t), public neko_log
Global log stream.
integer, parameter, public rp
Global precision used in computations.
Implements the scalar_user_source_term_t type.
Interfaces for user interaction with NEKO.
subroutine dummy_user_f_vector(f, t)
Dummy user (fluid) forcing.
subroutine dummy_user_ic_scalar(s, params)
Dummy user initial condition for scalar field.
type(json_file) function, public simulation_component_user_settings(name, params)
JSON extraction helper function for simulation components.
subroutine dummy_user_final_no_modules(t, params)
subroutine user_intf_init(u)
User interface initialization.
subroutine dummy_user_init_no_simcomp(params)
subroutine dummy_scalar_user_f(s, j, k, l, e, t)
Dummy user (scalar) forcing.
subroutine dummy_user_f(u, v, w, j, k, l, e, t)
Dummy user (fluid) forcing.
subroutine dummy_user_mesh_setup(msh)
Dummy user mesh apply.
subroutine dummy_user_ic(u, v, w, p, params)
Dummy user initial condition.
subroutine dirichlet_do_nothing(dirichlet_field_list, dirichlet_bc_list, coef, t, tstep, which_solver)
subroutine, public dummy_user_material_properties(t, tstep, rho, mu, cp, lambda, params)
subroutine dummy_user_check(t, tstep, u, v, w, p, coef, params)
Dummy user check.
subroutine dummy_user_scalar_f_vector(f, t)
Dummy user (scalar) forcing.
subroutine dummy_scalar_user_bc(s, x, y, z, nx, ny, nz, ix, iy, iz, ie, t, tstep)
Dummy user boundary condition for scalar.
subroutine dummy_user_init_no_modules(t, u, v, w, p, coef, params)
Defines inflow dirichlet conditions.
Defines dirichlet conditions for scalars.
subroutine, public neko_warning(warning_msg)
Reports a warning to standard output.
A list of boundary conditions.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
field_list_t, To be able to group fields together
A source-term for the fluid, with procedure pointers pointing to the actual implementation in the use...
A source-term for the scalar, with procedure pointers pointing to the actual implementation in the us...
User defined dirichlet condition for inlet (vector valued)
User defined dirichlet condition for scalars.