40 use,
intrinsic :: iso_c_binding, only : c_ptr
41 use json_module,
only : json_file
44 register_fluid_pnpn_velocity_bc
58 procedure :: apply_scalar_dev => &
61 procedure :: apply_vector_dev => &
80 type(
coef_t),
target,
intent(in) :: coef
81 type(json_file),
intent(inout) :: json
84 call this%init_base(coef)
102 integer,
intent(in) :: n
103 real(kind=
rp),
intent(inout) :: x(n)
105 logical,
intent(in),
optional :: strong
108 call neko_error(
"fluid_pnpn_bc_template: apply_scalar is not implemented")
121 integer,
intent(in) :: n
122 real(kind=
rp),
intent(inout) :: x(n), y(n), z(n)
124 logical,
intent(in),
optional :: strong
127 call neko_error(
"fluid_pnpn_bc_template: apply_vector is not implemented")
138 type(c_ptr),
intent(inout) :: x_d
140 logical,
intent(in),
optional :: strong
141 type(c_ptr),
intent(inout) :: strm
145 "fluid_pnpn_bc_template: apply_scalar_dev is not implemented")
158 type(c_ptr),
intent(inout) :: x_d, y_d, z_d
160 logical,
intent(in),
optional :: strong
161 type(c_ptr),
intent(inout) :: strm
165 "fluid_pnpn_bc_template: apply_vector_dev is not implemented")
172 call this%free_base()
179 call this%finalize_base()
187 call register_fluid_pnpn_velocity_bc(
"fluid_pnpn_bc_template", allocator)
193 class(
bc_t),
pointer,
intent(inout) :: obj
Split a boundary condition entry of the case file into a velocity part and a pressure part.
Defines a boundary condition.
Template for a user-defined fluid Pn/Pn velocity boundary condition. A pressure condition is register...
subroutine fluid_pnpn_bc_template_apply_scalar_dev(this, x_d, time, strong, strm)
Apply the boundary condition to a scalar field on the device.
subroutine fluid_pnpn_bc_template_apply_vector_dev(this, x_d, y_d, z_d, time, strong, strm)
Apply the boundary condition to a vector field on the device.
subroutine fluid_pnpn_bc_template_finalize(this)
Finalize the boundary condition.
subroutine fluid_pnpn_bc_template_apply_vector(this, x, y, z, n, time, strong)
Apply the boundary condition to a vector field on the CPU.
subroutine fluid_pnpn_bc_template_allocate(obj)
Allocate the custom boundary condition.
subroutine fluid_pnpn_bc_template_apply_scalar(this, x, n, time, strong)
Apply the boundary condition to a scalar field on the CPU.
subroutine fluid_pnpn_bc_template_free(this)
Destructor.
subroutine fluid_pnpn_bc_template_init(this, coef, json)
Constructor from JSON.
subroutine, public fluid_pnpn_bc_template_register_types()
Register the custom velocity boundary condition type with fluid Pn/Pn.
Modular version of the Classic Nek5000 Pn/Pn formulation for fluids.
integer, parameter, public rp
Global precision used in computations.
Module with things related to the simulation time.
Base type for a boundary condition.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
A user-defined fluid Pn/Pn velocity boundary condition.
A struct that contains all info about the time, expand as needed.