46 use json_module,
only : json_file
62 type(json_file),
intent(inout) :: params
72 character(len=*),
intent(in) :: scheme_name
92 type(
mesh_t),
intent(inout) :: msh
103 character(len=*),
intent(in) :: bc_name
104 integer,
intent(in) :: msk(:)
105 integer,
intent(out) :: indices(:,:)
116 character(len=*),
intent(in) :: bc_name
117 integer,
intent(in) :: msk(:)
118 real(kind=
rp),
intent(out) :: distances(:,:)
148 character(len=*),
intent(in) :: scheme_name
164 character(len=*),
intent(in) :: scheme_name
178 x_ref, y_ref, z_ref, base_shapes, time)
180 type(
coef_t),
intent(in) :: coef
181 type(
field_t),
intent(in) :: x_ref, y_ref, z_ref
182 type(
field_t),
intent(inout) :: wm_x, wm_y, wm_z
183 type(
field_t),
intent(in) :: base_shapes(:)
193 type(
field_t),
intent(inout) :: base_shapes(:)
206 integer,
intent(in) :: body_id
208 real(kind=
rp),
intent(inout) :: vel_trans(3)
209 real(kind=
rp),
intent(inout) :: vel_ang(3)
221 logical :: suppress_type_injection = .false.
230 initial_conditions => null()
234 wall_sampling_gll => null()
237 wall_sampling_distance => null()
252 dirichlet_conditions => null()
255 neumann_conditions => null()
258 material_properties => null()
261 ale_mesh_velocity => null()
267 ale_base_shapes => null()
270 morph_interface => null()
295 class(
user_t),
intent(inout) :: this
296 logical :: user_extended = .false.
297 character(len=256),
dimension(20) :: extensions
301 if (.not.
associated(this%startup))
then
304 user_extended = .true.
306 write(extensions(n),
'(A)')
'- Startup'
309 if (.not.
associated(this%initial_conditions))
then
312 user_extended = .true.
314 write(extensions(n),
'(A)')
'- Initial condition'
317 if (.not.
associated(this%source_term))
then
320 user_extended = .true.
322 write(extensions(n),
'(A)')
'- Source term'
325 if (.not.
associated(this%dirichlet_conditions))
then
328 user_extended = .true.
330 write(extensions(n),
'(A)')
'- Dirichlet boundary condition'
333 if (.not.
associated(this%neumann_conditions))
then
336 user_extended = .true.
338 write(extensions(n),
'(A)')
'- Neumann boundary condition'
341 if (.not.
associated(this%mesh_setup))
then
344 user_extended = .true.
346 write(extensions(n),
'(A)')
'- Mesh setup'
349 if (.not.
associated(this%wall_sampling_gll))
then
352 user_extended = .true.
354 write(extensions(n),
'(A)')
'- GLL wall sampling'
357 if (.not.
associated(this%wall_sampling_distance))
then
360 user_extended = .true.
362 write(extensions(n),
'(A)')
'- Distance wall sampling'
365 if (.not.
associated(this%compute))
then
368 user_extended = .true.
370 write(extensions(n),
'(A)')
'- User compute'
373 if (.not.
associated(this%preprocess))
then
376 user_extended = .true.
378 write(extensions(n),
'(A)')
'- User preprocess'
381 if (.not.
associated(this%initialize))
then
384 user_extended = .true.
386 write(extensions(n),
'(A)')
'- Initialize modules'
389 if (.not.
associated(this%finalize))
then
392 user_extended = .true.
394 write(extensions(n),
'(A)')
'- Finalize modules'
397 if (.not.
associated(this%material_properties))
then
400 user_extended = .true.
402 write(extensions(n),
'(A)')
'- Material properties'
405 if (.not.
associated(this%ale_mesh_velocity))
then
408 user_extended = .true.
410 write(extensions(n),
'(A)')
'- ALE mesh velocity'
413 if (.not.
associated(this%ale_rigid_kinematics))
then
416 user_extended = .true.
418 write(extensions(n),
'(A)')
'- ALE kinematics'
421 if (.not.
associated(this%ale_base_shapes))
then
424 user_extended = .true.
426 write(extensions(n),
'(A)')
'- ALE base shapes'
429 if (.not.
associated(this%morph_interface))
then
432 user_extended = .true.
434 write(extensions(n),
'(A)')
'- Morph overset interface'
437 if (user_extended)
then
438 call neko_log%section(
'User defined extensions')
441 call neko_log%message(extensions(i))
457 type(json_file),
intent(inout) :: params
462 character(len=*),
intent(in) :: scheme_name
465 call neko_error(
'Dummy user defined initial condition set')
470 character(len=*),
intent(in) :: scheme_name
473 call neko_error(
'Dummy user defined source term set')
478 type(
mesh_t),
intent(inout) :: msh
487 character(len=*),
intent(in) :: bc_name
488 integer,
intent(in) :: msk(:)
489 integer,
intent(out) :: indices(:,:)
491 call neko_error(
'Wall sampling for '//trim(bc_name)// &
492 ' is configured as user, but wall_sampling_gll is not set')
500 character(len=*),
intent(in) :: bc_name
501 integer,
intent(in) :: msk(:)
502 real(kind=
rp),
intent(out) :: distances(:,:)
504 call neko_error(
'Wall sampling for '//trim(bc_name)// &
505 ' is configured as user, but wall_sampling_distance is not set')
534 character(len=*),
intent(in) :: scheme_name
540 interface_mask, time, bc_name, &
544 type(
mask_t),
intent(in) :: interface_mask
546 character(len=*),
intent(in) :: bc_name
547 logical,
intent(inout) :: find_interface
551 x_ref, y_ref, z_ref, base_shapes, time)
552 type(
field_t),
intent(inout) :: wm_x, wm_y, wm_z
553 type(
coef_t),
intent(in) :: coef
554 type(
field_t),
intent(in) :: x_ref, y_ref, z_ref
555 type(
field_t),
intent(in) :: base_shapes(:)
560 type(
field_t),
intent(inout) :: base_shapes(:)
564 integer,
intent(in) :: body_id
566 real(kind=
rp),
intent(inout) :: vel_trans(3)
567 real(kind=
rp),
intent(inout) :: vel_ang(3)
Abstract interface defining a dirichlet condition on a list of fields.
Abstract interface defining a neumann condition on a list of 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.
User callback for overset-interface morphing and boundary-value updates.
Abstract interface for user defined ALE base shapes.
Abstract interface for user defined ALE mesh velocity.
Abstract interface for user defined ALE rigid body kinematics.
Abstract interface for user defined check functions.
Abstract interface for finalizating user variables.
Abstract interface for user defined initial conditions.
Abstract interface for initilialization of modules.
Abstract interface for setting material properties.
Abstract interface for user defined mesh deformation functions.
Abstract interface for user defined source term.
Abstract interface for a user start-up routine.
Abstract interface for user-defined physical-distance for wall models.
Abstract interface for user-defined GLL sampling for wall models.
Defines data structures and algorithms for configuring, calculating, and time-integrating the rigid-b...
Defines a boundary condition.
Defines user dirichlet condition for a scalar field.
Defines user neumann condition for a scalar field.
Utilities for retrieving parameters from the case files.
type(log_t), public neko_log
Global log stream.
Object for handling masks in Neko.
integer, parameter, public rp
Global precision used in computations.
Defines overset interface scalar boundary conditions.
Implements the source_term_t type and a wrapper source_term_wrapper_t.
Module with things related to the simulation time.
Interfaces for user interaction with NEKO.
subroutine dummy_user_finalize(time)
subroutine neumann_do_nothing(fields, bc, time)
subroutine, public dummy_user_ale_mesh_velocity(wm_x, wm_y, wm_z, coef, x_ref, y_ref, z_ref, base_shapes, time)
subroutine dummy_user_source_term(scheme_name, rhs, time)
Dummy user source_term.
subroutine user_intf_init(this)
Constructor.
subroutine dummy_initialize(time)
subroutine, public dummy_user_material_properties(scheme_name, properties, time)
subroutine dummy_startup(params)
Dummy user startup.
subroutine dirichlet_do_nothing(fields, bc, time)
subroutine dummy_user_mesh_setup(msh, time)
Dummy user mesh apply.
subroutine, public dummy_user_ale_base_shapes(base_shapes)
subroutine dummy_user_wall_sampling_distance(bc_name, msk, distances)
Dummy user-defined physical-distance wall-sampling callback.
subroutine dummy_user_initial_conditions(scheme_name, fields)
Dummy user initial condition.
subroutine dummy_user_compute(time)
Dummy user compute.
subroutine dummy_user_wall_sampling_gll(bc_name, msk, indices)
Dummy user-defined GLL wall-sampling callback.
subroutine dummy_morph_overset_interface(interface_dof, interface_field, interface_mask, time, bc_name, find_interface)
subroutine, public dummy_user_ale_rigid_kinematics(body_id, time, vel_trans, vel_ang)
subroutine, public neko_warning(warning_msg)
Reports a warning to standard output.
Base type for a boundary condition.
A list of allocatable `bc_t`. Follows the standard interface of lists.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
User defined dirichlet condition, for which the user can work with an entire field....
field_list_t, To be able to group fields together
User defined neumann condition, for which the user can work with an entire field. The type stores a s...
Type for consistently handling masks in Neko. This type encapsulates the mask array and its associate...
A struct that contains all info about the time, expand as needed.
A type collecting all the overridable user routines and flag to suppress type injection from custom m...
vector_list_t, To be able to group vectors together