|
Go to the documentation of this file. 1! ====================================================================
2! This file is part of FlexibleSUSY.
4! FlexibleSUSY is free software: you can redistribute it and/or modify
5! it under the terms of the GNU General Public License as published
6! by the Free Software Foundation, either version 3 of the License,
7! or (at your option) any later version.
9! FlexibleSUSY is distributed in the hope that it will be useful, but
10! WITHOUT ANY WARRANTY; without even the implied warranty of
11! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12! General Public License for more details.
14! You should have received a copy of the GNU General Public License
15! along with FlexibleSUSY. If not, see
17! ====================================================================
19#define DUMMY(a) a ## _dummy
21#define IMPL(a) STR(a ## _impl)
23#define two_point(NAME,N1,N2) \
24@subroutine DUMMY(NAME)(res, p10, m02, m12) bind(C, name=IMPL(NAME))\
25@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10 \
26@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12 \
27@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
28@ complex(REAL64), allocatable :: Bcoeff(:,:), Bcoeffuv(:,:) \
30@ allocate(Bcoeff(0:1, 0:2)) \
31@ allocate(Bcoeffuv(0:1, 0:2)) \
32@ call B_cll(Bcoeff, Bcoeffuv, p10, m02, m12, 2) \
34@ res = Bcoeff(N1,N2) \
36@ deallocate(Bcoeff, Bcoeffuv) \
39#define three_point(NAME,N1,N2,N3) \
40@subroutine DUMMY(NAME)(res, p10, p21, p20, m02, m12, m22) bind(C, name=IMPL(NAME)) \
41@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p20 \
42@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22 \
43@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
44@ complex(REAL64), allocatable :: Ccoeff(:,:,:), Ccoeffuv(:,:,:) \
46@ allocate(Ccoeff(0:1, 0:2, 0:2)) \
47@ allocate(Ccoeffuv(0:1, 0:2, 0:2)) \
48@ call C_cll(Ccoeff, Ccoeffuv, p10, p21, p20, m02, m12, m22, 2) \
50@ res = Ccoeff(N1,N2,N3) \
52@ deallocate(Ccoeff, Ccoeffuv) \
55#define four_point(NAME,N1,N2,N3,N4) \
56@subroutine DUMMY(NAME)(res,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32) bind(C, name=IMPL(NAME)) \
57@ complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p32, p30, p20, p31 \
58@ complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22, m32 \
59@ complex(C_DOUBLE_COMPLEX), intent(out) :: res \
60@ complex(REAL64), allocatable :: Dcoeff(:,:,:,:), Dcoeffuv(:,:,:,:) \
62@ allocate(Dcoeff(0:1, 0:2, 0:2, 0:2)) \
63@ allocate(Dcoeffuv(0:1, 0:2, 0:2, 0:2)) \
64@ call D_cll(Dcoeff,Dcoeffuv,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,2) \
66@ res = Dcoeff(N1,N2,N3,N4) \
68@ deallocate(Dcoeff, Dcoeffuv) \
71module LibCollier_wrapper
73 use, intrinsic :: iso_c_binding
74 use, intrinsic :: iso_fortran_env
78 subroutine initialize_collier_dummy() bind(C, name='initialize_collier_impl')
80 call SetDeltaIR_cll(0d0, 0d0)
83 subroutine set_mu2_uv_dummy(scl2) bind(C, name='set_mu2_uv_impl')
84 real(C_DOUBLE), intent(in) :: scl2
86 call SetMuUV2_cll(scl2)
87 call SetMuIR2_cll(scl2)
90 subroutine A0_dummy(res, m02) bind(C, name='A0_impl')
91 complex(C_DOUBLE_COMPLEX), intent(in) :: m02
92 complex(C_DOUBLE_COMPLEX), intent(out) :: res
97 subroutine B0_dummy(res, p10, m02, m12) bind(C, name='B0_impl')
98 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
99 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
100 complex(C_DOUBLE_COMPLEX), intent(out) :: res
102 call B0_cll(res, p10, m02, m12)
108 subroutine DB0_dummy(res, p10, m02, m12) bind(C, name='DB0_impl')
109 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
110 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
111 complex(C_DOUBLE_COMPLEX), intent(out) :: res
113 call DB0_cll(res, p10, m02, m12)
116 subroutine DB1_dummy(res, p10, m02, m12) bind(C, name='DB1_impl')
117 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
118 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
119 complex(C_DOUBLE_COMPLEX), intent(out) :: res
121 call DB1_cll(res, p10, m02, m12)
124 subroutine DB00_dummy(res, p10, m02, m12) bind(C, name='DB00_impl')
125 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
126 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
127 complex(C_DOUBLE_COMPLEX), intent(out) :: res
128 complex(C_DOUBLE_COMPLEX) :: resUV
130 call DB00_cll(res, resUV, p10, m02, m12)
133 three_point(C0,0,0,0)
134 three_point(C00,1,0,0)
135 three_point(C1,0,1,0)
136 three_point(C11,0,2,0)
137 three_point(C12,0,1,1)
138 three_point(C2,0,0,1)
139 three_point(C22,0,0,2)
141 four_point(D0,0,0,0,0)
142 four_point(D00,1,0,0,0)
143 four_point(D1,0,1,0,0)
144 four_point(D11,0,2,0,0)
145 four_point(D12,0,1,1,0)
146 four_point(D13,0,1,0,1)
147 four_point(D2,0,0,1,0)
148 four_point(D22,0,0,2,0)
149 four_point(D23,0,0,1,1)
150 four_point(D3,0,0,0,1)
151 four_point(D33,0,0,0,2)
153 subroutine get_T1_dummy(a,m02) bind(C, name='get_A_impl')
154 complex(C_DOUBLE_COMPLEX), intent(in) :: m02
155 complex(C_DOUBLE_COMPLEX), intent(out), dimension(1) :: a
156 complex(REAL64), allocatable :: Acoeff(:), Acoeffuv(:)
158 allocate(Acoeff(0:0))
159 allocate(Acoeffuv(0:0))
161 call A_cll(Acoeff,Acoeffuv,m02,0)
164 deallocate(Acoeff,Acoeffuv)
167 subroutine get_T2_dummy(b,p10,m02,m12) bind(C, name='get_B_impl')
168 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
169 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
170 complex(C_DOUBLE_COMPLEX), intent(out), dimension(3) :: b
171 complex(REAL64), allocatable :: Bcoeff(:,:), Bcoeffuv(:,:)
173 allocate(Bcoeff(0:1,0:2))
174 allocate(Bcoeffuv(0:1,0:2))
175 call B_cll(Bcoeff, Bcoeffuv, p10, m02, m12, 2)
180 deallocate(Bcoeff,Bcoeffuv)
183 subroutine get_DT2_dummy(b,p10,m02,m12) bind(C, name='get_DB_impl')
184 complex(C_DOUBLE_COMPLEX), intent(in) :: p10
185 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12
186 complex(C_DOUBLE_COMPLEX), intent(out), dimension(3) :: b
187 complex(REAL64), allocatable :: DBcoeff(:,:), DBcoeffuv(:,:)
189 allocate(DBcoeff(0:1,0:2))
190 allocate(DBcoeffuv(0:1,0:2))
191 call DB_cll(DBcoeff, DBcoeffuv, p10, m02, m12, 2)
196 deallocate(DBcoeff,DBcoeffuv)
199 subroutine get_T3_dummy(c,p10,p21,p20,m02,m12,m22) bind(C, name='get_C_impl')
200 complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p20
201 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22
202 complex(C_DOUBLE_COMPLEX), intent(out), dimension(7) :: c
203 complex(REAL64), allocatable :: Ccoeff(:,:,:), Ccoeffuv(:,:,:)
205 allocate(Ccoeff(0:1,0:2,0:2))
206 allocate(Ccoeffuv(0:1,0:2,0:2))
207 call C_cll(Ccoeff, Ccoeffuv, p10, p21, p20, m02, m12, m22, 2)
216 deallocate(Ccoeff,Ccoeffuv)
219 subroutine get_T4_dummy(d,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32) bind(C, name='get_D_impl')
220 complex(C_DOUBLE_COMPLEX), intent(in) :: p10, p21, p32, p30, p20, p31
221 complex(C_DOUBLE_COMPLEX), intent(in) :: m02, m12, m22, m32
222 complex(C_DOUBLE_COMPLEX), intent(out), dimension(11) :: d
223 complex(REAL64), allocatable :: TNcoeff(:),TNcoeffuv(:)
225 allocate(TNcoeff(11))
226 allocate(TNcoeffuv(11))
228 call TN_cll(TNcoeff,TNcoeffuv,[ p10,p21,p32,p30,p20,p31 ],[ m02,m12,m22,m32 ],4,2)
233 deallocate(TNcoeff,TNcoeffuv)
either version of the License
without even the implied warranty of !MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU !General Public License for more details !You should have received a copy of the GNU General Public License !along with FlexibleSUSY If not
either version of the but !WITHOUT ANY WARRANTY
If[spec=!=$Failed, Pole[M[hh]]/.(HSSUSY/. spec), 0]
|