46 use json_module,
only : json_file
62 type(json_file),
intent(inout) :: params
75 character(len=*),
intent(in) :: scheme_name
95 type(
mesh_t),
intent(inout) :: msh
106 character(len=*),
intent(in) :: bc_name
107 integer,
intent(in) :: msk(:)
108 integer,
intent(out) :: indices(:,:)
119 character(len=*),
intent(in) :: bc_name
120 integer,
intent(in) :: msk(:)
121 real(kind=
rp),
intent(out) :: distances(:,:)
151 character(len=*),
intent(in) :: scheme_name
167 character(len=*),
intent(in) :: scheme_name
181 x_ref, y_ref, z_ref, base_shapes, time)
183 type(
coef_t),
intent(in) :: coef
184 type(
field_t),
intent(in) :: x_ref, y_ref, z_ref
185 type(
field_t),
intent(inout) :: wm_x, wm_y, wm_z
186 type(
field_t),
intent(in) :: base_shapes(:)
196 type(
field_t),
intent(inout) :: base_shapes(:)
209 integer,
intent(in) :: body_id
211 real(kind=
rp),
intent(inout) :: vel_trans(3)
212 real(kind=
rp),
intent(inout) :: vel_ang(3)
224 logical :: suppress_type_injection = .false.
233 initial_conditions => null()
237 wall_sampling_gll => null()
240 wall_sampling_distance => null()
255 dirichlet_conditions => null()
258 neumann_conditions => null()
261 material_properties => null()
264 ale_mesh_velocity => null()
270 ale_base_shapes => null()
273 morph_interface => null()
298 class(
user_t),
intent(inout) :: this
299 logical :: user_extended = .false.
300 character(len=256),
dimension(20) :: extensions
304 if (.not.
associated(this%startup))
then
307 user_extended = .true.
309 write(extensions(n),
'(A)')
'- Startup'
312 if (.not.
associated(this%initial_conditions))
then
315 user_extended = .true.
317 write(extensions(n),
'(A)')
'- Initial condition'
320 if (.not.
associated(this%source_term))
then
323 user_extended = .true.
325 write(extensions(n),
'(A)')
'- Source term'
328 if (.not.
associated(this%dirichlet_conditions))
then
331 user_extended = .true.
333 write(extensions(n),
'(A)')
'- Dirichlet boundary condition'
336 if (.not.
associated(this%neumann_conditions))
then
339 user_extended = .true.
341 write(extensions(n),
'(A)')
'- Neumann boundary condition'
344 if (.not.
associated(this%mesh_setup))
then
347 user_extended = .true.
349 write(extensions(n),
'(A)')
'- Mesh setup'
352 if (.not.
associated(this%wall_sampling_gll))
then
355 user_extended = .true.
357 write(extensions(n),
'(A)')
'- GLL wall sampling'
360 if (.not.
associated(this%wall_sampling_distance))
then
363 user_extended = .true.
365 write(extensions(n),
'(A)')
'- Distance wall sampling'
368 if (.not.
associated(this%compute))
then
371 user_extended = .true.
373 write(extensions(n),
'(A)')
'- User compute'
376 if (.not.
associated(this%preprocess))
then
379 user_extended = .true.
381 write(extensions(n),
'(A)')
'- User preprocess'
384 if (.not.
associated(this%initialize))
then
387 user_extended = .true.
389 write(extensions(n),
'(A)')
'- Initialize modules'
392 if (.not.
associated(this%finalize))
then
395 user_extended = .true.
397 write(extensions(n),
'(A)')
'- Finalize modules'
400 if (.not.
associated(this%material_properties))
then
403 user_extended = .true.
405 write(extensions(n),
'(A)')
'- Material properties'
408 if (.not.
associated(this%ale_mesh_velocity))
then
411 user_extended = .true.
413 write(extensions(n),
'(A)')
'- ALE mesh velocity'
416 if (.not.
associated(this%ale_rigid_kinematics))
then
419 user_extended = .true.
421 write(extensions(n),
'(A)')
'- ALE kinematics'
424 if (.not.
associated(this%ale_base_shapes))
then
427 user_extended = .true.
429 write(extensions(n),
'(A)')
'- ALE base shapes'
432 if (.not.
associated(this%morph_interface))
then
435 user_extended = .true.
437 write(extensions(n),
'(A)')
'- Morph overset interface'
440 if (user_extended)
then
441 call neko_log%section(
'User defined extensions')
444 call neko_log%message(extensions(i))
460 type(json_file),
intent(inout) :: params
465 character(len=*),
intent(in) :: scheme_name
468 call neko_error(
'Dummy user defined initial condition set')
473 character(len=*),
intent(in) :: scheme_name
476 call neko_error(
'Dummy user defined source term set')
481 type(
mesh_t),
intent(inout) :: msh
490 character(len=*),
intent(in) :: bc_name
491 integer,
intent(in) :: msk(:)
492 integer,
intent(out) :: indices(:,:)
494 call neko_error(
'Wall sampling for '//trim(bc_name)// &
495 ' is configured as user, but wall_sampling_gll is not set')
503 character(len=*),
intent(in) :: bc_name
504 integer,
intent(in) :: msk(:)
505 real(kind=
rp),
intent(out) :: distances(:,:)
507 call neko_error(
'Wall sampling for '//trim(bc_name)// &
508 ' is configured as user, but wall_sampling_distance is not set')
537 character(len=*),
intent(in) :: scheme_name
543 interface_mask, time, bc_name, &
547 type(
mask_t),
intent(in) :: interface_mask
549 character(len=*),
intent(in) :: bc_name
550 logical,
intent(inout) :: find_interface
554 x_ref, y_ref, z_ref, base_shapes, time)
555 type(
field_t),
intent(inout) :: wm_x, wm_y, wm_z
556 type(
coef_t),
intent(in) :: coef
557 type(
field_t),
intent(in) :: x_ref, y_ref, z_ref
558 type(
field_t),
intent(in) :: base_shapes(:)
563 type(
field_t),
intent(inout) :: base_shapes(:)
567 integer,
intent(in) :: body_id
569 real(kind=
rp),
intent(inout) :: vel_trans(3)
570 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