39 use json_module,
only : json_file
46 use,
intrinsic :: iso_c_binding, only : c_ptr
55 logical :: is_moving = .false.
66 class(
no_slip_t),
intent(inout),
target :: this
67 type(
coef_t),
intent(in),
target :: coef
68 type(json_file),
intent(inout) :: json
71 call this%zero_dirichlet_t%init(coef, json)
83 if (this%is_moving)
then
84 if (.not.
associated(this%wx) .or. .not.
associated(this%wy) .or. &
85 .not.
associated(this%wz))
then
86 call neko_error(
"Velocity BC 'no_slip' with moving: true is &
87 &found, but ALE is not activated in case file.")
95 integer,
intent(in) :: n
96 real(kind=
rp),
intent(inout),
dimension(n) :: x, y, z
98 logical,
intent(in),
optional :: strong
102 if (
present(strong)) strong_ = strong
103 if (.not. strong_)
return
105 if (this%is_moving)
then
111 call this%zero_dirichlet_t%apply_vector(x, y, z, n, time, strong_)
117 class(
no_slip_t),
intent(inout),
target :: this
118 type(c_ptr),
intent(inout) :: x_d, y_d, z_d
120 logical,
intent(in),
optional :: strong
121 type(c_ptr),
intent(inout) :: strm
125 if (
present(strong)) strong_ = strong
126 if (.not. strong_)
return
128 if (this%is_moving)
then
130 this%wx%dof%size(), this%msk(0), strm)
132 this%wy%dof%size(), this%msk(0), strm)
134 this%wz%dof%size(), this%msk(0), strm)
136 call this%zero_dirichlet_t%apply_vector_dev(x_d, y_d, z_d, time, &
143 class(
no_slip_t),
intent(inout),
target :: this
145 call this%zero_dirichlet_t%free()
Retrieves a parameter by name or assigns a provided default value. In the latter case also adds the m...
subroutine, public device_masked_copy_0(a_d, b_d, mask_d, n, n_mask, strm)
Copy a masked vector .
Utilities for retrieving parameters from the case files.
subroutine, public masked_copy_0(a, b, mask, n, n_mask)
Copy a masked vector .
Defines no-slip boundary condition (extends zero_dirichlet)
subroutine no_slip_free(this)
subroutine no_slip_apply_vector(this, x, y, z, n, time, strong)
subroutine no_slip_apply_vector_dev(this, x_d, y_d, z_d, time, strong, strm)
subroutine no_slip_init(this, coef, json)
integer, parameter, public rp
Global precision used in computations.
Defines a registry for storing solution fields.
type(registry_t), target, public neko_registry
Global field registry.
Module with things related to the simulation time.
Defines a zero-valued Dirichlet boundary condition.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
A struct that contains all info about the time, expand as needed.
Zero-valued Dirichlet boundary condition. Used for no-slip walls, but also for various auxillary cond...