Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
device_coef.F90
Go to the documentation of this file.
1! Copyright (c) 2022-2026, The Neko Authors
2! All rights reserved.
3!
4! Redistribution and use in source and binary forms, with or without
5! modification, are permitted provided that the following conditions
6! are met:
7!
8! * Redistributions of source code must retain the above copyright
9! notice, this list of conditions and the following disclaimer.
10!
11! * Redistributions in binary form must reproduce the above
12! copyright notice, this list of conditions and the following
13! disclaimer in the documentation and/or other materials provided
14! with the distribution.
15!
16! * Neither the name of the authors nor the names of its
17! contributors may be used to endorse or promote products derived
18! from this software without specific prior written permission.
19!
20! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21! "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22! LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23! FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24! COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25! INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26! BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27! LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28! CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29! LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30! ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31! POSSIBILITY OF SUCH DAMAGE.
32!
34 use num_types, only : rp, c_rp
35 use utils, only : neko_error
36 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
37 implicit none
38 private
39
44
45#ifdef HAVE_HIP
46 interface
47 subroutine hip_coef_generate_geo(G11, G12, G13, G22, G23, G33, &
48 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
49 jacinv, w3, nel, lx, gdim) &
50 bind(c, name='hip_coef_generate_geo')
51 use, intrinsic :: iso_c_binding
52 implicit none
53 type(c_ptr), value :: G11, G12, G13, G22, G23, G33
54 type(c_ptr), value :: drdx, drdy, drdz
55 type(c_ptr), value :: dsdx, dsdy, dsdz
56 type(c_ptr), value :: dtdx, dtdy, dtdz
57 type(c_ptr), value :: jacinv, w3
58 integer(c_int) :: nel, gdim, lx
59 end subroutine hip_coef_generate_geo
60 end interface
61
62 interface
63 subroutine hip_coef_generate_dxyzdrst(drdx, drdy, drdz, dsdx, dsdy, &
64 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
65 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
66 bind(c, name='hip_coef_generate_dxyzdrst')
67 use, intrinsic :: iso_c_binding
68 implicit none
69 type(c_ptr), value :: drdx, drdy, drdz
70 type(c_ptr), value :: dsdx, dsdy, dsdz
71 type(c_ptr), value :: dtdx, dtdy, dtdz
72 type(c_ptr), value :: dxdr, dydr, dzdr
73 type(c_ptr), value :: dxds, dyds, dzds
74 type(c_ptr), value :: dxdt, dydt, dzdt
75 type(c_ptr), value :: dx, dy, dz, x, y, z
76 type(c_ptr), value :: jacinv, jac
77 integer(c_int) :: lx, nel
78 end subroutine hip_coef_generate_dxyzdrst
79 end interface
80
81 interface
82 subroutine hip_coef_generate_mass(B, Binv, jac, w3, lxyz, nel) &
83 bind(c, name='hip_coef_generate_mass')
84 use, intrinsic :: iso_c_binding
85 implicit none
86 type(c_ptr), value :: B, Binv, jac, w3
87 integer(c_int) :: lxyz, nel
88 end subroutine hip_coef_generate_mass
89 end interface
90
91 interface
92 subroutine hip_coef_generate_area_and_normal(area, nx, ny, nz, &
93 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
94 wx, wy, wz, lx, nel, eps) &
95 bind(c, name='hip_coef_generate_area_and_normal')
96 use, intrinsic :: iso_c_binding
97 import c_rp
98 implicit none
99 type(c_ptr), value :: area, nx, ny, nz
100 type(c_ptr), value :: dxdr, dydr, dzdr
101 type(c_ptr), value :: dxds, dyds, dzds
102 type(c_ptr), value :: dxdt, dydt, dzdt
103 type(c_ptr), value :: wx, wy, wz
104 integer(c_int) :: lx, nel
105 real(kind=c_rp), value :: eps
107 end interface
108
109#elif HAVE_CUDA
110 interface
111 subroutine cuda_coef_generate_geo(G11, G12, G13, G22, G23, G33, &
112 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
113 jacinv, w3, nel, lx, gdim) &
114 bind(c, name='cuda_coef_generate_geo')
115 use, intrinsic :: iso_c_binding
116 implicit none
117 type(c_ptr), value :: g11, g12, g13, g22, g23, g33
118 type(c_ptr), value :: drdx, drdy, drdz
119 type(c_ptr), value :: dsdx, dsdy, dsdz
120 type(c_ptr), value :: dtdx, dtdy, dtdz
121 type(c_ptr), value :: jacinv, w3
122 integer(c_int) :: nel, gdim, lx
123 end subroutine cuda_coef_generate_geo
124 end interface
125
126 interface
127 subroutine cuda_coef_generate_dxyzdrst(drdx, drdy, drdz, dsdx, dsdy, &
128 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
129 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
130 bind(c, name='cuda_coef_generate_dxyzdrst')
131 use, intrinsic :: iso_c_binding
132 implicit none
133 type(c_ptr), value :: drdx, drdy, drdz
134 type(c_ptr), value :: dsdx, dsdy, dsdz
135 type(c_ptr), value :: dtdx, dtdy, dtdz
136 type(c_ptr), value :: dxdr, dydr, dzdr
137 type(c_ptr), value :: dxds, dyds, dzds
138 type(c_ptr), value :: dxdt, dydt, dzdt
139 type(c_ptr), value :: dx, dy, dz, x, y, z
140 type(c_ptr), value :: jacinv, jac
141 integer(c_int) :: lx, nel
142 end subroutine cuda_coef_generate_dxyzdrst
143 end interface
144
145 interface
146 subroutine cuda_coef_generate_mass(B, Binv, jac, w3, lxyz, nel) &
147 bind(c, name='cuda_coef_generate_mass')
148 use, intrinsic :: iso_c_binding
149 implicit none
150 type(c_ptr), value :: B, Binv, jac, w3
151 integer(c_int) :: lxyz, nel
152 end subroutine cuda_coef_generate_mass
153 end interface
154
155 interface
156 subroutine cuda_coef_generate_area_and_normal(area, nx, ny, nz, &
157 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
158 wx, wy, wz, lx, nel, eps) &
159 bind(c, name='cuda_coef_generate_area_and_normal')
160 use, intrinsic :: iso_c_binding
161 import c_rp
162 implicit none
163 type(c_ptr), value :: area, nx, ny, nz
164 type(c_ptr), value :: dxdr, dydr, dzdr
165 type(c_ptr), value :: dxds, dyds, dzds
166 type(c_ptr), value :: dxdt, dydt, dzdt
167 type(c_ptr), value :: wx, wy, wz
168 integer(c_int) :: lx, nel
169 real(kind=c_rp), value :: eps
171 end interface
172
173#elif HAVE_OPENCL
174 interface
175 subroutine opencl_coef_generate_geo(G11, G12, G13, G22, G23, G33, &
176 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
177 jacinv, w3, nel, lx, gdim) &
178 bind(c, name='opencl_coef_generate_geo')
179 use, intrinsic :: iso_c_binding
180 implicit none
181 type(c_ptr), value :: g11, g12, g13, g22, g23, g33
182 type(c_ptr), value :: drdx, drdy, drdz
183 type(c_ptr), value :: dsdx, dsdy, dsdz
184 type(c_ptr), value :: dtdx, dtdy, dtdz
185 type(c_ptr), value :: jacinv, w3
186 integer(c_int) :: nel, gdim, lx
187 end subroutine opencl_coef_generate_geo
188 end interface
189
190 interface
191 subroutine opencl_coef_generate_dxyzdrst(drdx, drdy, drdz, dsdx, dsdy, &
192 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
193 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
194 bind(c, name='opencl_coef_generate_dxyzdrst')
195 use, intrinsic :: iso_c_binding
196 implicit none
197 type(c_ptr), value :: drdx, drdy, drdz
198 type(c_ptr), value :: dsdx, dsdy, dsdz
199 type(c_ptr), value :: dtdx, dtdy, dtdz
200 type(c_ptr), value :: dxdr, dydr, dzdr
201 type(c_ptr), value :: dxds, dyds, dzds
202 type(c_ptr), value :: dxdt, dydt, dzdt
203 type(c_ptr), value :: dx, dy, dz, x, y, z
204 type(c_ptr), value :: jacinv, jac
205 integer(c_int) :: lx, nel
206 end subroutine opencl_coef_generate_dxyzdrst
207 end interface
208
209 interface
210 subroutine opencl_coef_generate_mass(B, Binv, jac, w3, lxyz, nel) &
211 bind(c, name='opencl_coef_generate_mass')
212 use, intrinsic :: iso_c_binding
213 implicit none
214 type(c_ptr), value :: B, Binv, jac, w3
215 integer(c_int) :: lxyz, nel
216 end subroutine opencl_coef_generate_mass
217 end interface
218
219 interface
220 subroutine opencl_coef_generate_area_and_normal(area, nx, ny, nz, &
221 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
222 wx, wy, wz, lx, nel, eps) &
223 bind(c, name='opencl_coef_generate_area_and_normal')
224 use, intrinsic :: iso_c_binding
225 import c_rp
226 implicit none
227 type(c_ptr), value :: area, nx, ny, nz
228 type(c_ptr), value :: dxdr, dydr, dzdr
229 type(c_ptr), value :: dxds, dyds, dzds
230 type(c_ptr), value :: dxdt, dydt, dzdt
231 type(c_ptr), value :: wx, wy, wz
232 integer(c_int) :: lx, nel
233 real(kind=c_rp), value :: eps
235 end interface
236
237#elif HAVE_METAL
238 interface
239 subroutine metal_coef_generate_geo(G11, G12, G13, G22, G23, G33, &
240 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
241 jacinv, w3, nel, lx, gdim) &
242 bind(c, name='metal_coef_generate_geo')
243 use, intrinsic :: iso_c_binding
244 implicit none
245 type(c_ptr), value :: g11, g12, g13, g22, g23, g33
246 type(c_ptr), value :: drdx, drdy, drdz
247 type(c_ptr), value :: dsdx, dsdy, dsdz
248 type(c_ptr), value :: dtdx, dtdy, dtdz
249 type(c_ptr), value :: jacinv, w3
250 integer(c_int) :: nel, gdim, lx
251 end subroutine metal_coef_generate_geo
252 end interface
253
254 interface
255 subroutine metal_coef_generate_dxyzdrst(drdx, drdy, drdz, dsdx, dsdy, &
256 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
257 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
258 bind(c, name='metal_coef_generate_dxyzdrst')
259 use, intrinsic :: iso_c_binding
260 implicit none
261 type(c_ptr), value :: drdx, drdy, drdz
262 type(c_ptr), value :: dsdx, dsdy, dsdz
263 type(c_ptr), value :: dtdx, dtdy, dtdz
264 type(c_ptr), value :: dxdr, dydr, dzdr
265 type(c_ptr), value :: dxds, dyds, dzds
266 type(c_ptr), value :: dxdt, dydt, dzdt
267 type(c_ptr), value :: dx, dy, dz, x, y, z
268 type(c_ptr), value :: jacinv, jac
269 integer(c_int) :: lx, nel
270 end subroutine metal_coef_generate_dxyzdrst
271 end interface
272
273 interface
274 subroutine metal_coef_generate_mass(B, Binv, jac, w3, lxyz, nel) &
275 bind(c, name='metal_coef_generate_mass')
276 use, intrinsic :: iso_c_binding
277 implicit none
278 type(c_ptr), value :: B, Binv, jac, w3
279 integer(c_int) :: lxyz, nel
280 end subroutine metal_coef_generate_mass
281 end interface
282
283 interface
284 subroutine metal_coef_generate_area_and_normal(area, nx, ny, nz, &
285 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
286 wx, wy, wz, lx, nel, eps) &
287 bind(c, name='metal_coef_generate_area_and_normal')
288 use, intrinsic :: iso_c_binding
289 import c_rp
290 implicit none
291 type(c_ptr), value :: area, nx, ny, nz
292 type(c_ptr), value :: dxdr, dydr, dzdr
293 type(c_ptr), value :: dxds, dyds, dzds
294 type(c_ptr), value :: dxdt, dydt, dzdt
295 type(c_ptr), value :: wx, wy, wz
296 integer(c_int) :: lx, nel
297 real(kind=c_rp), value :: eps
298 end subroutine metal_coef_generate_area_and_normal
299 end interface
300
301#endif
302
303contains
304
305 subroutine device_coef_generate_geo(G11_d, G12_d, G13_d, G22_d, &
306 G23_d, G33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, &
307 dsdz_d, dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
308 type(c_ptr) :: g11_d, g12_d, g13_d, g22_d, g23_d, g33_d
309 type(c_ptr) :: drdx_d, drdy_d, drdz_d
310 type(c_ptr) :: dsdx_d, dsdy_d, dsdz_d
311 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
312 type(c_ptr) :: jacinv_d, w3_d
313 integer :: nel, gdim, lx
314
315#ifdef HAVE_HIP
316 call hip_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, &
317 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
318 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
319#elif HAVE_CUDA
320 call cuda_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, &
321 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
322 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
323#elif HAVE_OPENCL
324 call opencl_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, &
325 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
326 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
327#elif HAVE_METAL
328 call metal_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, &
329 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
330 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
331#else
332 call neko_error('No device backend configured')
333#endif
334
335 end subroutine device_coef_generate_geo
336
337 subroutine device_coef_generate_dxydrst(drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d,&
338 dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, dzdr_d, dxds_d, &
339 dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, dx_d, dy_d, dz_d, &
340 x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
341 type(c_ptr) :: drdx_d, drdy_d, drdz_d
342 type(c_ptr) :: dsdx_d, dsdy_d, dsdz_d
343 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
344 type(c_ptr) :: dxdr_d, dydr_d, dzdr_d
345 type(c_ptr) :: dxds_d, dyds_d, dzds_d
346 type(c_ptr) :: dxdt_d, dydt_d, dzdt_d
347 type(c_ptr) :: dx_d, dy_d, dz_d, x_d, y_d, z_d
348 type(c_ptr) :: jacinv_d, jac_d
349 integer :: lx, nel
350
351#ifdef HAVE_HIP
352 call hip_coef_generate_dxyzdrst(drdx_d, drdy_d, drdz_d, dsdx_d, &
353 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
354 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
355 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
356#elif HAVE_CUDA
357 call cuda_coef_generate_dxyzdrst(drdx_d, drdy_d, drdz_d, dsdx_d, &
358 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
359 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
360 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
361#elif HAVE_OPENCL
362 call opencl_coef_generate_dxyzdrst(drdx_d, drdy_d, drdz_d, dsdx_d, &
363 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
364 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
365 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
366#elif HAVE_METAL
367 call metal_coef_generate_dxyzdrst(drdx_d, drdy_d, drdz_d, dsdx_d, &
368 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
369 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
370 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
371#else
372 call neko_error('No device backend configured')
373#endif
374 end subroutine device_coef_generate_dxydrst
375
376 subroutine device_coef_generate_mass(B, Binv, jac, w3, lxyz, nel)
377 type(c_ptr) :: b, binv, jac, w3
378 integer :: lxyz, nel
379
380#ifdef HAVE_HIP
381 call hip_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
382#elif HAVE_CUDA
383 call cuda_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
384#elif HAVE_OPENCL
385 call opencl_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
386#elif HAVE_METAL
387 call metal_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
388#else
389 call neko_error('No device backend configured')
390#endif
391 end subroutine device_coef_generate_mass
392
393 subroutine device_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
394 dxdr_d, dydr_d, dzdr_d, &
395 dxds_d, dyds_d, dzds_d, &
396 dxdt_d, dydt_d, dzdt_d, &
397 wx_d, wy_d, wz_d, &
398 lx, nel, eps)
399 type(c_ptr) :: area_d, nx_d, ny_d, nz_d
400 type(c_ptr) :: dxdr_d, dydr_d, dzdr_d
401 type(c_ptr) :: dxds_d, dyds_d, dzds_d
402 type(c_ptr) :: dxdt_d, dydt_d, dzdt_d
403 type(c_ptr) :: wx_d, wy_d, wz_d
404 integer :: lx, nel
405 real(kind=c_rp), value :: eps
406
407#ifdef HAVE_HIP
408 call hip_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
409 dxdr_d, dydr_d, dzdr_d, &
410 dxds_d, dyds_d, dzds_d, &
411 dxdt_d, dydt_d, dzdt_d, &
412 wx_d, wy_d, wz_d, &
413 lx, nel, eps)
414#elif HAVE_CUDA
415 call cuda_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
416 dxdr_d, dydr_d, dzdr_d, &
417 dxds_d, dyds_d, dzds_d, &
418 dxdt_d, dydt_d, dzdt_d, &
419 wx_d, wy_d, wz_d, &
420 lx, nel, eps)
421#elif HAVE_OPENCL
422 call opencl_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
423 dxdr_d, dydr_d, dzdr_d, &
424 dxds_d, dyds_d, dzds_d, &
425 dxdt_d, dydt_d, dzdt_d, &
426 wx_d, wy_d, wz_d, &
427 lx, nel, eps)
428#elif HAVE_METAL
429 call metal_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
430 dxdr_d, dydr_d, dzdr_d, &
431 dxds_d, dyds_d, dzds_d, &
432 dxdt_d, dydt_d, dzdt_d, &
433 wx_d, wy_d, wz_d, &
434 lx, nel, eps)
435#else
436 call neko_error('No device backend configured')
437#endif
439
440end module device_coef
void opencl_coef_generate_mass(void *B, void *Binv, void *jac, void *w3, int *lxyz, int *nel)
Definition coef.c:231
void opencl_coef_generate_geo(void *G11, void *G12, void *G13, void *G22, void *G23, void *G33, void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *jacinv, void *w3, int *nel, int *lx, int *gdim)
Definition coef.c:54
void opencl_coef_generate_dxyzdrst(void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *dx, void *dy, void *dz, void *x, void *y, void *z, void *jacinv, void *jac, int *lx, int *nel)
Definition coef.c:126
void opencl_coef_generate_area_and_normal(void *area, void *nx, void *ny, void *nz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *wx, void *wy, void *wz, int *lx, int *nel, real eps)
Definition coef.c:261
void cuda_coef_generate_area_and_normal(void *area, void *nx, void *ny, void *nz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *wx, void *wy, void *wz, int *lx, int *nel, real eps)
Definition coef.cu:185
void cuda_coef_generate_mass(void *B, void *Binv, void *jac, void *w3, int *lxyz, int *nel)
Definition coef.cu:165
void cuda_coef_generate_dxyzdrst(void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *dx, void *dy, void *dz, void *x, void *y, void *z, void *jacinv, void *jac, int *lx, int *nel)
Definition coef.cu:97
void cuda_coef_generate_geo(void *G11, void *G12, void *G13, void *G22, void *G23, void *G33, void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *jacinv, void *w3, int *nel, int *lx, int *gdim)
Definition coef.cu:45
subroutine, public device_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, dxdr_d, dydr_d, dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, wx_d, wy_d, wz_d, lx, nel, eps)
subroutine, public device_coef_generate_dxydrst(drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
subroutine, public device_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
subroutine, public device_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
integer, parameter, public c_rp
Definition num_types.f90:13
integer, parameter, public rp
Global precision used in computations.
Definition num_types.f90:12
Utilities.
Definition utils.f90:35