Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
prgm_lib.F90
Go to the documentation of this file.
1
4 use utils, only : neko_error
5 use, intrinsic :: iso_c_binding, only : c_ptr, c_associated, c_null_ptr
6 implicit none
7 private
8
9#ifdef HAVE_OPENCL
10
12 type(c_ptr), public, bind(c) :: math_program = c_null_ptr
13
15 type(c_ptr), public, bind(c) :: mathops_program = c_null_ptr
16
18 type(c_ptr), public, bind(c) :: dirichlet_program = c_null_ptr
19
21 type(c_ptr), public, bind(c) :: inflow_program = c_null_ptr
22
24 type(c_ptr), public, bind(c) :: zero_dirichlet_program = c_null_ptr
25
27 type(c_ptr), public, bind(c) :: symmetry_program = c_null_ptr
28
30 type(c_ptr), public, bind(c) :: constrain_mixed_bc_program = c_null_ptr
31
33 type(c_ptr), public, bind(c) :: coupled_vector_bc_projector_program = &
34 c_null_ptr
35
37 type(c_ptr), public, bind(c) :: facet_normal_program = c_null_ptr
38
40 type(c_ptr), public, bind(c) :: neumann_program = c_null_ptr
41
43 type(c_ptr), public, bind(c) :: inhom_dirichlet_program = c_null_ptr
44
46 type(c_ptr), public, bind(c) :: dudxyz_program = c_null_ptr
47
49 type(c_ptr), public, bind(c) :: cdtp_program = c_null_ptr
50
52 type(c_ptr), public, bind(c) :: conv1_program = c_null_ptr
53
55 type(c_ptr), public, bind(c) :: convect_scalar_program = c_null_ptr
56
58 type(c_ptr), public, bind(c) :: set_convect_rst_program = c_null_ptr
59
61 type(c_ptr), public, bind(c) :: cfl_program = c_null_ptr
62
64 type(c_ptr), public, bind(c) :: opgrad_program = c_null_ptr
65
67 type(c_ptr), public, bind(c) :: rotate_program = c_null_ptr
68
70 type(c_ptr), public, bind(c) :: gs_program = c_null_ptr
71
73 type(c_ptr), public, bind(c) :: ax_helm_program = c_null_ptr
74
76 type(c_ptr), public, bind(c) :: ax_helm_full_program = c_null_ptr
77
79 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
80
82 type(c_ptr), public, bind(c) :: bicgstab_program = c_null_ptr
83
85 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
86
88 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
89
91 type(c_ptr), public, bind(c) :: pnpn_stress_res_program = c_null_ptr
92
94 type(c_ptr), public, bind(c) :: compressible_res_program = c_null_ptr
95
97 type(c_ptr), public, bind(c) :: &
99 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = &
100 c_null_ptr
101 type(c_ptr), public, bind(c) :: compressible_ops_update_program = c_null_ptr
102
104 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
105
107 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
108
110 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
111
113 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
114
116 type(c_ptr), public, bind(c) :: cai_sagaut_model_ii_program = c_null_ptr
117
119 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
120
122 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
123
125 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
126
128 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
129
131 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
132
134 type(c_ptr), public, bind(c) :: find_rst_legendre_program = c_null_ptr
135
137 type(c_ptr), public, bind(c) :: entropy_viscosity_program = c_null_ptr
138
140 type(c_ptr), public, bind(c) :: smagorinsky_nut_program = c_null_ptr
141
143 type(c_ptr), public, bind(c) :: wale_nut_program = c_null_ptr
144
146 type(c_ptr), public, bind(c) :: sigma_nut_program = c_null_ptr
147
149 type(c_ptr), public, bind(c) :: vreman_nut_program = c_null_ptr
150
152 type(c_ptr), public, bind(c) :: deardorff_nut_program = c_null_ptr
153
155 type(c_ptr), public, bind(c) :: dynamic_smagorinsky_nut_program = c_null_ptr
156
158 type(c_ptr), public, bind(c) :: wall_model_program = c_null_ptr
159
161 type(c_ptr), public, bind(c) :: rough_log_law_program = c_null_ptr
162
164 type(c_ptr), public, bind(c) :: spalding_program = c_null_ptr
165
167 type(c_ptr), public, bind(c) :: richardson_program = c_null_ptr
168
170 type(c_ptr), public, bind(c) :: most_program = c_null_ptr
171
173 type(c_ptr), public, bind(c) :: lpt_periodic_bc_program = c_null_ptr
174
176 type(c_ptr), public, bind(c) :: lpt_wall_collision_program = c_null_ptr
177
179 type(c_ptr), public, bind(c) :: ale_kinematics_program = c_null_ptr
180
182 type(c_ptr), public, bind(c) :: gradient_jump_penalty_program = c_null_ptr
183
185
186contains
187
189
190 if (c_associated(math_program)) then
192 call neko_error('Failed to release program')
193 end if
194 math_program = c_null_ptr
195 end if
196
197 if (c_associated(mathops_program)) then
199 call neko_error('Failed to release program')
200 end if
201 mathops_program = c_null_ptr
202 end if
203
204 if (c_associated(dirichlet_program)) then
206 call neko_error('Failed to release program')
207 end if
208 dirichlet_program = c_null_ptr
209 end if
210
211 if (c_associated(inflow_program)) then
213 call neko_error('Failed to release program')
214 end if
215 inflow_program = c_null_ptr
216 end if
217
218 if (c_associated(zero_dirichlet_program)) then
220 call neko_error('Failed to release program')
221 end if
222 zero_dirichlet_program = c_null_ptr
223 end if
224
225 if (c_associated(symmetry_program)) then
227 call neko_error('Failed to release program')
228 end if
229 symmetry_program = c_null_ptr
230 end if
231
232 if (c_associated(constrain_mixed_bc_program)) then
234 call neko_error('Failed to release program')
235 end if
236 constrain_mixed_bc_program = c_null_ptr
237 end if
238
239 if (c_associated(coupled_vector_bc_projector_program)) then
241 cl_success) then
242 call neko_error('Failed to release program')
243 end if
245 end if
246
247 if (c_associated(facet_normal_program)) then
249 call neko_error('Failed to release program')
250 end if
251 facet_normal_program = c_null_ptr
252 end if
253
254 if (c_associated(inhom_dirichlet_program)) then
256 call neko_error('Failed to release program')
257 end if
258 inhom_dirichlet_program = c_null_ptr
259 end if
260
261 if (c_associated(dudxyz_program)) then
263 call neko_error('Failed to release program')
264 end if
265 dudxyz_program = c_null_ptr
266 end if
267
268 if (c_associated(cdtp_program)) then
270 call neko_error('Failed to release program')
271 end if
272 cdtp_program = c_null_ptr
273 end if
274
275 if (c_associated(conv1_program)) then
277 call neko_error('Failed to release program')
278 end if
279 conv1_program = c_null_ptr
280 end if
281
282 if (c_associated(cfl_program)) then
284 call neko_error('Failed to release program')
285 end if
286 cfl_program = c_null_ptr
287 end if
288
289 if (c_associated(opgrad_program)) then
291 call neko_error('Failed to release program')
292 end if
293 opgrad_program = c_null_ptr
294 end if
295
296 if (c_associated(rotate_program)) then
298 call neko_error('Failed to release program')
299 end if
300 rotate_program = c_null_ptr
301 end if
302
303 if (c_associated(gs_program)) then
305 call neko_error('Failed to release program')
306 end if
307 gs_program = c_null_ptr
308 end if
309
310 if (c_associated(ax_helm_program)) then
312 call neko_error('Failed to release program')
313 end if
314 ax_helm_program = c_null_ptr
315 end if
316
317 if (c_associated(ax_helm_full_program)) then
319 call neko_error('Failed to release program')
320 end if
321 ax_helm_full_program = c_null_ptr
322 end if
323
324 if (c_associated(jacobi_program)) then
326 call neko_error('Failed to release program')
327 end if
328 jacobi_program = c_null_ptr
329 end if
330
331 if (c_associated(bicgstab_program)) then
333 call neko_error('Failed to release program')
334 end if
335 bicgstab_program = c_null_ptr
336 end if
337
338 if (c_associated(rhs_maker_program)) then
340 call neko_error('Failed to release program')
341 end if
342 rhs_maker_program = c_null_ptr
343 end if
344
345 if (c_associated(pnpn_res_program)) then
347 call neko_error('Failed to release program')
348 end if
349 pnpn_res_program = c_null_ptr
350 end if
351
352 if (c_associated(pnpn_stress_res_program)) then
354 call neko_error('Failed to release program')
355 end if
356 pnpn_stress_res_program = c_null_ptr
357 end if
358
359 if (c_associated(compressible_res_program)) then
361 call neko_error('Failed to release program')
362 end if
363 compressible_res_program = c_null_ptr
364 end if
365
368 .ne. cl_success) then
369 call neko_error('Failed to release program')
370 end if
372 end if
373
374 if (c_associated(compressible_ops_compute_entropy_program)) then
376 .ne. cl_success) then
377 call neko_error('Failed to release program')
378 end if
380 end if
381
382 if (c_associated(compressible_ops_update_program)) then
384 cl_success) then
385 call neko_error('Failed to release program')
386 end if
388 end if
389
390 if (c_associated(fdm_program)) then
392 call neko_error('Failed to release program')
393 end if
394 fdm_program = c_null_ptr
395 end if
396
397 if (c_associated(tensor_program)) then
399 call neko_error('Failed to release program')
400 end if
401 tensor_program = c_null_ptr
402 end if
403
404 if (c_associated(schwarz_program)) then
406 call neko_error('Failed to release program')
407 end if
408 schwarz_program = c_null_ptr
409 end if
410
411 if (c_associated(dong_program)) then
413 call neko_error('Failed to release program')
414 end if
415 dong_program = c_null_ptr
416 end if
417
418 if (c_associated(cai_sagaut_model_ii_program)) then
420 call neko_error('Failed to release program')
421 end if
422 cai_sagaut_model_ii_program = c_null_ptr
423 end if
424
425 if (c_associated(coef_program)) then
427 call neko_error('Failed to release program')
428 end if
429 coef_program = c_null_ptr
430 end if
431
432 if (c_associated(scalar_residual_program)) then
434 call neko_error('Failed to release program')
435 end if
436 scalar_residual_program = c_null_ptr
437 end if
438
439 if (c_associated(lambda2_program)) then
441 call neko_error('Failed to release program')
442 end if
443 lambda2_program = c_null_ptr
444 end if
445
446 if (c_associated(compute_max_wave_speed_program)) then
448 cl_success) then
449 call neko_error('Failed to release program')
450 end if
452 end if
453
454 if (c_associated(mapping_program)) then
456 call neko_error('Failed to release program')
457 end if
458 mapping_program = c_null_ptr
459 end if
460
461 if (c_associated(find_rst_legendre_program)) then
463 call neko_error('Failed to release program')
464 end if
465 find_rst_legendre_program = c_null_ptr
466 end if
467
468 if (c_associated(entropy_viscosity_program)) then
470 call neko_error('Failed to release program')
471 end if
472 entropy_viscosity_program = c_null_ptr
473 end if
474
475
476 if (c_associated(smagorinsky_nut_program)) then
478 call neko_error('Failed to release program')
479 end if
480 smagorinsky_nut_program = c_null_ptr
481 end if
482
483 if (c_associated(wale_nut_program)) then
485 call neko_error('Failed to release program')
486 end if
487 wale_nut_program = c_null_ptr
488 end if
489
490 if (c_associated(sigma_nut_program)) then
492 call neko_error('Failed to release program')
493 end if
494 sigma_nut_program = c_null_ptr
495 end if
496
497 if (c_associated(vreman_nut_program)) then
499 call neko_error('Failed to release program')
500 end if
501 vreman_nut_program = c_null_ptr
502 end if
503
504 if (c_associated(deardorff_nut_program)) then
506 call neko_error('Failed to release program')
507 end if
508 deardorff_nut_program = c_null_ptr
509 end if
510
511 if (c_associated(dynamic_smagorinsky_nut_program)) then
513 cl_success) then
514 call neko_error('Failed to release program')
515 end if
517 end if
518
519 if (c_associated(wall_model_program)) then
521 call neko_error('Failed to release program')
522 end if
523 wall_model_program = c_null_ptr
524 end if
525
526 if (c_associated(rough_log_law_program)) then
528 call neko_error('Failed to release program')
529 end if
530 rough_log_law_program = c_null_ptr
531 end if
532
533 if (c_associated(spalding_program)) then
535 call neko_error('Failed to release program')
536 end if
537 spalding_program = c_null_ptr
538 end if
539
540 if (c_associated(richardson_program)) then
542 call neko_error('Failed to release program')
543 end if
544 richardson_program = c_null_ptr
545 end if
546
547 if (c_associated(most_program)) then
549 call neko_error('Failed to release program')
550 end if
551 most_program = c_null_ptr
552 end if
553
554 if (c_associated(lpt_periodic_bc_program)) then
556 call neko_error('Failed to release program')
557 end if
558 lpt_periodic_bc_program = c_null_ptr
559 end if
560
561 if (c_associated(lpt_wall_collision_program)) then
563 call neko_error('Failed to release program')
564 end if
565 lpt_wall_collision_program = c_null_ptr
566 end if
567
568 if (c_associated(ale_kinematics_program)) then
570 call neko_error('Failed to release program')
571 end if
572 ale_kinematics_program = c_null_ptr
573 end if
574
575 if (c_associated(gradient_jump_penalty_program)) then
577 call neko_error('Failed to release program')
578 end if
580 end if
581 end subroutine opencl_prgm_lib_release
582
583#endif
584
585end module opencl_prgm_lib
Fortran OpenCL interface.
OpenCL JIT program library.
Definition prgm_lib.F90:2
type(c_ptr), bind(C), public jacobi_program
Device jacobi kernels.
Definition prgm_lib.F90:79
type(c_ptr), bind(C), public vreman_nut_program
Device Vreman eddy viscosity kernels.
Definition prgm_lib.F90:149
type(c_ptr), bind(C), public opgrad_program
Device Velocity gradient kernels.
Definition prgm_lib.F90:64
type(c_ptr), bind(C), public rotate_program
Device cyclic boundary rotation kernels.
Definition prgm_lib.F90:67
type(c_ptr), bind(C), public math_program
Device math kernels.
Definition prgm_lib.F90:12
type(c_ptr), bind(C), public lpt_periodic_bc_program
Device LPT periodic boundary kernels.
Definition prgm_lib.F90:173
type(c_ptr), bind(C), public gradient_jump_penalty_program
Device gradient jump penalty kernels.
Definition prgm_lib.F90:182
type(c_ptr), bind(C), public convect_scalar_program
Device convective kernels for oifs.
Definition prgm_lib.F90:55
type(c_ptr), bind(C), public symmetry_program
Device Symmetry kernels.
Definition prgm_lib.F90:27
type(c_ptr), bind(C), public constrain_mixed_bc_program
Device mixed BC constraint kernels.
Definition prgm_lib.F90:30
type(c_ptr), bind(C), public inhom_dirichlet_program
Device Blasius profile kernel.
Definition prgm_lib.F90:43
type(c_ptr), bind(C), public set_convect_rst_program
Device convect_rst kernels.
Definition prgm_lib.F90:58
type(c_ptr), bind(C), public compressible_ops_update_program
Definition prgm_lib.F90:101
type(c_ptr), bind(C), public mathops_program
Device mathops kernels.
Definition prgm_lib.F90:15
type(c_ptr), bind(C), public dong_program
Device dong kernels.
Definition prgm_lib.F90:113
type(c_ptr), bind(C), public conv1_program
Device convective kernels.
Definition prgm_lib.F90:52
type(c_ptr), bind(C), public inflow_program
Device Inflow kernels.
Definition prgm_lib.F90:21
type(c_ptr), bind(C), public ax_helm_full_program
Device Ax helm full kernels.
Definition prgm_lib.F90:76
type(c_ptr), bind(C), public dynamic_smagorinsky_nut_program
Device dynamic Smagorinsky kernels.
Definition prgm_lib.F90:155
type(c_ptr), bind(C), public dudxyz_program
Device Derivative kernels.
Definition prgm_lib.F90:46
type(c_ptr), bind(C), public coef_program
Device coef kernels.
Definition prgm_lib.F90:119
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:125
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:107
type(c_ptr), bind(C), public ax_helm_program
Device Ax helm kernels.
Definition prgm_lib.F90:73
type(c_ptr), bind(C), public cai_sagaut_model_ii_program
Device Cai-Sagaut Model-II kernels.
Definition prgm_lib.F90:116
type(c_ptr), bind(C), public cdtp_program
Device kernels.
Definition prgm_lib.F90:49
subroutine, public opencl_prgm_lib_release
Definition prgm_lib.F90:189
type(c_ptr), bind(C), public wall_model_program
Device wall model kernels.
Definition prgm_lib.F90:158
type(c_ptr), bind(C), public richardson_program
Device Richardson wall model kernels.
Definition prgm_lib.F90:167
type(c_ptr), bind(C), public smagorinsky_nut_program
Device Smagorinsky eddy viscosity kernels.
Definition prgm_lib.F90:140
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:131
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:110
type(c_ptr), bind(C), public neumann_program
Device Neumann kernels.
Definition prgm_lib.F90:40
type(c_ptr), bind(C), public entropy_viscosity_program
Device entropy viscosity kernels.
Definition prgm_lib.F90:137
type(c_ptr), bind(C), public coupled_vector_bc_projector_program
Device coupled vector BC projector kernels.
Definition prgm_lib.F90:33
type(c_ptr), bind(C), public gs_program
Device Gather-Scatter kernels.
Definition prgm_lib.F90:70
type(c_ptr), bind(C), public zero_dirichlet_program
Device zero dirichlet kernels.
Definition prgm_lib.F90:24
type(c_ptr), bind(C), public cfl_program
Device CFL kernels.
Definition prgm_lib.F90:61
type(c_ptr), bind(C), public dirichlet_program
Device Dirichlet kernels.
Definition prgm_lib.F90:18
type(c_ptr), bind(C), public compressible_ops_compute_entropy_program
Definition prgm_lib.F90:99
type(c_ptr), bind(C), public compressible_res_program
Device compressible residual kernels.
Definition prgm_lib.F90:94
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:128
type(c_ptr), bind(C), public deardorff_nut_program
Device Deardorff eddy viscosity kernels.
Definition prgm_lib.F90:152
type(c_ptr), bind(C), public find_rst_legendre_program
Device find rest kernels.
Definition prgm_lib.F90:134
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:88
type(c_ptr), bind(C), public rough_log_law_program
Device rough log-law wall model kernels.
Definition prgm_lib.F90:161
type(c_ptr), bind(C), public wale_nut_program
Device WALE eddy viscosity kernels.
Definition prgm_lib.F90:143
type(c_ptr), bind(C), public sigma_nut_program
Device Sigma eddy viscosity kernels.
Definition prgm_lib.F90:146
type(c_ptr), bind(C), public ale_kinematics_program
Device ALE mesh kinematics kernels.
Definition prgm_lib.F90:179
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:85
type(c_ptr), bind(C), public bicgstab_program
Device BiCGStab kernels.
Definition prgm_lib.F90:82
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:122
type(c_ptr), bind(C), public lpt_wall_collision_program
Device LPT wall collision kernels.
Definition prgm_lib.F90:176
type(c_ptr), bind(C), public pnpn_stress_res_program
Device pnpn residual kernels (stress formulation)
Definition prgm_lib.F90:91
type(c_ptr), bind(C), public spalding_program
Device Spalding wall model kernels.
Definition prgm_lib.F90:164
type(c_ptr), bind(C), public facet_normal_program
Device Facet normal kernels.
Definition prgm_lib.F90:37
type(c_ptr), bind(C), public fdm_program
Device fdm kernels.
Definition prgm_lib.F90:104
type(c_ptr), bind(C), public most_program
Device MOST wall model kernels.
Definition prgm_lib.F90:170
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:97
Utilities.
Definition utils.f90:35