38 use,
intrinsic :: iso_c_binding, only : c_ptr, c_loc
40 use json_module,
only : json_file
48 real(kind=
rp),
dimension(3) :: x = [0d0, 0d0, 0d0]
68 class(
inflow_t),
intent(inout),
target :: this
69 type(
coef_t),
target,
intent(in) :: coef
70 type(json_file),
intent(inout) ::json
71 real(kind=
rp),
allocatable :: x(:)
73 call this%init_base(coef)
80 class(
inflow_t),
intent(inout) :: this
81 integer,
intent(in) :: n
82 real(kind=
rp),
intent(inout),
dimension(n) :: x
84 logical,
intent(in),
optional :: strong
89 class(
inflow_t),
intent(inout),
target :: this
90 type(c_ptr),
intent(inout) :: x_d
92 logical,
intent(in),
optional :: strong
93 type(c_ptr),
intent(inout) :: strm
98 class(
inflow_t),
intent(inout) :: this
99 integer,
intent(in) :: n
100 real(kind=
rp),
intent(inout),
dimension(n) :: x
101 real(kind=
rp),
intent(inout),
dimension(n) :: y
102 real(kind=
rp),
intent(inout),
dimension(n) :: z
104 logical,
intent(in),
optional :: strong
108 if (
present(strong))
then
129 class(
inflow_t),
intent(inout),
target :: this
130 type(c_ptr),
intent(inout) :: x_d
131 type(c_ptr),
intent(inout) :: y_d
132 type(c_ptr),
intent(inout) :: z_d
134 logical,
intent(in),
optional :: strong
135 type(c_ptr),
intent(inout) :: strm
138 if (
present(strong))
then
144 if (strong_ .and. (this%msk(0) .gt. 0))
then
146 c_loc(this%x), this%msk(0), strm)
153 class(
inflow_t),
target,
intent(inout) :: this
155 call this%free_base()
160 class(
inflow_t),
target,
intent(inout) :: this
161 logical,
optional,
intent(in) :: only_facets
162 logical :: only_facets_
166 if (
present(only_facets))
then
167 only_facets_ = only_facets
169 only_facets_ = .false.
172 call this%finalize_base(only_facets_)
Retrieves a parameter by name or throws an error.
Defines a boundary condition.
subroutine, public device_inflow_apply_vector(msk, x, y, z, g, m, strm)
Defines inflow dirichlet conditions.
subroutine inflow_apply_scalar_dev(this, x_d, time, strong, strm)
No-op scalar apply (device version)
subroutine inflow_apply_scalar(this, x, n, time, strong)
No-op scalar apply.
subroutine inflow_finalize(this, only_facets)
Finalize.
subroutine inflow_init(this, coef, json)
Constructor.
subroutine inflow_apply_vector(this, x, y, z, n, time, strong)
Apply inflow conditions (vector valued)
subroutine inflow_apply_vector_dev(this, x_d, y_d, z_d, time, strong, strm)
Apply inflow conditions (vector valued) (device version)
subroutine inflow_free(this)
Destructor.
Utilities for retrieving parameters from the case files.
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,...
Dirichlet condition for inlet (vector valued)
A struct that contains all info about the time, expand as needed.