42 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
49 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
50 bind(c, name =
'hip_constrain_mixed_bc_zero')
51 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
53 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
55 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
59 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
60 values_n, values_t1, values_t2, m, strm) &
61 bind(c, name =
'hip_constrain_mixed_bc_set')
62 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
64 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
66 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
67 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
71 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
72 value_n, value_t1, value_t2, m, strm) &
73 bind(c, name =
'hip_constrain_mixed_bc_set_const')
74 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
77 real(c_rp) :: value_n, value_t1, value_t2
78 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
80 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
86 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
87 bind(c, name =
'cuda_constrain_mixed_bc_zero')
88 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
90 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
92 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
96 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
97 values_n, values_t1, values_t2, m, strm) &
98 bind(c, name =
'cuda_constrain_mixed_bc_set')
99 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
101 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
103 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
104 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
108 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
109 value_n, value_t1, value_t2, m, strm) &
110 bind(c, name =
'cuda_constrain_mixed_bc_set_const')
111 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
114 real(c_rp) :: value_n, value_t1, value_t2
115 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
117 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
123 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm) &
124 bind(c, name =
'opencl_constrain_mixed_bc_zero')
125 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
127 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
129 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
133 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
134 values_n, values_t1, values_t2, m, strm) &
135 bind(c, name =
'opencl_constrain_mixed_bc_set')
136 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
138 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
140 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2
141 type(c_ptr),
value :: values_n, values_t1, values_t2, strm
145 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
146 value_n, value_t1, value_t2, m, strm) &
147 bind(c, name =
'opencl_constrain_mixed_bc_set_const')
148 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
151 real(c_rp) :: value_n, value_t1, value_t2
152 integer(c_int) :: constraint_n, constraint_t1, constraint_t2
154 type(c_ptr),
value :: mixed_msk, x, y, z, n, t1, t2, strm
182 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm)
183 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
184 integer,
intent(in) :: m
185 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
186 type(c_ptr),
intent(in) :: n, t1, t2
187 type(c_ptr),
intent(in),
optional :: strm
192 if (
present(strm))
then
200 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
203 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
206 constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm_)
208 call neko_error(
'No device backend configured for mixed BC constraint')
236 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
237 values_n, values_t1, values_t2, m, strm)
238 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
239 integer,
intent(in) :: m
240 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
241 type(c_ptr),
intent(in) :: n, t1, t2
242 type(c_ptr),
intent(in) :: values_n, values_t1, values_t2
243 type(c_ptr),
intent(in),
optional :: strm
248 if (
present(strm))
then
256 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
257 values_n, values_t1, values_t2, m, strm_)
260 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
261 values_n, values_t1, values_t2, m, strm_)
264 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
265 values_n, values_t1, values_t2, m, strm_)
267 call neko_error(
'No device backend configured for mixed BC constraint')
292 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
293 value_n, value_t1, value_t2, m, strm)
294 integer,
intent(in) :: constraint_n, constraint_t1, constraint_t2
295 integer,
intent(in) :: m
296 real(kind=
rp),
intent(in) :: value_n, value_t1, value_t2
297 type(c_ptr),
intent(in) :: mixed_msk, x, y, z
298 type(c_ptr),
intent(in) :: n, t1, t2
299 type(c_ptr),
intent(in),
optional :: strm
304 if (
present(strm))
then
312 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
313 value_n, value_t1, value_t2, m, strm_)
316 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
317 value_n, value_t1, value_t2, m, strm_)
320 constraint_n, constraint_t1, constraint_t2, n, t1, t2, &
321 value_n, value_t1, value_t2, m, strm_)
323 call neko_error(
'No device backend configured for mixed BC constraint')
void opencl_constrain_mixed_bc_set(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, void *values_n, void *values_t1, void *values_t2, int *m, cl_command_queue cmd_queue)
void opencl_constrain_mixed_bc_set_const(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, real *value_n, real *value_t1, real *value_t2, int *m, cl_command_queue cmd_queue)
void opencl_constrain_mixed_bc_zero(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, int *m, cl_command_queue cmd_queue)
void cuda_constrain_mixed_bc_zero(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, int *m, cudaStream_t strm)
void cuda_constrain_mixed_bc_set(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, void *values_n, void *values_t1, void *values_t2, int *m, cudaStream_t strm)
void cuda_constrain_mixed_bc_set_const(void *mixed_msk, void *x, void *y, void *z, int *constraint_n, int *constraint_t1, int *constraint_t2, void *n, void *t1, void *t2, real *value_n, real *value_t1, real *value_t2, int *m, cudaStream_t strm)
Device wrappers for basis-aware mixed boundary-condition constraint kernels. These routines operate o...
subroutine, public device_constrain_mixed_bc_zero(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, m, strm)
Constrain mixed-boundary projections by zeroing the selected local components on the device.
subroutine, public device_constrain_mixed_bc_set_const(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, value_n, value_t1, value_t2, m, strm)
Constrain mixed-boundary projections by assigning prescribed local components derived from a constant...
subroutine, public device_constrain_mixed_bc_set(mixed_msk, x, y, z, constraint_n, constraint_t1, constraint_t2, n, t1, t2, values_n, values_t1, values_t2, m, strm)
Constrain mixed-boundary projections by assigning prescribed local components derived from nodewise t...
Device abstraction, common interface for various accelerators.
type(c_ptr), bind(C), public glb_cmd_queue
Global command queue.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.