|
1 | | -program lhapdf_example |
2 | | - use iso_c_binding |
3 | | - use pineappl |
4 | | - |
| 1 | +module callbacks2 |
5 | 2 | implicit none |
6 | | - |
7 | | - integer, parameter :: dp = kind(0.0d0) |
8 | | - |
9 | | - type(pineappl_grid) :: grid |
10 | | - type(pineappl_lumi) :: lumi |
11 | | - type(pineappl_keyval) :: key_vals |
12 | | - |
13 | | - type(pineappl_xfx) :: xfx |
14 | | - type(pineappl_alphas) :: alphas |
15 | | - |
16 | | - integer, target :: alphas_flags(2) |
17 | | - |
18 | | - lumi = pineappl_lumi_new() |
19 | | - call pineappl_lumi_add(lumi, 3, [0, 0, 1, -1, 2, -2], [1.0_dp, 1.0_dp, 1.0_dp]) |
20 | | - |
21 | | - key_vals = pineappl_keyval_new() |
22 | | - grid = pineappl_grid_new(lumi, 1, [2, 0, 0, 0], 2, [0.0_dp, 1.0_dp, 2.0_dp], key_vals) |
23 | | - |
24 | | - call pineappl_grid_fill_all(grid, 0.5_dp, 0.5_dp, 100.0_dp, 0, 0.5_dp, [0.5_dp, 0.5_dp, 0.5_dp]) |
25 | | - call pineappl_grid_fill_all(grid, 0.5_dp, 0.5_dp, 100.0_dp, 0, 1.5_dp, [1.5_dp, 1.5_dp, 1.5_dp]) |
26 | | - |
27 | | - call setlhaparm("SILENT") |
28 | | - call lhapdf_initpdfset_byname(0, "NNPDF31_nlo_as_0118_luxqed") |
29 | | - call lhapdf_initpdfset_byname(1, "MSHT20nnlo_as118") |
30 | | - |
31 | | - ! calling pineappl_grid_convolve without any flags |
32 | | - xfx = pineappl_xfx(xfx_test1) |
33 | | - alphas = pineappl_alphas(alphas_test1) |
34 | | - write(*, *) "first pineappl_grid_convolve_with_one:" |
35 | | - write(*, *) pineappl_grid_convolve_with_one(grid, 2212, xfx, alphas, & |
36 | | - [.true.], [.true.], 1.0_dp, 1.0_dp) |
37 | | - |
38 | | - ! calling pineappl_grid_convolve with two integer flags that are used in xfx_test2 and alphas_test2 to determine the set and member indices |
39 | | - xfx = pineappl_xfx(xfx_test2) |
40 | | - alphas = pineappl_alphas(alphas_test2) |
41 | | - alphas_flags = [1, 0] |
42 | | - write(*, *) "second pineappl_grid_convolve_with_one:" |
43 | | - write(*, *) pineappl_grid_convolve_with_one(grid, 2212, xfx, alphas, & |
44 | | - [.true.], [.true.], 1.0_dp, 1.0_dp, c_loc(alphas_flags(1))) |
45 | | - |
46 | | - call pineappl_lumi_delete(lumi) |
47 | | - call pineappl_grid_delete(grid) |
48 | 3 | contains |
49 | | - |
50 | 4 | ! Passing a Fortran procedure to C needs the iso_c_binding |
51 | 5 | function xfx_test1(pdg_id, x, q2, state) bind(c) |
52 | 6 | use iso_c_binding |
@@ -111,5 +65,54 @@ function alphas_test2(q2, state) bind(c) |
111 | 65 |
|
112 | 66 | call lhapdf_alphasq2(flags(1), flags(2), q2, alphas_test2) |
113 | 67 | end function |
| 68 | +end module |
114 | 69 |
|
| 70 | +program lhapdf_example |
| 71 | + use iso_c_binding |
| 72 | + use pineappl |
| 73 | + use callbacks2 |
| 74 | + |
| 75 | + implicit none |
| 76 | + |
| 77 | + integer, parameter :: dp = kind(0.0d0) |
| 78 | + |
| 79 | + type(pineappl_grid) :: grid |
| 80 | + type(pineappl_lumi) :: lumi |
| 81 | + type(pineappl_keyval) :: key_vals |
| 82 | + |
| 83 | + type(pineappl_xfx) :: xfx |
| 84 | + type(pineappl_alphas) :: alphas |
| 85 | + |
| 86 | + integer, target :: alphas_flags(2) |
| 87 | + |
| 88 | + lumi = pineappl_lumi_new() |
| 89 | + call pineappl_lumi_add(lumi, 3, [0, 0, 1, -1, 2, -2], [1.0_dp, 1.0_dp, 1.0_dp]) |
| 90 | + |
| 91 | + key_vals = pineappl_keyval_new() |
| 92 | + grid = pineappl_grid_new(lumi, 1, [2, 0, 0, 0], 2, [0.0_dp, 1.0_dp, 2.0_dp], key_vals) |
| 93 | + |
| 94 | + call pineappl_grid_fill_all(grid, 0.5_dp, 0.5_dp, 100.0_dp, 0, 0.5_dp, [0.5_dp, 0.5_dp, 0.5_dp]) |
| 95 | + call pineappl_grid_fill_all(grid, 0.5_dp, 0.5_dp, 100.0_dp, 0, 1.5_dp, [1.5_dp, 1.5_dp, 1.5_dp]) |
| 96 | + |
| 97 | + call setlhaparm("SILENT") |
| 98 | + call lhapdf_initpdfset_byname(0, "NNPDF31_nlo_as_0118_luxqed") |
| 99 | + call lhapdf_initpdfset_byname(1, "MSHT20nnlo_as118") |
| 100 | + |
| 101 | + ! calling pineappl_grid_convolve without any flags |
| 102 | + xfx = pineappl_xfx(xfx_test1) |
| 103 | + alphas = pineappl_alphas(alphas_test1) |
| 104 | + write(*, *) "first pineappl_grid_convolve_with_one:" |
| 105 | + write(*, *) pineappl_grid_convolve_with_one(grid, 2212, xfx, alphas, & |
| 106 | + [.true.], [.true.], 1.0_dp, 1.0_dp) |
| 107 | + |
| 108 | + ! calling pineappl_grid_convolve with two integer flags that are used in xfx_test2 and alphas_test2 to determine the set and member indices |
| 109 | + xfx = pineappl_xfx(xfx_test2) |
| 110 | + alphas = pineappl_alphas(alphas_test2) |
| 111 | + alphas_flags = [1, 0] |
| 112 | + write(*, *) "second pineappl_grid_convolve_with_one:" |
| 113 | + write(*, *) pineappl_grid_convolve_with_one(grid, 2212, xfx, alphas, & |
| 114 | + [.true.], [.true.], 1.0_dp, 1.0_dp, c_loc(alphas_flags(1))) |
| 115 | + |
| 116 | + call pineappl_lumi_delete(lumi) |
| 117 | + call pineappl_grid_delete(grid) |
115 | 118 | end program lhapdf_example |
0 commit comments