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_compr_program = c_null_ptr
77
79 type(c_ptr), public, bind(c) :: ax_helm_full_program = c_null_ptr
80
82 type(c_ptr), public, bind(c) :: jacobi_program = c_null_ptr
83
85 type(c_ptr), public, bind(c) :: bicgstab_program = c_null_ptr
86
88 type(c_ptr), public, bind(c) :: rhs_maker_program = c_null_ptr
89
91 type(c_ptr), public, bind(c) :: pnpn_res_program = c_null_ptr
92
94 type(c_ptr), public, bind(c) :: pnpn_stress_res_program = c_null_ptr
95
97 type(c_ptr), public, bind(c) :: compressible_res_program = c_null_ptr
98
100 type(c_ptr), public, bind(c) :: &
102 type(c_ptr), public, bind(c) :: compressible_ops_compute_entropy_program = &
103 c_null_ptr
104 type(c_ptr), public, bind(c) :: compressible_ops_update_program = c_null_ptr
105
107 type(c_ptr), public, bind(c) :: fdm_program = c_null_ptr
108
110 type(c_ptr), public, bind(c) :: tensor_program = c_null_ptr
111
113 type(c_ptr), public, bind(c) :: schwarz_program = c_null_ptr
114
116 type(c_ptr), public, bind(c) :: dong_program = c_null_ptr
117
119 type(c_ptr), public, bind(c) :: cai_sagaut_model_ii_program = c_null_ptr
120
122 type(c_ptr), public, bind(c) :: coef_program = c_null_ptr
123
125 type(c_ptr), public, bind(c) :: scalar_residual_program = c_null_ptr
126
128 type(c_ptr), public, bind(c) :: lambda2_program = c_null_ptr
129
131 type(c_ptr), public, bind(c) :: compute_max_wave_speed_program = c_null_ptr
132
134 type(c_ptr), public, bind(c) :: mapping_program = c_null_ptr
135
137 type(c_ptr), public, bind(c) :: find_rst_legendre_program = c_null_ptr
138
140 type(c_ptr), public, bind(c) :: entropy_viscosity_program = c_null_ptr
141
143 type(c_ptr), public, bind(c) :: smagorinsky_nut_program = c_null_ptr
144
146 type(c_ptr), public, bind(c) :: wale_nut_program = c_null_ptr
147
149 type(c_ptr), public, bind(c) :: sigma_nut_program = c_null_ptr
150
152 type(c_ptr), public, bind(c) :: vreman_nut_program = c_null_ptr
153
155 type(c_ptr), public, bind(c) :: deardorff_nut_program = c_null_ptr
156
158 type(c_ptr), public, bind(c) :: dynamic_smagorinsky_nut_program = c_null_ptr
159
161 type(c_ptr), public, bind(c) :: wall_model_program = c_null_ptr
162
164 type(c_ptr), public, bind(c) :: rough_log_law_program = c_null_ptr
165
167 type(c_ptr), public, bind(c) :: spalding_program = c_null_ptr
168
170 type(c_ptr), public, bind(c) :: richardson_program = c_null_ptr
171
173 type(c_ptr), public, bind(c) :: most_program = c_null_ptr
174
176 type(c_ptr), public, bind(c) :: lpt_periodic_bc_program = c_null_ptr
177
179 type(c_ptr), public, bind(c) :: lpt_wall_collision_program = c_null_ptr
180
182 type(c_ptr), public, bind(c) :: ale_kinematics_program = c_null_ptr
183
185 type(c_ptr), public, bind(c) :: gradient_jump_penalty_program = c_null_ptr
186
188
189contains
190
192
193 if (c_associated(math_program)) then
195 call neko_error('Failed to release program')
196 end if
197 math_program = c_null_ptr
198 end if
199
200 if (c_associated(mathops_program)) then
202 call neko_error('Failed to release program')
203 end if
204 mathops_program = c_null_ptr
205 end if
206
207 if (c_associated(dirichlet_program)) then
209 call neko_error('Failed to release program')
210 end if
211 dirichlet_program = c_null_ptr
212 end if
213
214 if (c_associated(inflow_program)) then
216 call neko_error('Failed to release program')
217 end if
218 inflow_program = c_null_ptr
219 end if
220
221 if (c_associated(zero_dirichlet_program)) then
223 call neko_error('Failed to release program')
224 end if
225 zero_dirichlet_program = c_null_ptr
226 end if
227
228 if (c_associated(symmetry_program)) then
230 call neko_error('Failed to release program')
231 end if
232 symmetry_program = c_null_ptr
233 end if
234
235 if (c_associated(constrain_mixed_bc_program)) then
237 call neko_error('Failed to release program')
238 end if
239 constrain_mixed_bc_program = c_null_ptr
240 end if
241
242 if (c_associated(coupled_vector_bc_projector_program)) then
244 cl_success) then
245 call neko_error('Failed to release program')
246 end if
248 end if
249
250 if (c_associated(facet_normal_program)) then
252 call neko_error('Failed to release program')
253 end if
254 facet_normal_program = c_null_ptr
255 end if
256
257 if (c_associated(inhom_dirichlet_program)) then
259 call neko_error('Failed to release program')
260 end if
261 inhom_dirichlet_program = c_null_ptr
262 end if
263
264 if (c_associated(dudxyz_program)) then
266 call neko_error('Failed to release program')
267 end if
268 dudxyz_program = c_null_ptr
269 end if
270
271 if (c_associated(cdtp_program)) then
273 call neko_error('Failed to release program')
274 end if
275 cdtp_program = c_null_ptr
276 end if
277
278 if (c_associated(conv1_program)) then
280 call neko_error('Failed to release program')
281 end if
282 conv1_program = c_null_ptr
283 end if
284
285 if (c_associated(cfl_program)) then
287 call neko_error('Failed to release program')
288 end if
289 cfl_program = c_null_ptr
290 end if
291
292 if (c_associated(opgrad_program)) then
294 call neko_error('Failed to release program')
295 end if
296 opgrad_program = c_null_ptr
297 end if
298
299 if (c_associated(rotate_program)) then
301 call neko_error('Failed to release program')
302 end if
303 rotate_program = c_null_ptr
304 end if
305
306 if (c_associated(gs_program)) then
308 call neko_error('Failed to release program')
309 end if
310 gs_program = c_null_ptr
311 end if
312
313 if (c_associated(ax_helm_program)) then
315 call neko_error('Failed to release program')
316 end if
317 ax_helm_program = c_null_ptr
318 end if
319
320 if (c_associated(ax_helm_compr_program)) then
322 call neko_error('Failed to release program')
323 end if
324 ax_helm_compr_program = c_null_ptr
325 end if
326
327 if (c_associated(ax_helm_full_program)) then
329 call neko_error('Failed to release program')
330 end if
331 ax_helm_full_program = c_null_ptr
332 end if
333
334 if (c_associated(jacobi_program)) then
336 call neko_error('Failed to release program')
337 end if
338 jacobi_program = c_null_ptr
339 end if
340
341 if (c_associated(bicgstab_program)) then
343 call neko_error('Failed to release program')
344 end if
345 bicgstab_program = c_null_ptr
346 end if
347
348 if (c_associated(rhs_maker_program)) then
350 call neko_error('Failed to release program')
351 end if
352 rhs_maker_program = c_null_ptr
353 end if
354
355 if (c_associated(pnpn_res_program)) then
357 call neko_error('Failed to release program')
358 end if
359 pnpn_res_program = c_null_ptr
360 end if
361
362 if (c_associated(pnpn_stress_res_program)) then
364 call neko_error('Failed to release program')
365 end if
366 pnpn_stress_res_program = c_null_ptr
367 end if
368
369 if (c_associated(compressible_res_program)) then
371 call neko_error('Failed to release program')
372 end if
373 compressible_res_program = c_null_ptr
374 end if
375
378 .ne. cl_success) then
379 call neko_error('Failed to release program')
380 end if
382 end if
383
384 if (c_associated(compressible_ops_compute_entropy_program)) then
386 .ne. cl_success) then
387 call neko_error('Failed to release program')
388 end if
390 end if
391
392 if (c_associated(compressible_ops_update_program)) then
394 cl_success) then
395 call neko_error('Failed to release program')
396 end if
398 end if
399
400 if (c_associated(fdm_program)) then
402 call neko_error('Failed to release program')
403 end if
404 fdm_program = c_null_ptr
405 end if
406
407 if (c_associated(tensor_program)) then
409 call neko_error('Failed to release program')
410 end if
411 tensor_program = c_null_ptr
412 end if
413
414 if (c_associated(schwarz_program)) then
416 call neko_error('Failed to release program')
417 end if
418 schwarz_program = c_null_ptr
419 end if
420
421 if (c_associated(dong_program)) then
423 call neko_error('Failed to release program')
424 end if
425 dong_program = c_null_ptr
426 end if
427
428 if (c_associated(cai_sagaut_model_ii_program)) then
430 call neko_error('Failed to release program')
431 end if
432 cai_sagaut_model_ii_program = c_null_ptr
433 end if
434
435 if (c_associated(coef_program)) then
437 call neko_error('Failed to release program')
438 end if
439 coef_program = c_null_ptr
440 end if
441
442 if (c_associated(scalar_residual_program)) then
444 call neko_error('Failed to release program')
445 end if
446 scalar_residual_program = c_null_ptr
447 end if
448
449 if (c_associated(lambda2_program)) then
451 call neko_error('Failed to release program')
452 end if
453 lambda2_program = c_null_ptr
454 end if
455
456 if (c_associated(compute_max_wave_speed_program)) then
458 cl_success) then
459 call neko_error('Failed to release program')
460 end if
462 end if
463
464 if (c_associated(mapping_program)) then
466 call neko_error('Failed to release program')
467 end if
468 mapping_program = c_null_ptr
469 end if
470
471 if (c_associated(find_rst_legendre_program)) then
473 call neko_error('Failed to release program')
474 end if
475 find_rst_legendre_program = c_null_ptr
476 end if
477
478 if (c_associated(entropy_viscosity_program)) then
480 call neko_error('Failed to release program')
481 end if
482 entropy_viscosity_program = c_null_ptr
483 end if
484
485
486 if (c_associated(smagorinsky_nut_program)) then
488 call neko_error('Failed to release program')
489 end if
490 smagorinsky_nut_program = c_null_ptr
491 end if
492
493 if (c_associated(wale_nut_program)) then
495 call neko_error('Failed to release program')
496 end if
497 wale_nut_program = c_null_ptr
498 end if
499
500 if (c_associated(sigma_nut_program)) then
502 call neko_error('Failed to release program')
503 end if
504 sigma_nut_program = c_null_ptr
505 end if
506
507 if (c_associated(vreman_nut_program)) then
509 call neko_error('Failed to release program')
510 end if
511 vreman_nut_program = c_null_ptr
512 end if
513
514 if (c_associated(deardorff_nut_program)) then
516 call neko_error('Failed to release program')
517 end if
518 deardorff_nut_program = c_null_ptr
519 end if
520
521 if (c_associated(dynamic_smagorinsky_nut_program)) then
523 cl_success) then
524 call neko_error('Failed to release program')
525 end if
527 end if
528
529 if (c_associated(wall_model_program)) then
531 call neko_error('Failed to release program')
532 end if
533 wall_model_program = c_null_ptr
534 end if
535
536 if (c_associated(rough_log_law_program)) then
538 call neko_error('Failed to release program')
539 end if
540 rough_log_law_program = c_null_ptr
541 end if
542
543 if (c_associated(spalding_program)) then
545 call neko_error('Failed to release program')
546 end if
547 spalding_program = c_null_ptr
548 end if
549
550 if (c_associated(richardson_program)) then
552 call neko_error('Failed to release program')
553 end if
554 richardson_program = c_null_ptr
555 end if
556
557 if (c_associated(most_program)) then
559 call neko_error('Failed to release program')
560 end if
561 most_program = c_null_ptr
562 end if
563
564 if (c_associated(lpt_periodic_bc_program)) then
566 call neko_error('Failed to release program')
567 end if
568 lpt_periodic_bc_program = c_null_ptr
569 end if
570
571 if (c_associated(lpt_wall_collision_program)) then
573 call neko_error('Failed to release program')
574 end if
575 lpt_wall_collision_program = c_null_ptr
576 end if
577
578 if (c_associated(ale_kinematics_program)) then
580 call neko_error('Failed to release program')
581 end if
582 ale_kinematics_program = c_null_ptr
583 end if
584
585 if (c_associated(gradient_jump_penalty_program)) then
587 call neko_error('Failed to release program')
588 end if
590 end if
591 end subroutine opencl_prgm_lib_release
592
593#endif
594
595end 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:82
type(c_ptr), bind(C), public vreman_nut_program
Device Vreman eddy viscosity kernels.
Definition prgm_lib.F90:152
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:176
type(c_ptr), bind(C), public gradient_jump_penalty_program
Device gradient jump penalty kernels.
Definition prgm_lib.F90:185
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:104
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:116
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:79
type(c_ptr), bind(C), public dynamic_smagorinsky_nut_program
Device dynamic Smagorinsky kernels.
Definition prgm_lib.F90:158
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:122
type(c_ptr), bind(C), public lambda2_program
Device lambda2 kernels.
Definition prgm_lib.F90:128
type(c_ptr), bind(C), public tensor_program
Device tensor kernels.
Definition prgm_lib.F90:110
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:119
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:192
type(c_ptr), bind(C), public wall_model_program
Device wall model kernels.
Definition prgm_lib.F90:161
type(c_ptr), bind(C), public richardson_program
Device Richardson wall model kernels.
Definition prgm_lib.F90:170
type(c_ptr), bind(C), public smagorinsky_nut_program
Device Smagorinsky eddy viscosity kernels.
Definition prgm_lib.F90:143
type(c_ptr), bind(C), public mapping_program
Device filter kernels.
Definition prgm_lib.F90:134
type(c_ptr), bind(C), public schwarz_program
Device schwarz kernels.
Definition prgm_lib.F90:113
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:140
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:102
type(c_ptr), bind(C), public compressible_res_program
Device compressible residual kernels.
Definition prgm_lib.F90:97
type(c_ptr), bind(C), public compute_max_wave_speed_program
Device compute_max_wave_speed kernels.
Definition prgm_lib.F90:131
type(c_ptr), bind(C), public deardorff_nut_program
Device Deardorff eddy viscosity kernels.
Definition prgm_lib.F90:155
type(c_ptr), bind(C), public find_rst_legendre_program
Device find rest kernels.
Definition prgm_lib.F90:137
type(c_ptr), bind(C), public pnpn_res_program
Device pnpn residual kernels.
Definition prgm_lib.F90:91
type(c_ptr), bind(C), public rough_log_law_program
Device rough log-law wall model kernels.
Definition prgm_lib.F90:164
type(c_ptr), bind(C), public wale_nut_program
Device WALE eddy viscosity kernels.
Definition prgm_lib.F90:146
type(c_ptr), bind(C), public sigma_nut_program
Device Sigma eddy viscosity kernels.
Definition prgm_lib.F90:149
type(c_ptr), bind(C), public ale_kinematics_program
Device ALE mesh kinematics kernels.
Definition prgm_lib.F90:182
type(c_ptr), bind(C), public rhs_maker_program
Device rhs_maker kernels.
Definition prgm_lib.F90:88
type(c_ptr), bind(C), public bicgstab_program
Device BiCGStab kernels.
Definition prgm_lib.F90:85
type(c_ptr), bind(C), public scalar_residual_program
Device scalar residual kernels.
Definition prgm_lib.F90:125
type(c_ptr), bind(C), public lpt_wall_collision_program
Device LPT wall collision kernels.
Definition prgm_lib.F90:179
type(c_ptr), bind(C), public pnpn_stress_res_program
Device pnpn residual kernels (stress formulation)
Definition prgm_lib.F90:94
type(c_ptr), bind(C), public spalding_program
Device Spalding wall model kernels.
Definition prgm_lib.F90:167
type(c_ptr), bind(C), public facet_normal_program
Device Facet normal kernels.
Definition prgm_lib.F90:37
type(c_ptr), bind(C), public ax_helm_compr_program
Device Ax helm kernels on compressed geometric factors.
Definition prgm_lib.F90:76
type(c_ptr), bind(C), public fdm_program
Device fdm kernels.
Definition prgm_lib.F90:107
type(c_ptr), bind(C), public most_program
Device MOST wall model kernels.
Definition prgm_lib.F90:173
type(c_ptr), bind(C), public compressible_ops_compute_max_wave_speed_program
Device compressible ops kernels.
Definition prgm_lib.F90:100
Utilities.
Definition utils.f90:35