Merge lp:~maddevelopers/mg5amcnlo/lo_small_width into lp:~mg5core1/mg5amcnlo/2.6.4
- lo_small_width
- Merge into 2.6.4
Proposed by
Olivier Mattelaer
Status: | Merged |
---|---|
Merged at revision: | 313 |
Proposed branch: | lp:~maddevelopers/mg5amcnlo/lo_small_width |
Merge into: | lp:~mg5core1/mg5amcnlo/2.6.4 |
Diff against target: |
4339 lines (+323/-3266) 32 files modified
MadSpin/interface_madspin.py (+6/-2) Template/LO/Source/run.inc (+4/-1) Template/LO/Source/transpole.f (+20/-1) Template/LO/SubProcesses/myamp.f (+39/-112) UpdateNotes.txt (+8/-2) madgraph/core/helas_objects.py (+7/-0) madgraph/interface/common_run_interface.py (+37/-1) madgraph/iolibs/export_v4.py (+54/-4) madgraph/iolibs/helas_call_writers.py (+23/-0) madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc (+1/-0) madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+18/-0) madgraph/iolibs/template_files/matrix_madevent_v4.inc (+16/-1) madgraph/iolibs/template_files/matrix_madweight_group_v4.inc (+1/-0) madgraph/various/banner.py (+1/-0) madgraph/various/lhe_parser.py (+13/-8) tests/acceptance_tests/test_cmd_madloop.py (+2/-2) tests/acceptance_tests/test_export_fks.py (+1/-1) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f (+0/-748) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f (+3/-11) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f (+1/-1) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f (+0/-748) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f (+3/-11) tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f (+1/-1) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f (+29/-6) tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f (+20/-3) tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f (+0/-823) tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f (+3/-11) tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f (+1/-1) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f (+0/-755) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f (+3/-11) tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f (+1/-1) tests/unit_tests/iolibs/test_export_v4.py (+7/-0) |
To merge this branch: | bzr merge lp:~maddevelopers/mg5amcnlo/lo_small_width |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Valentin Hirschi | Pending | ||
Review via email: mp+357867@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
- 311. By olivier-mattelaer
-
better writing of matrix.f to avoid to recompute the fake width systematically
- 312. By olivier-mattelaer
-
change small_width default value + Updates notes
- 313. By olivier-mattelaer
-
merge with 2.6.4
- 314. By olivier-mattelaer
-
fixing an issue with multiple particle with 0 width
- 315. By olivier-mattelaer
-
fixing tests
- 316. By olivier-mattelaer
-
merging with latest 2.6.4
- 317. By olivier-mattelaer
-
secure check in auto/scan case
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'MadSpin/interface_madspin.py' | |||
2 | --- MadSpin/interface_madspin.py 2018-10-31 10:07:53 +0000 | |||
3 | +++ MadSpin/interface_madspin.py 2018-11-09 08:24:41 +0000 | |||
4 | @@ -1067,8 +1067,13 @@ | |||
5 | 1067 | if len(hepmc_output) == 0: | 1067 | if len(hepmc_output) == 0: |
6 | 1068 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) | 1068 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) |
7 | 1069 | hepmc_output[0].color2 = 0 | 1069 | hepmc_output[0].color2 = 0 |
8 | 1070 | hepmc_output[0].status = -1 | ||
9 | 1071 | hepmc_output.nexternal+=1 | ||
10 | 1070 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) | 1072 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) |
11 | 1073 | decayed_particle.mother1 = hepmc_output[0] | ||
12 | 1074 | decayed_particle.mother2 = hepmc_output[0] | ||
13 | 1071 | hepmc_output.append(decayed_particle) | 1075 | hepmc_output.append(decayed_particle) |
14 | 1076 | hepmc_output.nexternal+=1 | ||
15 | 1072 | decayed_particle.add_decay(decay) | 1077 | decayed_particle.add_decay(decay) |
16 | 1073 | # change the weight associate to the event | 1078 | # change the weight associate to the event |
17 | 1074 | if self.options['new_wgt'] == 'cross-section': | 1079 | if self.options['new_wgt'] == 'cross-section': |
18 | @@ -1086,7 +1091,6 @@ | |||
19 | 1086 | else: | 1091 | else: |
20 | 1087 | hepmc_output.wgt = event.wgt | 1092 | hepmc_output.wgt = event.wgt |
21 | 1088 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal | 1093 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal |
22 | 1089 | hepmc_output.assign_mother() | ||
23 | 1090 | output_lhe.write(str(hepmc_output)) | 1094 | output_lhe.write(str(hepmc_output)) |
24 | 1091 | else: | 1095 | else: |
25 | 1092 | if counter==0: | 1096 | if counter==0: |
26 | @@ -1436,7 +1440,7 @@ | |||
27 | 1436 | if self.options['fixed_order']: | 1440 | if self.options['fixed_order']: |
28 | 1437 | production, counterevt= production[0], production[1:] | 1441 | production, counterevt= production[0], production[1:] |
29 | 1438 | if curr_event and curr_event % 1000 == 0 and float(str(curr_event)[1:]) ==0: | 1442 | if curr_event and curr_event % 1000 == 0 and float(str(curr_event)[1:]) ==0: |
31 | 1439 | print "decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start) | 1443 | logger.info("decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start)) |
32 | 1440 | while 1: | 1444 | while 1: |
33 | 1441 | nb_try +=1 | 1445 | nb_try +=1 |
34 | 1442 | decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event) | 1446 | decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event) |
35 | 1443 | 1447 | ||
36 | === modified file 'Template/LO/Source/run.inc' | |||
37 | --- Template/LO/Source/run.inc 2018-02-01 22:30:56 +0000 | |||
38 | +++ Template/LO/Source/run.inc 2018-11-09 08:24:41 +0000 | |||
39 | @@ -91,4 +91,7 @@ | |||
40 | 91 | double precision mxxmin4pdg(0:25) | 91 | double precision mxxmin4pdg(0:25) |
41 | 92 | logical mxxpart_antipart(1:25) | 92 | logical mxxpart_antipart(1:25) |
42 | 93 | common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg, | 93 | common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg, |
43 | 94 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
44 | 95 | \ No newline at end of file | 94 | \ No newline at end of file |
45 | 95 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
46 | 96 | |||
47 | 97 | double precision small_width_treatment | ||
48 | 98 | common/narrow_width/small_width_treatment | ||
49 | 96 | \ No newline at end of file | 99 | \ No newline at end of file |
50 | 97 | 100 | ||
51 | === modified file 'Template/LO/Source/transpole.f' | |||
52 | --- Template/LO/Source/transpole.f 2016-06-15 22:46:42 +0000 | |||
53 | +++ Template/LO/Source/transpole.f 2018-11-09 08:24:41 +0000 | |||
54 | @@ -28,13 +28,24 @@ | |||
55 | 28 | double precision z,zmin,zmax,xmin,xmax,ez | 28 | double precision z,zmin,zmax,xmin,xmax,ez |
56 | 29 | double precision pole1,width1,x,xc | 29 | double precision pole1,width1,x,xc |
57 | 30 | double precision a,b | 30 | double precision a,b |
58 | 31 | c | ||
59 | 32 | c small width treatment | ||
60 | 33 | c | ||
61 | 34 | double precision small_width_treatment | ||
62 | 35 | common/narrow_width/small_width_treatment | ||
63 | 31 | c----- | 36 | c----- |
64 | 32 | c Begin Code | 37 | c Begin Code |
65 | 33 | c----- | 38 | c----- |
66 | 34 | pole=pole1 | 39 | pole=pole1 |
67 | 35 | width=width1 | 40 | width=width1 |
68 | 41 | |||
69 | 36 | x = x1 | 42 | x = x1 |
70 | 37 | if (pole .gt. 0d0) then | 43 | if (pole .gt. 0d0) then |
71 | 44 | if (width.lt.pole*small_width_treatment)then | ||
72 | 45 | width = pole * small_width_treatment | ||
73 | 46 | jac = jac * width/width1 | ||
74 | 47 | endif | ||
75 | 48 | |||
76 | 38 | zmin = atan((-pole)/width)/width | 49 | zmin = atan((-pole)/width)/width |
77 | 39 | zmax = atan((1d0-pole)/width)/width | 50 | zmax = atan((1d0-pole)/width)/width |
78 | 40 | if (x .gt. del .and. x .lt. 1d0-del) then | 51 | if (x .gt. del .and. x .lt. 1d0-del) then |
79 | @@ -175,7 +186,11 @@ | |||
80 | 175 | c | 186 | c |
81 | 176 | double precision pole1,width1,y1,jac | 187 | double precision pole1,width1,y1,jac |
82 | 177 | real*8 x | 188 | real*8 x |
84 | 178 | 189 | c | |
85 | 190 | c small width treatment | ||
86 | 191 | c | ||
87 | 192 | double precision small_width_treatment | ||
88 | 193 | common/narrow_width/small_width_treatment | ||
89 | 179 | c | 194 | c |
90 | 180 | c Local | 195 | c Local |
91 | 181 | c | 196 | c |
92 | @@ -191,6 +206,10 @@ | |||
93 | 191 | width=width1 | 206 | width=width1 |
94 | 192 | y = y1 | 207 | y = y1 |
95 | 193 | if (pole .gt. 0d0) then !BW | 208 | if (pole .gt. 0d0) then !BW |
96 | 209 | if (width.lt.pole*small_width_treatment)then | ||
97 | 210 | width = pole * small_width_treatment | ||
98 | 211 | jac = jac * width/width1 | ||
99 | 212 | endif | ||
100 | 194 | zmin = atan((-pole)/width)/width | 213 | zmin = atan((-pole)/width)/width |
101 | 195 | zmax = atan((1d0-pole)/width)/width | 214 | zmax = atan((1d0-pole)/width)/width |
102 | 196 | z = atan((y-pole)/width)/width | 215 | z = atan((y-pole)/width)/width |
103 | 197 | 216 | ||
104 | === modified file 'Template/LO/SubProcesses/myamp.f' | |||
105 | --- Template/LO/SubProcesses/myamp.f 2016-12-17 16:26:56 +0000 | |||
106 | +++ Template/LO/SubProcesses/myamp.f 2018-11-09 08:24:41 +0000 | |||
107 | @@ -1,91 +1,3 @@ | |||
108 | 1 | double precision function testamp(p) | ||
109 | 2 | c***************************************************************************** | ||
110 | 3 | c Approximates matrix element by propagators | ||
111 | 4 | c***************************************************************************** | ||
112 | 5 | implicit none | ||
113 | 6 | c | ||
114 | 7 | c Constants | ||
115 | 8 | c | ||
116 | 9 | include 'genps.inc' | ||
117 | 10 | include 'maxconfigs.inc' | ||
118 | 11 | include 'nexternal.inc' | ||
119 | 12 | double precision zero | ||
120 | 13 | parameter (zero = 0d0) | ||
121 | 14 | c | ||
122 | 15 | c Arguments | ||
123 | 16 | c | ||
124 | 17 | double precision p(0:3,nexternal) | ||
125 | 18 | c integer iconfig | ||
126 | 19 | c | ||
127 | 20 | c Local | ||
128 | 21 | c | ||
129 | 22 | double precision xp(0:3,-nexternal:nexternal) | ||
130 | 23 | double precision mpole(-nexternal:0),shat,tsgn | ||
131 | 24 | integer i,j,iconfig | ||
132 | 25 | |||
133 | 26 | double precision prmass(-nexternal:0,lmaxconfigs) | ||
134 | 27 | double precision prwidth(-nexternal:0,lmaxconfigs) | ||
135 | 28 | integer pow(-nexternal:0,lmaxconfigs) | ||
136 | 29 | logical first_time | ||
137 | 30 | c | ||
138 | 31 | c Global | ||
139 | 32 | c | ||
140 | 33 | integer iforest(2,-max_branch:-1,lmaxconfigs) | ||
141 | 34 | common/to_forest/ iforest | ||
142 | 35 | integer mapconfig(0:lmaxconfigs), this_config | ||
143 | 36 | common/to_mconfigs/mapconfig, this_config | ||
144 | 37 | |||
145 | 38 | include 'coupl.inc' | ||
146 | 39 | c | ||
147 | 40 | c External | ||
148 | 41 | c | ||
149 | 42 | double precision dot | ||
150 | 43 | |||
151 | 44 | save prmass,prwidth,pow | ||
152 | 45 | data first_time /.true./ | ||
153 | 46 | c----- | ||
154 | 47 | c Begin Code | ||
155 | 48 | c----- | ||
156 | 49 | iconfig = this_config | ||
157 | 50 | if (first_time) then | ||
158 | 51 | c include 'props.inc' | ||
159 | 52 | first_time=.false. | ||
160 | 53 | endif | ||
161 | 54 | |||
162 | 55 | do i=1,nexternal | ||
163 | 56 | mpole(-i)=0d0 | ||
164 | 57 | do j=0,3 | ||
165 | 58 | xp(j,i)=p(j,i) | ||
166 | 59 | enddo | ||
167 | 60 | enddo | ||
168 | 61 | c mpole(-3) = 174**2 | ||
169 | 62 | c shat = dot(p(0,1),p(0,2))/(1800)**2 | ||
170 | 63 | shat = dot(p(0,1),p(0,2))/(10)**2 | ||
171 | 64 | c shat = 1d0 | ||
172 | 65 | testamp = 1d0 | ||
173 | 66 | tsgn = +1d0 | ||
174 | 67 | do i=-1,-(nexternal-3),-1 !Find all the propagotors | ||
175 | 68 | if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0 | ||
176 | 69 | do j=0,3 | ||
177 | 70 | xp(j,i) = xp(j,iforest(1,i,iconfig)) | ||
178 | 71 | $ +tsgn*xp(j,iforest(2,i,iconfig)) | ||
179 | 72 | enddo | ||
180 | 73 | if (prwidth(i,iconfig) .ne. 0d0 .and. .false.) then | ||
181 | 74 | testamp=testamp/((dot(xp(0,i),xp(0,i)) | ||
182 | 75 | $ -prmass(i,iconfig)**2)**2 | ||
183 | 76 | $ -(prmass(i,iconfig)*prwidth(i,iconfig))**2) | ||
184 | 77 | else | ||
185 | 78 | testamp = testamp/((dot(xp(0,i),xp(0,i)) - | ||
186 | 79 | $ prmass(i,iconfig)**2) | ||
187 | 80 | $ **(pow(i,iconfig))) | ||
188 | 81 | endif | ||
189 | 82 | testamp=testamp*shat**(pow(i,iconfig)) | ||
190 | 83 | c write(*,*) i,iconfig,pow(i,iconfig),prmass(i,iconfig) | ||
191 | 84 | enddo | ||
192 | 85 | c testamp = 1d0/dot(xp(0,-1),xp(0,-1)) | ||
193 | 86 | testamp=abs(testamp) | ||
194 | 87 | c testamp = 1d0 | ||
195 | 88 | end | ||
196 | 89 | 1 | ||
197 | 90 | logical function cut_bw(p) | 2 | logical function cut_bw(p) |
198 | 91 | c***************************************************************************** | 3 | c***************************************************************************** |
199 | @@ -114,6 +26,7 @@ | |||
200 | 114 | 26 | ||
201 | 115 | double precision prmass(-nexternal:0,lmaxconfigs) | 27 | double precision prmass(-nexternal:0,lmaxconfigs) |
202 | 116 | double precision prwidth(-nexternal:0,lmaxconfigs) | 28 | double precision prwidth(-nexternal:0,lmaxconfigs) |
203 | 29 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
204 | 117 | integer pow(-nexternal:0,lmaxconfigs) | 30 | integer pow(-nexternal:0,lmaxconfigs) |
205 | 118 | logical first_time, onshell | 31 | logical first_time, onshell |
206 | 119 | double precision xmass | 32 | double precision xmass |
207 | @@ -152,13 +65,14 @@ | |||
208 | 152 | c | 65 | c |
209 | 153 | double precision dot | 66 | double precision dot |
210 | 154 | 67 | ||
212 | 155 | save prmass,prwidth,pow | 68 | save prmass,prwidth,pow,prwidth_tmp |
213 | 156 | data first_time /.true./ | 69 | data first_time /.true./ |
214 | 157 | c----- | 70 | c----- |
215 | 158 | c Begin Code | 71 | c Begin Code |
216 | 159 | c----- | 72 | c----- |
217 | 160 | cut_bw = .false. !Default is we passed the cut | 73 | cut_bw = .false. !Default is we passed the cut |
218 | 161 | iconfig = this_config | 74 | iconfig = this_config |
219 | 75 | |||
220 | 162 | if (first_time) then | 76 | if (first_time) then |
221 | 163 | include 'props.inc' | 77 | include 'props.inc' |
222 | 164 | nbw = 0 | 78 | nbw = 0 |
223 | @@ -209,10 +123,12 @@ | |||
224 | 209 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) | 123 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) |
225 | 210 | c | 124 | c |
226 | 211 | c Here we set if the BW is "on-shell" for LesHouches | 125 | c Here we set if the BW is "on-shell" for LesHouches |
228 | 212 | c | 126 | c |
229 | 127 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
230 | 128 | |||
231 | 213 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 129 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
234 | 214 | $ bwcutoff*prwidth(i,iconfig).and. | 130 | $ bwcutoff*prwidth_tmp(i,iconfig).and. |
235 | 215 | $ (prwidth(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. | 131 | $ (prwidth_tmp(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. |
236 | 216 | $ gForceBW(i,iconfig).eq.1)) | 132 | $ gForceBW(i,iconfig).eq.1)) |
237 | 217 | if(onshell)then | 133 | if(onshell)then |
238 | 218 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) | 134 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) |
239 | @@ -264,10 +180,10 @@ | |||
240 | 264 | c For decay-chain syntax use BWcutoff here too (22/12/14) | 180 | c For decay-chain syntax use BWcutoff here too (22/12/14) |
241 | 265 | if (gForceBW(i, iconfig).eq.1) then | 181 | if (gForceBW(i, iconfig).eq.1) then |
242 | 266 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 182 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
244 | 267 | $ bwcutoff*prwidth(i,iconfig)) | 183 | $ bwcutoff*prwidth_tmp(i,iconfig)) |
245 | 268 | else | 184 | else |
246 | 269 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 185 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
248 | 270 | $ 5d0*prwidth(i,iconfig)) | 186 | $ 5d0*prwidth_tmp(i,iconfig)) |
249 | 271 | endif | 187 | endif |
250 | 272 | 188 | ||
251 | 273 | if (onshell .and. (lbw(nbw).eq. 2) .or. | 189 | if (onshell .and. (lbw(nbw).eq. 2) .or. |
252 | @@ -313,6 +229,7 @@ | |||
253 | 313 | 229 | ||
254 | 314 | double precision prmass(-nexternal:0,lmaxconfigs) | 230 | double precision prmass(-nexternal:0,lmaxconfigs) |
255 | 315 | double precision prwidth(-nexternal:0,lmaxconfigs) | 231 | double precision prwidth(-nexternal:0,lmaxconfigs) |
256 | 232 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
257 | 316 | integer pow(-nexternal:0,lmaxconfigs) | 233 | integer pow(-nexternal:0,lmaxconfigs) |
258 | 317 | 234 | ||
259 | 318 | integer idup(nexternal,maxproc,maxsproc) | 235 | integer idup(nexternal,maxproc,maxsproc) |
260 | @@ -382,11 +299,21 @@ | |||
261 | 382 | 299 | ||
262 | 383 | c----- | 300 | c----- |
263 | 384 | c Begin Code | 301 | c Begin Code |
265 | 385 | c----- | 302 | c----- |
266 | 303 | iconfig = this_config | ||
267 | 304 | c needs to be initialise to avoid segfault | ||
268 | 305 | do i = -nexternal,-1 | ||
269 | 306 | prwidth(i,iconfig) = 0 | ||
270 | 307 | prmass(i,iconfig) =0 | ||
271 | 308 | enddo | ||
272 | 386 | include 'props.inc' | 309 | include 'props.inc' |
273 | 387 | c etmin = 10 | 310 | c etmin = 10 |
274 | 388 | nt = 0 | 311 | nt = 0 |
276 | 389 | iconfig = this_config | 312 | do i = -nexternal,-1 |
277 | 313 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
278 | 314 | enddo | ||
279 | 315 | |||
280 | 316 | |||
281 | 390 | mtot = 0d0 | 317 | mtot = 0d0 |
282 | 391 | etot = 0d0 !Total energy needed | 318 | etot = 0d0 !Total energy needed |
283 | 392 | spmass = 0d0 !Keep track of BW masses for shat | 319 | spmass = 0d0 !Keep track of BW masses for shat |
284 | @@ -423,7 +350,7 @@ | |||
285 | 423 | c Look for identical particles to map radiation processes | 350 | c Look for identical particles to map radiation processes |
286 | 424 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), | 351 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), |
287 | 425 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), | 352 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), |
289 | 426 | $ prwidth(-nexternal,iconfig)) | 353 | $ prwidth_tmp(-nexternal,iconfig)) |
290 | 427 | 354 | ||
291 | 428 | c Start loop over propagators | 355 | c Start loop over propagators |
292 | 429 | do i=-1,-(nexternal-3),-1 | 356 | do i=-1,-(nexternal-3),-1 |
293 | @@ -446,15 +373,15 @@ | |||
294 | 446 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) | 373 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) |
295 | 447 | endif | 374 | endif |
296 | 448 | c write(*,*) 'iconfig,i',iconfig,i | 375 | c write(*,*) 'iconfig,i',iconfig,i |
299 | 449 | c write(*,*) prwidth(i,iconfig),prmass(i,iconfig) | 376 | c write(*,*) prwidth_tmp(i,iconfig),prmass(i,iconfig) |
300 | 450 | if (prwidth(i,iconfig) .gt. 0 ) then | 377 | if (prwidth_tmp(i,iconfig) .gt. 0 ) then |
301 | 451 | nbw=nbw+1 | 378 | nbw=nbw+1 |
302 | 452 | c JA 6/8/2011 Set xe(i) for resonances | 379 | c JA 6/8/2011 Set xe(i) for resonances |
303 | 453 | if (gforcebw(i,iconfig).eq.1) then | 380 | if (gforcebw(i,iconfig).eq.1) then |
305 | 454 | xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth(i,iconfig)) | 381 | xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth_tmp(i,iconfig)) |
306 | 455 | bwcut_for_PS(i) = bwcutoff | 382 | bwcut_for_PS(i) = bwcutoff |
307 | 456 | else if (lbw(nbw).eq.1) then | 383 | else if (lbw(nbw).eq.1) then |
309 | 457 | xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth(i,iconfig)) | 384 | xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth_tmp(i,iconfig)) |
310 | 458 | bwcut_for_PS(i) = 5d0 | 385 | bwcut_for_PS(i) = 5d0 |
311 | 459 | else | 386 | else |
312 | 460 | bwcut_for_PS(i) = 5d0 | 387 | bwcut_for_PS(i) = 5d0 |
313 | @@ -465,19 +392,19 @@ | |||
314 | 465 | c Either: required onshell and daughter masses too large | 392 | c Either: required onshell and daughter masses too large |
315 | 466 | c Or: forced and daughter masses too large | 393 | c Or: forced and daughter masses too large |
316 | 467 | c Or: required offshell and forced | 394 | c Or: required offshell and forced |
318 | 468 | if(prwidth(i,iconfig) .gt. 0.and. | 395 | if(prwidth_tmp(i,iconfig) .gt. 0.and. |
319 | 469 | $ (lbw(nbw).eq.1.and. | 396 | $ (lbw(nbw).eq.1.and. |
322 | 470 | $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig).lt.xm(i) | 397 | $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig).lt.xm(i) |
323 | 471 | $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig).gt.dsqrt(stot)) | 398 | $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig).gt.dsqrt(stot)) |
324 | 472 | $ .or.gforcebw(i,iconfig).eq.1.and. | 399 | $ .or.gforcebw(i,iconfig).eq.1.and. |
326 | 473 | $ prmass(i,iconfig)+bwcutoff*prwidth(i,iconfig).lt.xm(i) | 400 | $ prmass(i,iconfig)+bwcutoff*prwidth_tmp(i,iconfig).lt.xm(i) |
327 | 474 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) | 401 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) |
328 | 475 | $ then | 402 | $ then |
329 | 476 | c Write results.dat and quit | 403 | c Write results.dat and quit |
330 | 477 | call write_null_results() | 404 | call write_null_results() |
331 | 478 | stop | 405 | stop |
332 | 479 | endif | 406 | endif |
334 | 480 | if (prwidth(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W. | 407 | if (prwidth_tmp(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W. |
335 | 481 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat | 408 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat |
336 | 482 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 | 409 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 |
337 | 483 | c----- | 410 | c----- |
338 | @@ -489,14 +416,14 @@ | |||
339 | 489 | $ .or. lbw(nbw).eq.1) then | 416 | $ .or. lbw(nbw).eq.1) then |
340 | 490 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) | 417 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) |
341 | 491 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 418 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
343 | 492 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 419 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
344 | 493 | endif | 420 | endif |
346 | 494 | else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig)).ge.xm(i) | 421 | else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig)).ge.xm(i) |
347 | 495 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then | 422 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then |
348 | 496 | c JA 02/13 Only allow BW if xm below M+5*Gamma | 423 | c JA 02/13 Only allow BW if xm below M+5*Gamma |
349 | 497 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) | 424 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) |
350 | 498 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 425 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
352 | 499 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 426 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
353 | 500 | endif | 427 | endif |
354 | 501 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) | 428 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) |
355 | 502 | if (swidth(-i) .eq. 0d0 .and. | 429 | if (swidth(-i) .eq. 0d0 .and. |
356 | @@ -509,7 +436,7 @@ | |||
357 | 509 | c Set spmass for BWs | 436 | c Set spmass for BWs |
358 | 510 | if (swidth(-i) .ne. 0d0) | 437 | if (swidth(-i) .ne. 0d0) |
359 | 511 | $ spmass=spmass-xm(i) + | 438 | $ spmass=spmass-xm(i) + |
361 | 512 | $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig)) | 439 | $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig)) |
362 | 513 | else !1/x^pow | 440 | else !1/x^pow |
363 | 514 | a=prmass(i,iconfig)**2/stot | 441 | a=prmass(i,iconfig)**2/stot |
364 | 515 | c JA 4/1/2011 always set grid | 442 | c JA 4/1/2011 always set grid |
365 | @@ -530,7 +457,7 @@ | |||
366 | 530 | endif | 457 | endif |
367 | 531 | endif | 458 | endif |
368 | 532 | if (xo.eq.0d0) xo=1d0/stot | 459 | if (xo.eq.0d0) xo=1d0/stot |
370 | 533 | c if (prwidth(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then | 460 | c if (prwidth_tmp(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then |
371 | 534 | call setgrid(-i,xo,a,1) | 461 | call setgrid(-i,xo,a,1) |
372 | 535 | c else | 462 | c else |
373 | 536 | c write(*,*) 'Using flat grid for BW',i,nbw, | 463 | c write(*,*) 'Using flat grid for BW',i,nbw, |
374 | @@ -610,7 +537,7 @@ | |||
375 | 610 | spole(i)= -2.0d0 ! 1/s pole | 537 | spole(i)= -2.0d0 ! 1/s pole |
376 | 611 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot | 538 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot |
377 | 612 | else | 539 | else |
379 | 613 | write(*,*) "Transforming s_hat BW ",spole(i),swidth(i) | 540 | write(*,*) "Transforming s_hat BW ",spole(i), max(swidth(i), spole(i)*small_width_treatment) |
380 | 614 | endif | 541 | endif |
381 | 615 | endif | 542 | endif |
382 | 616 | 543 | ||
383 | 617 | 544 | ||
384 | === modified file 'UpdateNotes.txt' | |||
385 | --- UpdateNotes.txt 2018-10-17 13:25:07 +0000 | |||
386 | +++ UpdateNotes.txt 2018-11-09 08:24:41 +0000 | |||
387 | @@ -1,12 +1,18 @@ | |||
388 | 1 | Update notes for MadGraph5_aMC@NLO (in reverse time order) | 1 | Update notes for MadGraph5_aMC@NLO (in reverse time order) |
389 | 2 | 2 | ||
390 | 3 | 2.6.4 (//) | 3 | 2.6.4 (//) |
391 | 4 | OM: add specific treatement for small width (at LO only and not for loop-induced) | ||
392 | 5 | if the width is smaller than 1e-6 times the mass, a fake width (at that value) is used for the | ||
393 | 6 | numerical evaluation of the matrix-element. S-channel resonances are re-scaled according to | ||
394 | 7 | narrow-width approximation to return the correct total cross-section (the distribution of events | ||
395 | 8 | will on the other hand follow the new width). | ||
396 | 9 | The parameter '1e-6' can be changed by adding to (LO) run_card the parameter: "small_width_treatment" | ||
397 | 10 | OM: add a new command "install looptools" to trigger the question that is automatically trigger | ||
398 | 11 | the first time a loop computation is needed. | ||
399 | 4 | RF: Fixed a bug when using TopDrawer plots for f(N)LO runs, where the combination of the plots could lead | 12 | RF: Fixed a bug when using TopDrawer plots for f(N)LO runs, where the combination of the plots could lead |
400 | 5 | to completely wrong histograms/distributions in case of high-precision runs. | 13 | to completely wrong histograms/distributions in case of high-precision runs. |
401 | 6 | OM: Fix some MLM crash for some processes (in particular BSM processes with W'). | 14 | OM: Fix some MLM crash for some processes (in particular BSM processes with W'). |
402 | 7 | OM: Fix a bug in the reweighting due to the new lhe format (the one avoiding some issue with py8) | 15 | OM: Fix a bug in the reweighting due to the new lhe format (the one avoiding some issue with py8) |
403 | 8 | OM: add a new command "install looptools" to trigger the question that is automatically trigger | ||
404 | 9 | the first time a loop computation is needed. | ||
405 | 10 | OM: Fix a behavior for negative mass, the width was set to negative in the param_card automatically | 16 | OM: Fix a behavior for negative mass, the width was set to negative in the param_card automatically |
406 | 11 | making the Parton-shower (and other code) to crash since this does not follow the convention. | 17 | making the Parton-shower (and other code) to crash since this does not follow the convention. |
407 | 12 | OM: Change compiler flag to support Mojave. | 18 | OM: Change compiler flag to support Mojave. |
408 | 13 | 19 | ||
409 | === modified file 'madgraph/core/helas_objects.py' | |||
410 | --- madgraph/core/helas_objects.py 2017-08-10 13:09:28 +0000 | |||
411 | +++ madgraph/core/helas_objects.py 2018-11-09 08:24:41 +0000 | |||
412 | @@ -4569,6 +4569,13 @@ | |||
413 | 4569 | return sum([d.get('wavefunctions') for d in \ | 4569 | return sum([d.get('wavefunctions') for d in \ |
414 | 4570 | self.get('diagrams')], []) | 4570 | self.get('diagrams')], []) |
415 | 4571 | 4571 | ||
416 | 4572 | |||
417 | 4573 | def get_all_mass_widths(self): | ||
418 | 4574 | """Gives a list of all widths used by this ME (from propagator)""" | ||
419 | 4575 | |||
420 | 4576 | return set([(d.get('mass'),d.get('width')) for d in self.get_all_wavefunctions()]) | ||
421 | 4577 | |||
422 | 4578 | |||
423 | 4572 | def get_all_amplitudes(self): | 4579 | def get_all_amplitudes(self): |
424 | 4573 | """Gives a list of all amplitudes for this ME""" | 4580 | """Gives a list of all amplitudes for this ME""" |
425 | 4574 | 4581 | ||
426 | 4575 | 4582 | ||
427 | === modified file 'madgraph/interface/common_run_interface.py' | |||
428 | --- madgraph/interface/common_run_interface.py 2018-11-08 22:22:58 +0000 | |||
429 | +++ madgraph/interface/common_run_interface.py 2018-11-09 08:24:41 +0000 | |||
430 | @@ -3242,7 +3242,19 @@ | |||
431 | 3242 | - Check that no width are too small (raise a warning if this is the case) | 3242 | - Check that no width are too small (raise a warning if this is the case) |
432 | 3243 | 3) if dependent is on True check for dependent parameter (automatic for scan)""" | 3243 | 3) if dependent is on True check for dependent parameter (automatic for scan)""" |
433 | 3244 | 3244 | ||
435 | 3245 | return self.static_check_param_card(path, self, run=run, dependent=dependent) | 3245 | self.static_check_param_card(path, self, run=run, dependent=dependent) |
436 | 3246 | |||
437 | 3247 | card = param_card_mod.ParamCard(path) | ||
438 | 3248 | for param in card['decay']: | ||
439 | 3249 | width = param.value | ||
440 | 3250 | if width == 0: | ||
441 | 3251 | continue | ||
442 | 3252 | try: | ||
443 | 3253 | mass = card['mass'].get(param.lhacode).value | ||
444 | 3254 | except Exception: | ||
445 | 3255 | continue | ||
446 | 3256 | |||
447 | 3257 | |||
448 | 3246 | 3258 | ||
449 | 3247 | @staticmethod | 3259 | @staticmethod |
450 | 3248 | def static_check_param_card(path, interface, run=True, dependent=False, | 3260 | def static_check_param_card(path, interface, run=True, dependent=False, |
451 | @@ -5680,6 +5692,30 @@ | |||
452 | 5680 | self.run_card['mass_ion1'] != self.run_card['mass_ion2']): | 5692 | self.run_card['mass_ion1'] != self.run_card['mass_ion2']): |
453 | 5681 | raise Exception, "Heavy ion profile for both beam are different but the symmetry used forbids it. \n Please generate your process with \"set group_subprocesses False\"." | 5693 | raise Exception, "Heavy ion profile for both beam are different but the symmetry used forbids it. \n Please generate your process with \"set group_subprocesses False\"." |
454 | 5682 | 5694 | ||
455 | 5695 | # check the status of small width status from LO | ||
456 | 5696 | for param in self.param_card['decay']: | ||
457 | 5697 | width = param.value | ||
458 | 5698 | if width == 0 or isinstance(width,str): | ||
459 | 5699 | continue | ||
460 | 5700 | try: | ||
461 | 5701 | mass = self.param_card['mass'].get(param.lhacode).value | ||
462 | 5702 | except Exception: | ||
463 | 5703 | continue | ||
464 | 5704 | if isinstance(mass,str): | ||
465 | 5705 | continue | ||
466 | 5706 | |||
467 | 5707 | if mass: | ||
468 | 5708 | if abs(width/mass) < self.run_card['small_width_treatment']: | ||
469 | 5709 | logger.warning("Particle %s will use a fake width ( %s instead of %s ).\n" + | ||
470 | 5710 | "Cross-section will be rescaled according to NWA if needed." + | ||
471 | 5711 | "To force exact treatment reduce the value of 'small_width_treatment' parameter of the run_card", | ||
472 | 5712 | param.lhacode[0], mass*self.run_card['small_width_treatment'], width) | ||
473 | 5713 | elif abs(width/mass) < 1e-12: | ||
474 | 5714 | logger.error('The width of particle %s is too small for an s-channel resonance (%s). If you have this particle in an s-channel, this is likely to create numerical instabilities .', param.lhacode[0], width) | ||
475 | 5715 | if CommonRunCmd.sleep_for_error: | ||
476 | 5716 | time.sleep(5) | ||
477 | 5717 | CommonRunCmd.sleep_for_error = False | ||
478 | 5718 | |||
479 | 5683 | 5719 | ||
480 | 5684 | ######################################################################## | 5720 | ######################################################################## |
481 | 5685 | # NLO specific check | 5721 | # NLO specific check |
482 | 5686 | 5722 | ||
483 | === modified file 'madgraph/iolibs/export_v4.py' | |||
484 | --- madgraph/iolibs/export_v4.py 2018-11-08 22:22:58 +0000 | |||
485 | +++ madgraph/iolibs/export_v4.py 2018-11-09 08:24:41 +0000 | |||
486 | @@ -12,6 +12,7 @@ | |||
487 | 12 | # For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch | 12 | # For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch |
488 | 13 | # | 13 | # |
489 | 14 | ################################################################################ | 14 | ################################################################################ |
490 | 15 | from madgraph.iolibs.helas_call_writers import HelasCallWriter | ||
491 | 15 | """Methods and classes to export matrix elements to v4 format.""" | 16 | """Methods and classes to export matrix elements to v4 format.""" |
492 | 16 | 17 | ||
493 | 17 | import copy | 18 | import copy |
494 | @@ -93,12 +94,28 @@ | |||
495 | 93 | # - None, madgraph do nothing for initialisation | 94 | # - None, madgraph do nothing for initialisation |
496 | 94 | exporter = 'v4' | 95 | exporter = 'v4' |
497 | 95 | # language of the output 'v4' for Fortran output | 96 | # language of the output 'v4' for Fortran output |
499 | 96 | # 'cpp' for C++ output | 97 | # 'cpp' for C++ output |
500 | 97 | 98 | ||
501 | 98 | 99 | ||
502 | 99 | def __init__(self, dir_path = "", opt=None): | 100 | def __init__(self, dir_path = "", opt=None): |
505 | 100 | # cmd_options is a dictionary with all the optional argurment passed at output time | 101 | # cmd_options is a dictionary with all the optional argurment passed at output time |
506 | 101 | return | 102 | |
507 | 103 | # Activate some monkey patching for the helas call writer. | ||
508 | 104 | helas_call_writers.HelasCallWriter.customize_argument_for_all_other_helas_object = \ | ||
509 | 105 | self.helas_call_writer_custom | ||
510 | 106 | |||
511 | 107 | |||
512 | 108 | # helper function for customise helas writter | ||
513 | 109 | @staticmethod | ||
514 | 110 | def custom_helas_call(call, arg): | ||
515 | 111 | """static method to customise the way aloha function call are written | ||
516 | 112 | call is the default template for the call | ||
517 | 113 | arg are the dictionary used for the call | ||
518 | 114 | """ | ||
519 | 115 | return call, arg | ||
520 | 116 | |||
521 | 117 | helas_call_writer_custom = lambda x,y,z: x.custom_helas_call(y,z) | ||
522 | 118 | |||
523 | 102 | 119 | ||
524 | 103 | def copy_template(self, model): | 120 | def copy_template(self, model): |
525 | 104 | return | 121 | return |
526 | @@ -160,6 +177,9 @@ | |||
527 | 160 | #place holder to pass information to the run_interface | 177 | #place holder to pass information to the run_interface |
528 | 161 | self.proc_characteristic = banner_mod.ProcCharacteristic() | 178 | self.proc_characteristic = banner_mod.ProcCharacteristic() |
529 | 162 | 179 | ||
530 | 180 | # call mother class | ||
531 | 181 | super(ProcessExporterFortran,self).__init__(dir_path, opt) | ||
532 | 182 | |||
533 | 163 | 183 | ||
534 | 164 | #=========================================================================== | 184 | #=========================================================================== |
535 | 165 | # process exporter fortran switch between group and not grouped | 185 | # process exporter fortran switch between group and not grouped |
536 | @@ -3423,6 +3443,7 @@ | |||
537 | 3423 | return s_and_t_channels | 3443 | return s_and_t_channels |
538 | 3424 | 3444 | ||
539 | 3425 | 3445 | ||
540 | 3446 | |||
541 | 3426 | #=============================================================================== | 3447 | #=============================================================================== |
542 | 3427 | # ProcessExporterFortranME | 3448 | # ProcessExporterFortranME |
543 | 3428 | #=============================================================================== | 3449 | #=============================================================================== |
544 | @@ -3431,7 +3452,16 @@ | |||
545 | 3431 | MadEvent format.""" | 3452 | MadEvent format.""" |
546 | 3432 | 3453 | ||
547 | 3433 | matrix_file = "matrix_madevent_v4.inc" | 3454 | matrix_file = "matrix_madevent_v4.inc" |
549 | 3434 | 3455 | ||
550 | 3456 | # helper function for customise helas writter | ||
551 | 3457 | @staticmethod | ||
552 | 3458 | def custom_helas_call(call, arg): | ||
553 | 3459 | if arg['mass'] == '%(M)s,%(W)s,': | ||
554 | 3460 | arg['mass'] = '%(M)s, fk_%(W)s,' | ||
555 | 3461 | elif '%(W)s' in arg['mass']: | ||
556 | 3462 | raise Exception | ||
557 | 3463 | return call, arg | ||
558 | 3464 | |||
559 | 3435 | def copy_template(self, model): | 3465 | def copy_template(self, model): |
560 | 3436 | """Additional actions needed for setup of Template | 3466 | """Additional actions needed for setup of Template |
561 | 3437 | """ | 3467 | """ |
562 | @@ -3455,6 +3485,7 @@ | |||
563 | 3455 | 3485 | ||
564 | 3456 | 3486 | ||
565 | 3457 | 3487 | ||
566 | 3488 | |||
567 | 3458 | 3489 | ||
568 | 3459 | 3490 | ||
569 | 3460 | #=========================================================================== | 3491 | #=========================================================================== |
570 | @@ -3945,10 +3976,29 @@ | |||
571 | 3945 | # Extract helas calls | 3976 | # Extract helas calls |
572 | 3946 | helas_calls = fortran_model.get_matrix_element_calls(\ | 3977 | helas_calls = fortran_model.get_matrix_element_calls(\ |
573 | 3947 | matrix_element) | 3978 | matrix_element) |
574 | 3979 | |||
575 | 3948 | 3980 | ||
576 | 3949 | replace_dict['helas_calls'] = "\n".join(helas_calls) | 3981 | replace_dict['helas_calls'] = "\n".join(helas_calls) |
577 | 3950 | 3982 | ||
578 | 3951 | 3983 | ||
579 | 3984 | #adding the support for the fake width (forbidding too small width) | ||
580 | 3985 | mass_width = matrix_element.get_all_mass_widths() | ||
581 | 3986 | width_list = set([e[1] for e in mass_width]) | ||
582 | 3987 | |||
583 | 3988 | replace_dict['fake_width_declaration'] = \ | ||
584 | 3989 | (' double precision fk_%s \n' * len(width_list)) % tuple(width_list) | ||
585 | 3990 | replace_dict['fake_width_declaration'] += \ | ||
586 | 3991 | (' save fk_%s \n' * len(width_list)) % tuple(width_list) | ||
587 | 3992 | fk_w_defs = [] | ||
588 | 3993 | one_def = ' fk_%(w)s = SIGN(MAX(ABS(%(w)s), ABS(%(m)s*small_width_treatment)), %(w)s)' | ||
589 | 3994 | for m, w in mass_width: | ||
590 | 3995 | if w == 'zero': | ||
591 | 3996 | if ' fk_zero = 0d0' not in fk_w_defs: | ||
592 | 3997 | fk_w_defs.append(' fk_zero = 0d0') | ||
593 | 3998 | continue | ||
594 | 3999 | fk_w_defs.append(one_def %{'m':m, 'w':w}) | ||
595 | 4000 | replace_dict['fake_width_definitions'] = '\n'.join(fk_w_defs) | ||
596 | 4001 | |||
597 | 3952 | # Extract version number and date from VERSION file | 4002 | # Extract version number and date from VERSION file |
598 | 3953 | info_lines = self.get_mg5_info_lines() | 4003 | info_lines = self.get_mg5_info_lines() |
599 | 3954 | replace_dict['info_lines'] = info_lines | 4004 | replace_dict['info_lines'] = info_lines |
600 | 3955 | 4005 | ||
601 | === modified file 'madgraph/iolibs/helas_call_writers.py' | |||
602 | --- madgraph/iolibs/helas_call_writers.py 2016-03-03 23:17:06 +0000 | |||
603 | +++ madgraph/iolibs/helas_call_writers.py 2018-11-09 08:24:41 +0000 | |||
604 | @@ -21,11 +21,13 @@ | |||
605 | 21 | import aloha.aloha_writers as aloha_writers | 21 | import aloha.aloha_writers as aloha_writers |
606 | 22 | import aloha | 22 | import aloha |
607 | 23 | from madgraph import MadGraph5Error | 23 | from madgraph import MadGraph5Error |
608 | 24 | import madgraph.various.misc as misc | ||
609 | 24 | 25 | ||
610 | 25 | class HelasWriterError(Exception): | 26 | class HelasWriterError(Exception): |
611 | 26 | """Class for the error of this module """ | 27 | """Class for the error of this module """ |
612 | 27 | pass | 28 | pass |
613 | 28 | 29 | ||
614 | 30 | |||
615 | 29 | #=============================================================================== | 31 | #=============================================================================== |
616 | 30 | # HelasCallWriter | 32 | # HelasCallWriter |
617 | 31 | #=============================================================================== | 33 | #=============================================================================== |
618 | @@ -41,6 +43,19 @@ | |||
619 | 41 | # Dictionaries from spin states to letters in Helas call | 43 | # Dictionaries from spin states to letters in Helas call |
620 | 42 | mother_dict = {1: 'S', 2: 'O', -2: 'I', 3: 'V', 5: 'T', 4:'OR', -4:'IR', | 44 | mother_dict = {1: 'S', 2: 'O', -2: 'I', 3: 'V', 5: 'T', 4:'OR', -4:'IR', |
621 | 43 | 99:'P'} | 45 | 99:'P'} |
622 | 46 | |||
623 | 47 | @staticmethod | ||
624 | 48 | def customize_argument_for_all_other_helas_object(call, arg): | ||
625 | 49 | """ Place holder for PLUGIN/... | ||
626 | 50 | (used by madevent output for small width handling) | ||
627 | 51 | """ | ||
628 | 52 | return call, arg | ||
629 | 53 | |||
630 | 54 | @staticmethod | ||
631 | 55 | def default_customize_argument_for_all_other_helas_object(call,arg): | ||
632 | 56 | return call,arg | ||
633 | 57 | #customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object | ||
634 | 58 | #default_customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object | ||
635 | 44 | 59 | ||
636 | 45 | def default_setup(self): | 60 | def default_setup(self): |
637 | 46 | 61 | ||
638 | @@ -85,6 +100,11 @@ | |||
639 | 85 | 100 | ||
640 | 86 | return ['model', 'wavefunctions', 'amplitudes'] | 101 | return ['model', 'wavefunctions', 'amplitudes'] |
641 | 87 | 102 | ||
642 | 103 | |||
643 | 104 | |||
644 | 105 | |||
645 | 106 | |||
646 | 107 | |||
647 | 88 | def get_loop_amp_helas_calls(self, matrix_element): | 108 | def get_loop_amp_helas_calls(self, matrix_element): |
648 | 89 | """Return a list of strings, corresponding to the Helas calls | 109 | """Return a list of strings, corresponding to the Helas calls |
649 | 90 | for building loop amplitudes (AMPL) only.""" | 110 | for building loop amplitudes (AMPL) only.""" |
650 | @@ -1197,6 +1217,7 @@ | |||
651 | 1197 | arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)" | 1217 | arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)" |
652 | 1198 | 1218 | ||
653 | 1199 | # ALL ARGUMENT FORMATTED ############################################### | 1219 | # ALL ARGUMENT FORMATTED ############################################### |
654 | 1220 | call, arg = HelasCallWriter.customize_argument_for_all_other_helas_object(call, arg) | ||
655 | 1200 | # Store the result. | 1221 | # Store the result. |
656 | 1201 | call = call % arg | 1222 | call = call % arg |
657 | 1202 | # Now we have a line correctly formatted | 1223 | # Now we have a line correctly formatted |
658 | @@ -1209,6 +1230,8 @@ | |||
659 | 1209 | else: | 1230 | else: |
660 | 1210 | self.add_amplitude(argument.get_call_key(), call_function) | 1231 | self.add_amplitude(argument.get_call_key(), call_function) |
661 | 1211 | 1232 | ||
662 | 1233 | |||
663 | 1234 | |||
664 | 1212 | def get_loop_amplitude_helas_calls(self, loop_matrix_element): | 1235 | def get_loop_amplitude_helas_calls(self, loop_matrix_element): |
665 | 1213 | """ Returns a list of strings corresponding to the Helas calls for each | 1236 | """ Returns a list of strings corresponding to the Helas calls for each |
666 | 1214 | loop amplitude of this loop matrix element. This function is placed in | 1237 | loop amplitude of this loop matrix element. This function is placed in |
667 | 1215 | 1238 | ||
668 | === modified file 'madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc' | |||
669 | --- madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2017-11-01 10:08:52 +0000 | |||
670 | +++ madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2018-11-09 08:24:41 +0000 | |||
671 | @@ -39,6 +39,7 @@ | |||
672 | 39 | C When set negative, the security above is removed | 39 | C When set negative, the security above is removed |
673 | 40 | DOUBLE PRECISION MULTICHANNEL_THRES | 40 | DOUBLE PRECISION MULTICHANNEL_THRES |
674 | 41 | PARAMETER (MULTICHANNEL_THRES=1.0d-5) | 41 | PARAMETER (MULTICHANNEL_THRES=1.0d-5) |
675 | 42 | |||
676 | 42 | c | 43 | c |
677 | 43 | c global (due to reading writting) | 44 | c global (due to reading writting) |
678 | 44 | c | 45 | c |
679 | 45 | 46 | ||
680 | === modified file 'madgraph/iolibs/template_files/matrix_madevent_group_v4.inc' | |||
681 | --- madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2017-11-01 10:08:52 +0000 | |||
682 | +++ madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2018-11-09 08:24:41 +0000 | |||
683 | @@ -68,6 +68,9 @@ | |||
684 | 68 | 68 | ||
685 | 69 | REAL*8 POL(2) | 69 | REAL*8 POL(2) |
686 | 70 | COMMON/TO_POLARIZATION/ POL | 70 | COMMON/TO_POLARIZATION/ POL |
687 | 71 | |||
688 | 72 | double precision small_width_treatment | ||
689 | 73 | common/narrow_width/small_width_treatment | ||
690 | 71 | 74 | ||
691 | 72 | INTEGER ISUM_HEL | 75 | INTEGER ISUM_HEL |
692 | 73 | LOGICAL MULTI_CHANNEL | 76 | LOGICAL MULTI_CHANNEL |
693 | @@ -87,6 +90,7 @@ | |||
694 | 87 | C ---------- | 90 | C ---------- |
695 | 88 | C BEGIN CODE | 91 | C BEGIN CODE |
696 | 89 | C ---------- | 92 | C ---------- |
697 | 93 | |||
698 | 90 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 | 94 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 |
699 | 91 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 | 95 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 |
700 | 92 | DO I=1,NEXTERNAL | 96 | DO I=1,NEXTERNAL |
701 | @@ -255,6 +259,11 @@ | |||
702 | 255 | C Needed for v4 models | 259 | C Needed for v4 models |
703 | 256 | COMPLEX*16 DUM0,DUM1 | 260 | COMPLEX*16 DUM0,DUM1 |
704 | 257 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ | 261 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ |
705 | 262 | |||
706 | 263 | %(fake_width_declaration)s | ||
707 | 264 | logical first | ||
708 | 265 | data first /.true./ | ||
709 | 266 | save first | ||
710 | 258 | C | 267 | C |
711 | 259 | C FUNCTION | 268 | C FUNCTION |
712 | 260 | C | 269 | C |
713 | @@ -265,6 +274,9 @@ | |||
714 | 265 | Double Precision amp2(maxamps), jamp2(0:maxflow) | 274 | Double Precision amp2(maxamps), jamp2(0:maxflow) |
715 | 266 | common/to_amps/ amp2, jamp2 | 275 | common/to_amps/ amp2, jamp2 |
716 | 267 | include 'coupl.inc' | 276 | include 'coupl.inc' |
717 | 277 | |||
718 | 278 | double precision small_width_treatment | ||
719 | 279 | common/narrow_width/small_width_treatment | ||
720 | 268 | C | 280 | C |
721 | 269 | C COLOR DATA | 281 | C COLOR DATA |
722 | 270 | C | 282 | C |
723 | @@ -272,6 +284,12 @@ | |||
724 | 272 | C ---------- | 284 | C ---------- |
725 | 273 | C BEGIN CODE | 285 | C BEGIN CODE |
726 | 274 | C ---------- | 286 | C ---------- |
727 | 287 | if (first) then | ||
728 | 288 | first=.false. | ||
729 | 289 | %(fake_width_definitions)s | ||
730 | 290 | endif | ||
731 | 291 | |||
732 | 292 | |||
733 | 275 | %(helas_calls)s | 293 | %(helas_calls)s |
734 | 276 | %(jamp_lines)s | 294 | %(jamp_lines)s |
735 | 277 | 295 | ||
736 | 278 | 296 | ||
737 | === modified file 'madgraph/iolibs/template_files/matrix_madevent_v4.inc' | |||
738 | --- madgraph/iolibs/template_files/matrix_madevent_v4.inc 2017-11-01 10:08:52 +0000 | |||
739 | +++ madgraph/iolibs/template_files/matrix_madevent_v4.inc 2018-11-09 08:24:41 +0000 | |||
740 | @@ -49,6 +49,7 @@ | |||
741 | 49 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ | 49 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ |
742 | 50 | REAL XRAN1 | 50 | REAL XRAN1 |
743 | 51 | EXTERNAL XRAN1 | 51 | EXTERNAL XRAN1 |
744 | 52 | |||
745 | 52 | C | 53 | C |
746 | 53 | C GLOBAL VARIABLES | 54 | C GLOBAL VARIABLES |
747 | 54 | C | 55 | C |
748 | @@ -58,7 +59,7 @@ | |||
749 | 58 | CHARACTER*101 HEL_BUFF | 59 | CHARACTER*101 HEL_BUFF |
750 | 59 | COMMON/TO_HELICITY/ HEL_BUFF | 60 | COMMON/TO_HELICITY/ HEL_BUFF |
751 | 60 | 61 | ||
753 | 61 | REAL*8 POL(2) | 62 | REAL*8 POL(2) |
754 | 62 | COMMON/TO_POLARIZATION/ POL | 63 | COMMON/TO_POLARIZATION/ POL |
755 | 63 | 64 | ||
756 | 64 | INTEGER ISUM_HEL | 65 | INTEGER ISUM_HEL |
757 | @@ -68,6 +69,7 @@ | |||
758 | 68 | DATA IDUM /-1/ | 69 | DATA IDUM /-1/ |
759 | 69 | DATA XTRY, XREJ, NGOOD /0,0,0/ | 70 | DATA XTRY, XREJ, NGOOD /0,0,0/ |
760 | 70 | SAVE YFRAC, IGOOD, JHEL | 71 | SAVE YFRAC, IGOOD, JHEL |
761 | 72 | |||
762 | 71 | %(helicity_lines)s | 73 | %(helicity_lines)s |
763 | 72 | %(den_factor_line)s | 74 | %(den_factor_line)s |
764 | 73 | C ---------- | 75 | C ---------- |
765 | @@ -235,6 +237,11 @@ | |||
766 | 235 | C Needed for v4 models | 237 | C Needed for v4 models |
767 | 236 | COMPLEX*16 DUM0,DUM1 | 238 | COMPLEX*16 DUM0,DUM1 |
768 | 237 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ | 239 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ |
769 | 240 | |||
770 | 241 | %(fake_width_declaration)s | ||
771 | 242 | logical first | ||
772 | 243 | data first /.true./ | ||
773 | 244 | save first | ||
774 | 238 | C | 245 | C |
775 | 239 | C FUNCTION | 246 | C FUNCTION |
776 | 240 | C | 247 | C |
777 | @@ -245,6 +252,9 @@ | |||
778 | 245 | Double Precision amp2(maxamps), jamp2(0:maxflow) | 252 | Double Precision amp2(maxamps), jamp2(0:maxflow) |
779 | 246 | common/to_amps/ amp2, jamp2 | 253 | common/to_amps/ amp2, jamp2 |
780 | 247 | include 'coupl.inc' | 254 | include 'coupl.inc' |
781 | 255 | |||
782 | 256 | double precision small_width_treatment | ||
783 | 257 | common/narrow_width/small_width_treatment | ||
784 | 248 | C | 258 | C |
785 | 249 | C COLOR DATA | 259 | C COLOR DATA |
786 | 250 | C | 260 | C |
787 | @@ -252,6 +262,11 @@ | |||
788 | 252 | C ---------- | 262 | C ---------- |
789 | 253 | C BEGIN CODE | 263 | C BEGIN CODE |
790 | 254 | C ---------- | 264 | C ---------- |
791 | 265 | if (first) then | ||
792 | 266 | first=.false. | ||
793 | 267 | %(fake_width_definitions)s | ||
794 | 268 | endif | ||
795 | 269 | |||
796 | 255 | %(helas_calls)s | 270 | %(helas_calls)s |
797 | 256 | %(jamp_lines)s | 271 | %(jamp_lines)s |
798 | 257 | 272 | ||
799 | 258 | 273 | ||
800 | === modified file 'madgraph/iolibs/template_files/matrix_madweight_group_v4.inc' | |||
801 | --- madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2012-02-29 12:53:46 +0000 | |||
802 | +++ madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2018-11-09 08:24:41 +0000 | |||
803 | @@ -22,6 +22,7 @@ | |||
804 | 22 | C ARGUMENTS | 22 | C ARGUMENTS |
805 | 23 | C | 23 | C |
806 | 24 | REAL*8 P(0:3,NEXTERNAL),ANS | 24 | REAL*8 P(0:3,NEXTERNAL),ANS |
807 | 25 | |||
808 | 25 | C | 26 | C |
809 | 26 | C LOCAL VARIABLES | 27 | C LOCAL VARIABLES |
810 | 27 | C | 28 | C |
811 | 28 | 29 | ||
812 | === modified file 'madgraph/various/banner.py' | |||
813 | --- madgraph/various/banner.py 2018-10-19 08:43:52 +0000 | |||
814 | +++ madgraph/various/banner.py 2018-11-09 08:24:41 +0000 | |||
815 | @@ -2952,6 +2952,7 @@ | |||
816 | 2952 | self.add_param('survey_splitting', -1, hidden=True, include=False, comment="for loop-induced control how many core are used at survey for the computation of a single iteration.") | 2952 | self.add_param('survey_splitting', -1, hidden=True, include=False, comment="for loop-induced control how many core are used at survey for the computation of a single iteration.") |
817 | 2953 | self.add_param('survey_nchannel_per_job', 2, hidden=True, include=False, comment="control how many Channel are integrated inside a single job on cluster/multicore") | 2953 | self.add_param('survey_nchannel_per_job', 2, hidden=True, include=False, comment="control how many Channel are integrated inside a single job on cluster/multicore") |
818 | 2954 | self.add_param('refine_evt_by_job', -1, hidden=True, include=False, comment="control the maximal number of events for the first iteration of the refine (larger means less jobs)") | 2954 | self.add_param('refine_evt_by_job', -1, hidden=True, include=False, comment="control the maximal number of events for the first iteration of the refine (larger means less jobs)") |
819 | 2955 | self.add_param('small_width_treatment', 1e-6, hidden=True, comment="generation where the width is below VALUE times mass will be replace by VALUE times mass for the computation. The cross-section will be corrected assuming NWA. Not used for loop-induced process") | ||
820 | 2955 | 2956 | ||
821 | 2956 | # parameter allowing to define simple cut via the pdg | 2957 | # parameter allowing to define simple cut via the pdg |
822 | 2957 | # Special syntax are related to those. (can not be edit directly) | 2958 | # Special syntax are related to those. (can not be edit directly) |
823 | 2958 | 2959 | ||
824 | === modified file 'madgraph/various/lhe_parser.py' | |||
825 | --- madgraph/various/lhe_parser.py 2018-06-21 08:57:21 +0000 | |||
826 | +++ madgraph/various/lhe_parser.py 2018-11-09 08:24:41 +0000 | |||
827 | @@ -167,6 +167,7 @@ | |||
828 | 167 | """associate to this particle the decay in the associate event""" | 167 | """associate to this particle the decay in the associate event""" |
829 | 168 | 168 | ||
830 | 169 | return self.event.add_decay_to_particle(self.event_id, decay_event) | 169 | return self.event.add_decay_to_particle(self.event_id, decay_event) |
831 | 170 | |||
832 | 170 | 171 | ||
833 | 171 | def __repr__(self): | 172 | def __repr__(self): |
834 | 172 | return 'Particle("%s", event=%s)' % (str(self), self.event) | 173 | return 'Particle("%s", event=%s)' % (str(self), self.event) |
835 | @@ -1263,26 +1264,28 @@ | |||
836 | 1263 | 1264 | ||
837 | 1264 | if 'part' == status: | 1265 | if 'part' == status: |
838 | 1265 | part = Particle(line, event=self) | 1266 | part = Particle(line, event=self) |
840 | 1266 | if part.E != 0: | 1267 | if part.E != 0 or part.status==-1: |
841 | 1267 | self.append(part) | 1268 | self.append(part) |
842 | 1268 | elif self.nexternal: | 1269 | elif self.nexternal: |
844 | 1269 | self.nexternal-=1 | 1270 | self.nexternal-=1 |
845 | 1270 | else: | 1271 | else: |
846 | 1271 | if '</event>' in line: | 1272 | if '</event>' in line: |
847 | 1272 | line = line.replace('</event>','',1) | 1273 | line = line.replace('</event>','',1) |
848 | 1273 | self.tag += '%s\n' % line | 1274 | self.tag += '%s\n' % line |
849 | 1274 | 1275 | ||
850 | 1275 | self.assign_mother() | 1276 | self.assign_mother() |
852 | 1276 | 1277 | ||
853 | 1278 | |||
854 | 1277 | def assign_mother(self): | 1279 | def assign_mother(self): |
855 | 1278 | """convert the number in actual particle""" | 1280 | """convert the number in actual particle""" |
858 | 1279 | #Security if not incoming particle. Define a fake particle and set all particle as | 1281 | #Security if not incoming particle. Define a fake particle |
857 | 1280 | # decaying from that fake particle | ||
859 | 1281 | if all(p.status != -1 for p in self): | 1282 | if all(p.status != -1 for p in self): |
860 | 1283 | if not self.nexternal: | ||
861 | 1284 | return | ||
862 | 1282 | if self.warning_order: | 1285 | if self.warning_order: |
863 | 1283 | Event.warning_order = False | 1286 | Event.warning_order = False |
864 | 1284 | logger.warning("Weird format for lhe format: no incoming particle... adding a fake one") | 1287 | logger.warning("Weird format for lhe format: no incoming particle... adding a fake one") |
866 | 1285 | 1288 | raise Exception | |
867 | 1286 | mother = Particle(event=self) | 1289 | mother = Particle(event=self) |
868 | 1287 | mother.status = -1 | 1290 | mother.status = -1 |
869 | 1288 | mother.pid = 0 | 1291 | mother.pid = 0 |
870 | @@ -1291,8 +1294,10 @@ | |||
871 | 1291 | mother.event_id = 0 | 1294 | mother.event_id = 0 |
872 | 1292 | self.nexternal += 1 | 1295 | self.nexternal += 1 |
873 | 1293 | for p in self[1:]: | 1296 | for p in self[1:]: |
876 | 1294 | p.mother1 = 1 | 1297 | if isinstance(p.mother1, int) and p.mother1 > 1: |
877 | 1295 | p.mother2 = 1 | 1298 | p.mother1 += 1 |
878 | 1299 | if isinstance(p.mother2, int) and p.mother2 > 1: | ||
879 | 1300 | p.mother2 += 1 | ||
880 | 1296 | p.event_id += 1 | 1301 | p.event_id += 1 |
881 | 1297 | 1302 | ||
882 | 1298 | 1303 | ||
883 | 1299 | 1304 | ||
884 | === modified file 'tests/acceptance_tests/test_cmd_madloop.py' | |||
885 | --- tests/acceptance_tests/test_cmd_madloop.py 2018-04-24 22:39:50 +0000 | |||
886 | +++ tests/acceptance_tests/test_cmd_madloop.py 2018-11-09 08:24:41 +0000 | |||
887 | @@ -492,7 +492,7 @@ | |||
888 | 492 | # Select the Tensor Integral to include in the test | 492 | # Select the Tensor Integral to include in the test |
889 | 493 | misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout') | 493 | misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout') |
890 | 494 | misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout') | 494 | misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout') |
892 | 495 | misc.activate_dependence('golem', cmd = self.interface, log='stdout') | 495 | misc.deactivate_dependence('golem', cmd = self.interface, log='stdout') |
893 | 496 | misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR) | 496 | misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR) |
894 | 497 | misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR) | 497 | misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR) |
895 | 498 | 498 | ||
896 | @@ -533,7 +533,7 @@ | |||
897 | 533 | # Select the Tensor Integral to include in the test | 533 | # Select the Tensor Integral to include in the test |
898 | 534 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') | 534 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') |
899 | 535 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') | 535 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') |
901 | 536 | misc.activate_dependence('golem', cmd = interface, log='stdout') | 536 | misc.deactivate_dependence('golem', cmd = interface, log='stdout') |
902 | 537 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) | 537 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) |
903 | 538 | 538 | ||
904 | 539 | run_cmd('generate g g > t t~ [virt=QCD]') | 539 | run_cmd('generate g g > t t~ [virt=QCD]') |
905 | 540 | 540 | ||
906 | === modified file 'tests/acceptance_tests/test_export_fks.py' | |||
907 | --- tests/acceptance_tests/test_export_fks.py 2017-05-15 10:39:31 +0000 | |||
908 | +++ tests/acceptance_tests/test_export_fks.py 2018-11-09 08:24:41 +0000 | |||
909 | @@ -75,7 +75,7 @@ | |||
910 | 75 | # Select the Tensor Integral to include in the test | 75 | # Select the Tensor Integral to include in the test |
911 | 76 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') | 76 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') |
912 | 77 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') | 77 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') |
914 | 78 | misc.activate_dependence('golem', cmd = interface, log='stdout') | 78 | misc.deactivate_dependence('golem', cmd = interface, log='stdout') |
915 | 79 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) | 79 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) |
916 | 80 | 80 | ||
917 | 81 | run_cmd('import model %s' % model) | 81 | run_cmd('import model %s' % model) |
918 | 82 | 82 | ||
919 | === removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f' | |||
920 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f 2016-08-07 07:16:07 +0000 | |||
921 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f 1970-01-01 00:00:00 +0000 | |||
922 | @@ -1,748 +0,0 @@ | |||
923 | 1 | SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
924 | 2 | C | ||
925 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
926 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
927 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
928 | 6 | C | ||
929 | 7 | C Interface between MG5 and Golem95. | ||
930 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
931 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
932 | 10 | C NLOOPLINE < 6. | ||
933 | 11 | C | ||
934 | 12 | C Process: d~ u > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
935 | 13 | C Process: s~ c > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
936 | 14 | C | ||
937 | 15 | C | ||
938 | 16 | C MODULES | ||
939 | 17 | C | ||
940 | 18 | USE MATRICE_S | ||
941 | 19 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
942 | 20 | USE PRECISION_GOLEM, ONLY: KI | ||
943 | 21 | USE TENS_COMB | ||
944 | 22 | USE TENS_REC | ||
945 | 23 | USE FORM_FACTOR_1P, ONLY: A10 | ||
946 | 24 | USE FORM_FACTOR_2P, ONLY: A20 | ||
947 | 25 | USE FORM_FACTOR_3P, ONLY: A30 | ||
948 | 26 | USE FORM_FACTOR_4P, ONLY: A40 | ||
949 | 27 | USE FORM_FACTOR_5P, ONLY: A50 | ||
950 | 28 | USE FORM_FACTOR_6P, ONLY: A60 | ||
951 | 29 | IMPLICIT NONE | ||
952 | 30 | C | ||
953 | 31 | C CONSTANTS | ||
954 | 32 | C | ||
955 | 33 | INTEGER NEXTERNAL | ||
956 | 34 | PARAMETER (NEXTERNAL=3) | ||
957 | 35 | LOGICAL CHECKPCONSERVATION | ||
958 | 36 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
959 | 37 | REAL*8 NORMALIZATION | ||
960 | 38 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
961 | 39 | $ *2)) | ||
962 | 40 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
963 | 41 | $ ,0.0_KI,0.0_KI/) | ||
964 | 42 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
965 | 43 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
966 | 44 | C directly from | ||
967 | 45 | C numerator using golem internal reconstruction routine | ||
968 | 46 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
969 | 47 | C against | ||
970 | 48 | C MadLoop internal ones. | ||
971 | 49 | INTEGER GOLEM_RUN_MODE | ||
972 | 50 | PARAMETER (GOLEM_RUN_MODE=1) | ||
973 | 51 | C The following is the acceptance threshold used for | ||
974 | 52 | C GOLEM_RUN_MODE = 3 | ||
975 | 53 | REAL*8 COEF_CHECK_THRS | ||
976 | 54 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
977 | 55 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
978 | 56 | |||
979 | 57 | LOGICAL PASS_COEF_CHECK | ||
980 | 58 | C | ||
981 | 59 | C ARGUMENTS | ||
982 | 60 | C | ||
983 | 61 | INTEGER NLOOPLINE, RANK | ||
984 | 62 | REAL*8 PL(0:3,NLOOPLINE) | ||
985 | 63 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
986 | 64 | REAL*8 REF_P | ||
987 | 65 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
988 | 66 | COMPLEX*16 M2L(NLOOPLINE) | ||
989 | 67 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
990 | 68 | COMPLEX*16 RES(3) | ||
991 | 69 | LOGICAL STABLE | ||
992 | 70 | C | ||
993 | 71 | C LOCAL VARIABLES | ||
994 | 72 | C | ||
995 | 73 | INTEGER I, J, K | ||
996 | 74 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
997 | 75 | |||
998 | 76 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
999 | 77 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
1000 | 78 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
1001 | 79 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
1002 | 80 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
1003 | 81 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
1004 | 82 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
1005 | 83 | |||
1006 | 84 | C The pinch propagator optimization is not used, so for now it is | ||
1007 | 85 | C always 0. | ||
1008 | 86 | INTEGER PINCH | ||
1009 | 87 | C | ||
1010 | 88 | C EXTERNAL FUNCTIONS | ||
1011 | 89 | C | ||
1012 | 90 | COMPLEX(KI) GOLEM_LOOPNUM | ||
1013 | 91 | EXTERNAL GOLEM_LOOPNUM | ||
1014 | 92 | LOGICAL COMPARE_COEFS_0 | ||
1015 | 93 | LOGICAL COMPARE_COEFS_1 | ||
1016 | 94 | LOGICAL COMPARE_COEFS_2 | ||
1017 | 95 | LOGICAL COMPARE_COEFS_3 | ||
1018 | 96 | LOGICAL COMPARE_COEFS_4 | ||
1019 | 97 | LOGICAL COMPARE_COEFS_5 | ||
1020 | 98 | LOGICAL COMPARE_COEFS_6 | ||
1021 | 99 | C | ||
1022 | 100 | C GLOBAL VARIABLES | ||
1023 | 101 | C | ||
1024 | 102 | INCLUDE 'coupl.inc' | ||
1025 | 103 | INTEGER CTMODE | ||
1026 | 104 | REAL*8 LSCALE | ||
1027 | 105 | COMMON/CT/LSCALE,CTMODE | ||
1028 | 106 | |||
1029 | 107 | INTEGER ID,SQSOINDEX,R | ||
1030 | 108 | COMMON/LOOP/ID,SQSOINDEX,R | ||
1031 | 109 | |||
1032 | 110 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
1033 | 111 | $ ,COLLIERINIT | ||
1034 | 112 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
1035 | 113 | $ ,NINJAINIT,COLLIERINIT | ||
1036 | 114 | |||
1037 | 115 | INTEGER NLOOPGROUPS | ||
1038 | 116 | PARAMETER (NLOOPGROUPS=1) | ||
1039 | 117 | INTEGER NSQUAREDSO | ||
1040 | 118 | PARAMETER (NSQUAREDSO=1) | ||
1041 | 119 | INCLUDE 'loop_max_coefs.inc' | ||
1042 | 120 | |||
1043 | 121 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
1044 | 122 | COMMON/LCOEFS/LOOPCOEFS | ||
1045 | 123 | C ---------- | ||
1046 | 124 | C BEGIN CODE | ||
1047 | 125 | C ---------- | ||
1048 | 126 | |||
1049 | 127 | C The CT initialization is also performed here if not done already | ||
1050 | 128 | C because it calls MPINIT of OneLOop which is necessary on some | ||
1051 | 129 | C system | ||
1052 | 130 | IF (CTINIT) THEN | ||
1053 | 131 | CTINIT=.FALSE. | ||
1054 | 132 | CALL INITCT() | ||
1055 | 133 | ENDIF | ||
1056 | 134 | |||
1057 | 135 | C INITIALIZE GOLEM IF NEEDED | ||
1058 | 136 | IF (GOLEMINIT) THEN | ||
1059 | 137 | GOLEMINIT=.FALSE. | ||
1060 | 138 | CALL INITGOLEM() | ||
1061 | 139 | ENDIF | ||
1062 | 140 | |||
1063 | 141 | C No stability test intrisic to Golem95 now | ||
1064 | 142 | STABLE=.TRUE. | ||
1065 | 143 | |||
1066 | 144 | C This initialization must be done for each reduction because we | ||
1067 | 145 | C have not setup anyoptimization using pinched propagators yet. | ||
1068 | 146 | CALL INITGOLEM95(NLOOPLINE) | ||
1069 | 147 | PINCH = 0 | ||
1070 | 148 | |||
1071 | 149 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
1072 | 150 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
1073 | 151 | |||
1074 | 152 | C CONVERT THE MASSES TO BE COMPLEX | ||
1075 | 153 | DO I=1,NLOOPLINE | ||
1076 | 154 | M2LGOLEM(I)=M2L(I) | ||
1077 | 155 | ENDDO | ||
1078 | 156 | |||
1079 | 157 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
1080 | 158 | DO I=0,3 | ||
1081 | 159 | ABSPCT(I) = 0.D0 | ||
1082 | 160 | DO J=0,(NLOOPLINE-1) | ||
1083 | 161 | PCT(I,J)=0.D0 | ||
1084 | 162 | ENDDO | ||
1085 | 163 | ENDDO | ||
1086 | 164 | DO I=0,3 | ||
1087 | 165 | DO J=1,NLOOPLINE | ||
1088 | 166 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
1089 | 167 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
1090 | 168 | ENDDO | ||
1091 | 169 | ENDDO | ||
1092 | 170 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
1093 | 171 | DO I=0,3 | ||
1094 | 172 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
1095 | 173 | ENDDO | ||
1096 | 174 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
1097 | 175 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
1098 | 176 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
1099 | 177 | STOP 'energy is not conserved' | ||
1100 | 178 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
1101 | 179 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
1102 | 180 | STOP 'px is not conserved' | ||
1103 | 181 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
1104 | 182 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
1105 | 183 | STOP 'py is not conserved' | ||
1106 | 184 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
1107 | 185 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
1108 | 186 | STOP 'pz is not conserved' | ||
1109 | 187 | ENDIF | ||
1110 | 188 | ENDIF | ||
1111 | 189 | DO I=0,3 | ||
1112 | 190 | DO J=1,(NLOOPLINE-1) | ||
1113 | 191 | DO K=1,J | ||
1114 | 192 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
1115 | 193 | ENDDO | ||
1116 | 194 | ENDDO | ||
1117 | 195 | ENDDO | ||
1118 | 196 | |||
1119 | 197 | C Now convert the loop momenta to Golem95 conventions | ||
1120 | 198 | DO I=0,3 | ||
1121 | 199 | PGOLEM(1,I)=0.0E0_KI | ||
1122 | 200 | DO J=2,NLOOPLINE | ||
1123 | 201 | PGOLEM(J,I)=PCT(I,J-1) | ||
1124 | 202 | ENDDO | ||
1125 | 203 | ENDDO | ||
1126 | 204 | |||
1127 | 205 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
1128 | 206 | C limits. | ||
1129 | 207 | CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
1130 | 208 | C Construct the golem internal matrices derived from the kinetic | ||
1131 | 209 | C one. | ||
1132 | 210 | CALL PREPARESMATRIX() | ||
1133 | 211 | |||
1134 | 212 | C Fill in the golem coefficents and compute the loop | ||
1135 | 213 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
1136 | 214 | RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
1137 | 215 | ELSE | ||
1138 | 216 | PASS_COEF_CHECK=.TRUE. | ||
1139 | 217 | SELECT CASE(RANK) | ||
1140 | 218 | CASE(0) | ||
1141 | 219 | CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0) | ||
1142 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1143 | 221 | COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
1144 | 222 | PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
1145 | 223 | ENDIF | ||
1146 | 224 | CASE(1) | ||
1147 | 225 | CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1) | ||
1148 | 226 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1149 | 227 | CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC) | ||
1150 | 228 | PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
1151 | 229 | ENDIF | ||
1152 | 230 | CASE(2) | ||
1153 | 231 | CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2) | ||
1154 | 232 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1155 | 233 | CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC) | ||
1156 | 234 | PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
1157 | 235 | ENDIF | ||
1158 | 236 | CASE(3) | ||
1159 | 237 | CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3) | ||
1160 | 238 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1161 | 239 | CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC) | ||
1162 | 240 | PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
1163 | 241 | ENDIF | ||
1164 | 242 | CASE(4) | ||
1165 | 243 | CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4) | ||
1166 | 244 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1167 | 245 | CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC) | ||
1168 | 246 | PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
1169 | 247 | ENDIF | ||
1170 | 248 | CASE(5) | ||
1171 | 249 | CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5) | ||
1172 | 250 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1173 | 251 | CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC) | ||
1174 | 252 | PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
1175 | 253 | ENDIF | ||
1176 | 254 | CASE(6) | ||
1177 | 255 | CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6) | ||
1178 | 256 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1179 | 257 | CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC) | ||
1180 | 258 | PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
1181 | 259 | ENDIF | ||
1182 | 260 | CASE DEFAULT | ||
1183 | 261 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
1184 | 262 | STOP | ||
1185 | 263 | END SELECT | ||
1186 | 264 | |||
1187 | 265 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
1188 | 266 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
1189 | 267 | WRITE(*,*)'Coefs form MadLoop5:' | ||
1190 | 268 | SELECT CASE(RANK) | ||
1191 | 269 | CASE(0) | ||
1192 | 270 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
1193 | 271 | CASE(1) | ||
1194 | 272 | CALL PRINT_COEFFS(COEFFS1) | ||
1195 | 273 | CASE(2) | ||
1196 | 274 | CALL PRINT_COEFFS(COEFFS2) | ||
1197 | 275 | CASE(3) | ||
1198 | 276 | CALL PRINT_COEFFS(COEFFS3) | ||
1199 | 277 | CASE(4) | ||
1200 | 278 | CALL PRINT_COEFFS(COEFFS4) | ||
1201 | 279 | CASE(5) | ||
1202 | 280 | CALL PRINT_COEFFS(COEFFS5) | ||
1203 | 281 | CASE(6) | ||
1204 | 282 | CALL PRINT_COEFFS(COEFFS6) | ||
1205 | 283 | END SELECT | ||
1206 | 284 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
1207 | 285 | SELECT CASE(RANK) | ||
1208 | 286 | CASE(0) | ||
1209 | 287 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
1210 | 288 | CASE(1) | ||
1211 | 289 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
1212 | 290 | CASE(2) | ||
1213 | 291 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
1214 | 292 | CASE(3) | ||
1215 | 293 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
1216 | 294 | CASE(4) | ||
1217 | 295 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
1218 | 296 | CASE(5) | ||
1219 | 297 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
1220 | 298 | CASE(6) | ||
1221 | 299 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
1222 | 300 | END SELECT | ||
1223 | 301 | STOP | ||
1224 | 302 | ENDIF | ||
1225 | 303 | |||
1226 | 304 | SELECT CASE(NLOOPLINE) | ||
1227 | 305 | CASE(1) | ||
1228 | 306 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
1229 | 307 | STOP | ||
1230 | 308 | CASE(2) | ||
1231 | 309 | SELECT CASE(RANK) | ||
1232 | 310 | CASE(0) | ||
1233 | 311 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
1234 | 312 | CASE(1) | ||
1235 | 313 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
1236 | 314 | CASE(2) | ||
1237 | 315 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
1238 | 316 | CASE(3) | ||
1239 | 317 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
1240 | 318 | CASE DEFAULT | ||
1241 | 319 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
1242 | 320 | STOP | ||
1243 | 321 | END SELECT | ||
1244 | 322 | CASE(3) | ||
1245 | 323 | SELECT CASE(RANK) | ||
1246 | 324 | CASE(0) | ||
1247 | 325 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
1248 | 326 | CASE(1) | ||
1249 | 327 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
1250 | 328 | CASE(2) | ||
1251 | 329 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
1252 | 330 | CASE(3) | ||
1253 | 331 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
1254 | 332 | CASE(4) | ||
1255 | 333 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
1256 | 334 | CASE DEFAULT | ||
1257 | 335 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
1258 | 336 | STOP | ||
1259 | 337 | END SELECT | ||
1260 | 338 | CASE(4) | ||
1261 | 339 | SELECT CASE(RANK) | ||
1262 | 340 | CASE(0) | ||
1263 | 341 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
1264 | 342 | CASE(1) | ||
1265 | 343 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
1266 | 344 | CASE(2) | ||
1267 | 345 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
1268 | 346 | CASE(3) | ||
1269 | 347 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
1270 | 348 | CASE(4) | ||
1271 | 349 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
1272 | 350 | CASE(5) | ||
1273 | 351 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
1274 | 352 | CASE DEFAULT | ||
1275 | 353 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
1276 | 354 | STOP | ||
1277 | 355 | END SELECT | ||
1278 | 356 | CASE(5) | ||
1279 | 357 | SELECT CASE(RANK) | ||
1280 | 358 | CASE(0) | ||
1281 | 359 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
1282 | 360 | CASE(1) | ||
1283 | 361 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
1284 | 362 | CASE(2) | ||
1285 | 363 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
1286 | 364 | CASE(3) | ||
1287 | 365 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
1288 | 366 | CASE(4) | ||
1289 | 367 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
1290 | 368 | CASE(5) | ||
1291 | 369 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
1292 | 370 | CASE(6) | ||
1293 | 371 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
1294 | 372 | CASE DEFAULT | ||
1295 | 373 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
1296 | 374 | STOP | ||
1297 | 375 | END SELECT | ||
1298 | 376 | CASE(6) | ||
1299 | 377 | SELECT CASE(RANK) | ||
1300 | 378 | CASE(0) | ||
1301 | 379 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
1302 | 380 | CASE(1) | ||
1303 | 381 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
1304 | 382 | CASE(2) | ||
1305 | 383 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
1306 | 384 | CASE(3) | ||
1307 | 385 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
1308 | 386 | CASE(4) | ||
1309 | 387 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
1310 | 388 | CASE(5) | ||
1311 | 389 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
1312 | 390 | CASE(6) | ||
1313 | 391 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
1314 | 392 | CASE DEFAULT | ||
1315 | 393 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
1316 | 394 | STOP | ||
1317 | 395 | END SELECT | ||
1318 | 396 | CASE DEFAULT | ||
1319 | 397 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
1320 | 398 | STOP | ||
1321 | 399 | END SELECT | ||
1322 | 400 | ENDIF | ||
1323 | 401 | |||
1324 | 402 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
1325 | 403 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
1326 | 404 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
1327 | 405 | $ *RES_GOLEM%%A) | ||
1328 | 406 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
1329 | 407 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
1330 | 408 | |||
1331 | 409 | C Finally free golem memory and cache | ||
1332 | 410 | CALL EXITGOLEM95() | ||
1333 | 411 | |||
1334 | 412 | END | ||
1335 | 413 | |||
1336 | 414 | FUNCTION GOLEM_LOOPNUM(Q,MU2) | ||
1337 | 415 | USE PRECISION_GOLEM, ONLY: KI | ||
1338 | 416 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
1339 | 417 | REAL(KI),INTENT(IN)::MU2 | ||
1340 | 418 | COMPLEX(KI)::GOLEM_LOOPNUM | ||
1341 | 419 | |||
1342 | 420 | COMPLEX*16 QQ(0:3),NUM | ||
1343 | 421 | INTEGER I | ||
1344 | 422 | |||
1345 | 423 | DO I=0,3 | ||
1346 | 424 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
1347 | 425 | ENDDO | ||
1348 | 426 | |||
1349 | 427 | CALL LOOPNUM(QQ,NUM) | ||
1350 | 428 | GOLEM_LOOPNUM=NUM | ||
1351 | 429 | RETURN | ||
1352 | 430 | END FUNCTION | ||
1353 | 431 | |||
1354 | 432 | SUBROUTINE INITGOLEM() | ||
1355 | 433 | C | ||
1356 | 434 | C INITIALISATION OF GOLEM | ||
1357 | 435 | C | ||
1358 | 436 | C | ||
1359 | 437 | C MODULE | ||
1360 | 438 | C | ||
1361 | 439 | USE PARAMETRE | ||
1362 | 440 | C | ||
1363 | 441 | C LOCAL VARIABLES | ||
1364 | 442 | C | ||
1365 | 443 | REAL*8 THRS | ||
1366 | 444 | LOGICAL EXT_NUM_FOR_R1 | ||
1367 | 445 | C | ||
1368 | 446 | C GLOBAL VARIABLES | ||
1369 | 447 | C | ||
1370 | 448 | INCLUDE 'MadLoopParams.inc' | ||
1371 | 449 | C ---------- | ||
1372 | 450 | C BEGIN CODE | ||
1373 | 451 | C ---------- | ||
1374 | 452 | |||
1375 | 453 | C DEFAULT PARAMETERS FOR GOLEM | ||
1376 | 454 | C ------------------------------- | ||
1377 | 455 | C One can chose here to have either just the rational R1 piece | ||
1378 | 456 | C or everything but the R2 | ||
1379 | 457 | RAT_OR_TOT_PAR = TOT | ||
1380 | 458 | |||
1381 | 459 | END | ||
1382 | 460 | |||
1383 | 461 | SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
1384 | 462 | C | ||
1385 | 463 | C MODULE | ||
1386 | 464 | C | ||
1387 | 465 | USE MATRICE_S | ||
1388 | 466 | USE PRECISION_GOLEM, ONLY: KI | ||
1389 | 467 | C | ||
1390 | 468 | C ARGUMENTS | ||
1391 | 469 | C | ||
1392 | 470 | INTEGER NLOOPLINE | ||
1393 | 471 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
1394 | 472 | COMPLEX(KI) M2L(NLOOPLINE) | ||
1395 | 473 | C | ||
1396 | 474 | C LOCAL VARIABLES | ||
1397 | 475 | C | ||
1398 | 476 | INTEGER I,J | ||
1399 | 477 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
1400 | 478 | C ---------- | ||
1401 | 479 | C BEGIN CODE | ||
1402 | 480 | C ---------- | ||
1403 | 481 | |||
1404 | 482 | CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG) | ||
1405 | 483 | |||
1406 | 484 | DO I=1,NLOOPLINE | ||
1407 | 485 | DO J=1,NLOOPLINE | ||
1408 | 486 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
1409 | 487 | ENDDO | ||
1410 | 488 | ENDDO | ||
1411 | 489 | |||
1412 | 490 | END | ||
1413 | 491 | |||
1414 | 492 | FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
1415 | 493 | |||
1416 | 494 | USE PRECISION_GOLEM, ONLY: KI | ||
1417 | 495 | COMPLEX(KI) COEFS_A,COEFS_B | ||
1418 | 496 | REAL*8 COEF_CHECK_THRS | ||
1419 | 497 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1420 | 498 | REAL*8 DENOM,NUM | ||
1421 | 499 | LOGICAL COMPARE_COEFS_0 | ||
1422 | 500 | |||
1423 | 501 | NUM = ABS(COEFS_A-COEFS_B) | ||
1424 | 502 | DENOM = ABS(COEFS_A+COEFS_B) | ||
1425 | 503 | IF(DENOM.GT.0D0)THEN | ||
1426 | 504 | COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1427 | 505 | ELSE | ||
1428 | 506 | COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
1429 | 507 | ENDIF | ||
1430 | 508 | |||
1431 | 509 | END | ||
1432 | 510 | |||
1433 | 511 | FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
1434 | 512 | |||
1435 | 513 | USE TENS_REC | ||
1436 | 514 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
1437 | 515 | REAL*8 COEF_CHECK_THRS | ||
1438 | 516 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1439 | 517 | REAL*8 DENOM,NUM | ||
1440 | 518 | LOGICAL COMPARE_COEFS_1 | ||
1441 | 519 | |||
1442 | 520 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1443 | 521 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1444 | 522 | $ ) | ||
1445 | 523 | |||
1446 | 524 | IF(DENOM.GT.0D0)THEN | ||
1447 | 525 | COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1448 | 526 | ELSE | ||
1449 | 527 | COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
1450 | 528 | ENDIF | ||
1451 | 529 | |||
1452 | 530 | END | ||
1453 | 531 | |||
1454 | 532 | FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
1455 | 533 | |||
1456 | 534 | USE TENS_REC | ||
1457 | 535 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
1458 | 536 | REAL*8 COEF_CHECK_THRS | ||
1459 | 537 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1460 | 538 | REAL*8 DENOM,NUM | ||
1461 | 539 | LOGICAL COMPARE_COEFS_2 | ||
1462 | 540 | |||
1463 | 541 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1464 | 542 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
1465 | 543 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1466 | 544 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
1467 | 545 | IF(DENOM.GT.0D0)THEN | ||
1468 | 546 | COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1469 | 547 | ELSE | ||
1470 | 548 | COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
1471 | 549 | ENDIF | ||
1472 | 550 | |||
1473 | 551 | END | ||
1474 | 552 | |||
1475 | 553 | FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
1476 | 554 | |||
1477 | 555 | USE TENS_REC | ||
1478 | 556 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
1479 | 557 | REAL*8 COEF_CHECK_THRS | ||
1480 | 558 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1481 | 559 | REAL*8 DENOM,NUM | ||
1482 | 560 | LOGICAL COMPARE_COEFS_3 | ||
1483 | 561 | |||
1484 | 562 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1485 | 563 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
1486 | 564 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1487 | 565 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
1488 | 566 | $ ) | ||
1489 | 567 | IF(DENOM.GT.0D0)THEN | ||
1490 | 568 | COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1491 | 569 | ELSE | ||
1492 | 570 | COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
1493 | 571 | ENDIF | ||
1494 | 572 | |||
1495 | 573 | END | ||
1496 | 574 | |||
1497 | 575 | FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
1498 | 576 | |||
1499 | 577 | USE TENS_REC | ||
1500 | 578 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
1501 | 579 | REAL*8 COEF_CHECK_THRS | ||
1502 | 580 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1503 | 581 | REAL*8 DENOM,NUM | ||
1504 | 582 | LOGICAL COMPARE_COEFS_4 | ||
1505 | 583 | |||
1506 | 584 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1507 | 585 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
1508 | 586 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
1509 | 587 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1510 | 588 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
1511 | 589 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
1512 | 590 | IF(DENOM.GT.0D0)THEN | ||
1513 | 591 | COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1514 | 592 | ELSE | ||
1515 | 593 | COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
1516 | 594 | ENDIF | ||
1517 | 595 | |||
1518 | 596 | END | ||
1519 | 597 | |||
1520 | 598 | FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
1521 | 599 | |||
1522 | 600 | USE TENS_REC | ||
1523 | 601 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
1524 | 602 | REAL*8 COEF_CHECK_THRS | ||
1525 | 603 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1526 | 604 | REAL*8 DENOM,NUM | ||
1527 | 605 | LOGICAL COMPARE_COEFS_5 | ||
1528 | 606 | |||
1529 | 607 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1530 | 608 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
1531 | 609 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
1532 | 610 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1533 | 611 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
1534 | 612 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
1535 | 613 | IF(DENOM.GT.0D0)THEN | ||
1536 | 614 | COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1537 | 615 | ELSE | ||
1538 | 616 | COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
1539 | 617 | ENDIF | ||
1540 | 618 | |||
1541 | 619 | END | ||
1542 | 620 | |||
1543 | 621 | FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
1544 | 622 | |||
1545 | 623 | USE TENS_REC | ||
1546 | 624 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
1547 | 625 | REAL*8 COEF_CHECK_THRS | ||
1548 | 626 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1549 | 627 | REAL*8 DENOM,NUM | ||
1550 | 628 | LOGICAL COMPARE_COEFS_6 | ||
1551 | 629 | |||
1552 | 630 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
1553 | 631 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
1554 | 632 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
1555 | 633 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
1556 | 634 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
1557 | 635 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
1558 | 636 | IF(DENOM.GT.0D0)THEN | ||
1559 | 637 | COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
1560 | 638 | ELSE | ||
1561 | 639 | COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
1562 | 640 | ENDIF | ||
1563 | 641 | |||
1564 | 642 | END | ||
1565 | 643 | |||
1566 | 644 | |||
1567 | 645 | SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
1568 | 646 | USE PRECISION_GOLEM, ONLY: KI | ||
1569 | 647 | INCLUDE 'coef_specs.inc' | ||
1570 | 648 | INCLUDE 'loop_max_coefs.inc' | ||
1571 | 649 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1572 | 650 | COMPLEX(KI) GOLEM_COEFS | ||
1573 | 651 | GOLEM_COEFS=ML_COEFS(0) | ||
1574 | 652 | END | ||
1575 | 653 | |||
1576 | 654 | SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
1577 | 655 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
1578 | 656 | INCLUDE 'coef_specs.inc' | ||
1579 | 657 | INCLUDE 'loop_max_coefs.inc' | ||
1580 | 658 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1581 | 659 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
1582 | 660 | C Constant coefficient | ||
1583 | 661 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
1584 | 662 | C Coefficient q(0) | ||
1585 | 663 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
1586 | 664 | C Coefficient q(1) | ||
1587 | 665 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
1588 | 666 | C Coefficient q(2) | ||
1589 | 667 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
1590 | 668 | C Coefficient q(3) | ||
1591 | 669 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
1592 | 670 | END | ||
1593 | 671 | |||
1594 | 672 | SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
1595 | 673 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
1596 | 674 | INCLUDE 'coef_specs.inc' | ||
1597 | 675 | INCLUDE 'loop_max_coefs.inc' | ||
1598 | 676 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1599 | 677 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
1600 | 678 | C Constant coefficient | ||
1601 | 679 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
1602 | 680 | C Coefficient q(0) | ||
1603 | 681 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
1604 | 682 | C Coefficient q(0)^2 | ||
1605 | 683 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
1606 | 684 | C Coefficient q(1) | ||
1607 | 685 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
1608 | 686 | C Coefficient q(1)^2 | ||
1609 | 687 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
1610 | 688 | C Coefficient q(2) | ||
1611 | 689 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
1612 | 690 | C Coefficient q(2)^2 | ||
1613 | 691 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
1614 | 692 | C Coefficient q(3) | ||
1615 | 693 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
1616 | 694 | C Coefficient q(3)^2 | ||
1617 | 695 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
1618 | 696 | C Coefficient q(0)*q(1) | ||
1619 | 697 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
1620 | 698 | C Coefficient q(0)*q(2) | ||
1621 | 699 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
1622 | 700 | C Coefficient q(0)*q(3) | ||
1623 | 701 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
1624 | 702 | C Coefficient q(1)*q(2) | ||
1625 | 703 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
1626 | 704 | C Coefficient q(1)*q(3) | ||
1627 | 705 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
1628 | 706 | C Coefficient q(2)*q(3) | ||
1629 | 707 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
1630 | 708 | END | ||
1631 | 709 | |||
1632 | 710 | SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
1633 | 711 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
1634 | 712 | INCLUDE 'coef_specs.inc' | ||
1635 | 713 | INCLUDE 'loop_max_coefs.inc' | ||
1636 | 714 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1637 | 715 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
1638 | 716 | C Dummy routine for FILL_GOLEM_COEFS_3 | ||
1639 | 717 | STOP 'ERROR: 3 > 2' | ||
1640 | 718 | END | ||
1641 | 719 | |||
1642 | 720 | SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
1643 | 721 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
1644 | 722 | INCLUDE 'coef_specs.inc' | ||
1645 | 723 | INCLUDE 'loop_max_coefs.inc' | ||
1646 | 724 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1647 | 725 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
1648 | 726 | C Dummy routine for FILL_GOLEM_COEFS_4 | ||
1649 | 727 | STOP 'ERROR: 4 > 2' | ||
1650 | 728 | END | ||
1651 | 729 | |||
1652 | 730 | SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
1653 | 731 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
1654 | 732 | INCLUDE 'coef_specs.inc' | ||
1655 | 733 | INCLUDE 'loop_max_coefs.inc' | ||
1656 | 734 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1657 | 735 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
1658 | 736 | C Dummy routine for FILL_GOLEM_COEFS_5 | ||
1659 | 737 | STOP 'ERROR: 5 > 2' | ||
1660 | 738 | END | ||
1661 | 739 | |||
1662 | 740 | SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
1663 | 741 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
1664 | 742 | INCLUDE 'coef_specs.inc' | ||
1665 | 743 | INCLUDE 'loop_max_coefs.inc' | ||
1666 | 744 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
1667 | 745 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
1668 | 746 | C Dummy routine for FILL_GOLEM_COEFS_6 | ||
1669 | 747 | STOP 'ERROR: 6 > 2' | ||
1670 | 748 | END | ||
1671 | 749 | 0 | ||
1672 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f' | |||
1673 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f 2016-08-07 07:16:07 +0000 | |||
1674 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f 2018-11-09 08:24:41 +0000 | |||
1675 | @@ -96,17 +96,9 @@ | |||
1676 | 96 | ENDIF | 96 | ENDIF |
1677 | 97 | 97 | ||
1678 | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
1690 | 99 | C Using Golem95 | 99 | C Golem95 not available |
1691 | 100 | C PDEN is dummy for Golem95 so we just initialize it to zero | 100 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
1692 | 101 | C here so as to use it for the function SWITCHORDER | 101 | STOP |
1682 | 102 | DO I=0,3 | ||
1683 | 103 | DO J=1,NLOOPLINE-1 | ||
1684 | 104 | PDEN(I,J)=0.0D0 | ||
1685 | 105 | ENDDO | ||
1686 | 106 | ENDDO | ||
1687 | 107 | CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
1688 | 108 | CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
1689 | 109 | RETURN | ||
1693 | 110 | ENDIF | 102 | ENDIF |
1694 | 111 | 103 | ||
1695 | 112 | C INITIALIZE TIR IF NEEDED | 104 | C INITIALIZE TIR IF NEEDED |
1696 | 113 | 105 | ||
1697 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f' | |||
1698 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f 2017-08-14 07:04:15 +0000 | |||
1699 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f 2018-11-09 08:24:41 +0000 | |||
1700 | @@ -244,7 +244,7 @@ | |||
1701 | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
1702 | 245 | C AVAILABLE OR NOT | 245 | C AVAILABLE OR NOT |
1703 | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
1705 | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
1706 | 248 | $ ,.TRUE.,.TRUE./ | 248 | $ ,.TRUE.,.TRUE./ |
1707 | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
1708 | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
1709 | 251 | 251 | ||
1710 | === removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f' | |||
1711 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f 2016-08-07 07:16:07 +0000 | |||
1712 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f 1970-01-01 00:00:00 +0000 | |||
1713 | @@ -1,748 +0,0 @@ | |||
1714 | 1 | SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
1715 | 2 | C | ||
1716 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
1717 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
1718 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
1719 | 6 | C | ||
1720 | 7 | C Interface between MG5 and Golem95. | ||
1721 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
1722 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
1723 | 10 | C NLOOPLINE < 6. | ||
1724 | 11 | C | ||
1725 | 12 | C Process: u d~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
1726 | 13 | C Process: c s~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
1727 | 14 | C | ||
1728 | 15 | C | ||
1729 | 16 | C MODULES | ||
1730 | 17 | C | ||
1731 | 18 | USE MATRICE_S | ||
1732 | 19 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
1733 | 20 | USE PRECISION_GOLEM, ONLY: KI | ||
1734 | 21 | USE TENS_COMB | ||
1735 | 22 | USE TENS_REC | ||
1736 | 23 | USE FORM_FACTOR_1P, ONLY: A10 | ||
1737 | 24 | USE FORM_FACTOR_2P, ONLY: A20 | ||
1738 | 25 | USE FORM_FACTOR_3P, ONLY: A30 | ||
1739 | 26 | USE FORM_FACTOR_4P, ONLY: A40 | ||
1740 | 27 | USE FORM_FACTOR_5P, ONLY: A50 | ||
1741 | 28 | USE FORM_FACTOR_6P, ONLY: A60 | ||
1742 | 29 | IMPLICIT NONE | ||
1743 | 30 | C | ||
1744 | 31 | C CONSTANTS | ||
1745 | 32 | C | ||
1746 | 33 | INTEGER NEXTERNAL | ||
1747 | 34 | PARAMETER (NEXTERNAL=3) | ||
1748 | 35 | LOGICAL CHECKPCONSERVATION | ||
1749 | 36 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
1750 | 37 | REAL*8 NORMALIZATION | ||
1751 | 38 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
1752 | 39 | $ *2)) | ||
1753 | 40 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
1754 | 41 | $ ,0.0_KI,0.0_KI/) | ||
1755 | 42 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
1756 | 43 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
1757 | 44 | C directly from | ||
1758 | 45 | C numerator using golem internal reconstruction routine | ||
1759 | 46 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
1760 | 47 | C against | ||
1761 | 48 | C MadLoop internal ones. | ||
1762 | 49 | INTEGER GOLEM_RUN_MODE | ||
1763 | 50 | PARAMETER (GOLEM_RUN_MODE=1) | ||
1764 | 51 | C The following is the acceptance threshold used for | ||
1765 | 52 | C GOLEM_RUN_MODE = 3 | ||
1766 | 53 | REAL*8 COEF_CHECK_THRS | ||
1767 | 54 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
1768 | 55 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
1769 | 56 | |||
1770 | 57 | LOGICAL PASS_COEF_CHECK | ||
1771 | 58 | C | ||
1772 | 59 | C ARGUMENTS | ||
1773 | 60 | C | ||
1774 | 61 | INTEGER NLOOPLINE, RANK | ||
1775 | 62 | REAL*8 PL(0:3,NLOOPLINE) | ||
1776 | 63 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
1777 | 64 | REAL*8 REF_P | ||
1778 | 65 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
1779 | 66 | COMPLEX*16 M2L(NLOOPLINE) | ||
1780 | 67 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
1781 | 68 | COMPLEX*16 RES(3) | ||
1782 | 69 | LOGICAL STABLE | ||
1783 | 70 | C | ||
1784 | 71 | C LOCAL VARIABLES | ||
1785 | 72 | C | ||
1786 | 73 | INTEGER I, J, K | ||
1787 | 74 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
1788 | 75 | |||
1789 | 76 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
1790 | 77 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
1791 | 78 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
1792 | 79 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
1793 | 80 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
1794 | 81 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
1795 | 82 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
1796 | 83 | |||
1797 | 84 | C The pinch propagator optimization is not used, so for now it is | ||
1798 | 85 | C always 0. | ||
1799 | 86 | INTEGER PINCH | ||
1800 | 87 | C | ||
1801 | 88 | C EXTERNAL FUNCTIONS | ||
1802 | 89 | C | ||
1803 | 90 | COMPLEX(KI) GOLEM_LOOPNUM | ||
1804 | 91 | EXTERNAL GOLEM_LOOPNUM | ||
1805 | 92 | LOGICAL COMPARE_COEFS_0 | ||
1806 | 93 | LOGICAL COMPARE_COEFS_1 | ||
1807 | 94 | LOGICAL COMPARE_COEFS_2 | ||
1808 | 95 | LOGICAL COMPARE_COEFS_3 | ||
1809 | 96 | LOGICAL COMPARE_COEFS_4 | ||
1810 | 97 | LOGICAL COMPARE_COEFS_5 | ||
1811 | 98 | LOGICAL COMPARE_COEFS_6 | ||
1812 | 99 | C | ||
1813 | 100 | C GLOBAL VARIABLES | ||
1814 | 101 | C | ||
1815 | 102 | INCLUDE 'coupl.inc' | ||
1816 | 103 | INTEGER CTMODE | ||
1817 | 104 | REAL*8 LSCALE | ||
1818 | 105 | COMMON/CT/LSCALE,CTMODE | ||
1819 | 106 | |||
1820 | 107 | INTEGER ID,SQSOINDEX,R | ||
1821 | 108 | COMMON/LOOP/ID,SQSOINDEX,R | ||
1822 | 109 | |||
1823 | 110 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
1824 | 111 | $ ,COLLIERINIT | ||
1825 | 112 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
1826 | 113 | $ ,NINJAINIT,COLLIERINIT | ||
1827 | 114 | |||
1828 | 115 | INTEGER NLOOPGROUPS | ||
1829 | 116 | PARAMETER (NLOOPGROUPS=1) | ||
1830 | 117 | INTEGER NSQUAREDSO | ||
1831 | 118 | PARAMETER (NSQUAREDSO=1) | ||
1832 | 119 | INCLUDE 'loop_max_coefs.inc' | ||
1833 | 120 | |||
1834 | 121 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
1835 | 122 | COMMON/LCOEFS/LOOPCOEFS | ||
1836 | 123 | C ---------- | ||
1837 | 124 | C BEGIN CODE | ||
1838 | 125 | C ---------- | ||
1839 | 126 | |||
1840 | 127 | C The CT initialization is also performed here if not done already | ||
1841 | 128 | C because it calls MPINIT of OneLOop which is necessary on some | ||
1842 | 129 | C system | ||
1843 | 130 | IF (CTINIT) THEN | ||
1844 | 131 | CTINIT=.FALSE. | ||
1845 | 132 | CALL INITCT() | ||
1846 | 133 | ENDIF | ||
1847 | 134 | |||
1848 | 135 | C INITIALIZE GOLEM IF NEEDED | ||
1849 | 136 | IF (GOLEMINIT) THEN | ||
1850 | 137 | GOLEMINIT=.FALSE. | ||
1851 | 138 | CALL INITGOLEM() | ||
1852 | 139 | ENDIF | ||
1853 | 140 | |||
1854 | 141 | C No stability test intrisic to Golem95 now | ||
1855 | 142 | STABLE=.TRUE. | ||
1856 | 143 | |||
1857 | 144 | C This initialization must be done for each reduction because we | ||
1858 | 145 | C have not setup anyoptimization using pinched propagators yet. | ||
1859 | 146 | CALL INITGOLEM95(NLOOPLINE) | ||
1860 | 147 | PINCH = 0 | ||
1861 | 148 | |||
1862 | 149 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
1863 | 150 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
1864 | 151 | |||
1865 | 152 | C CONVERT THE MASSES TO BE COMPLEX | ||
1866 | 153 | DO I=1,NLOOPLINE | ||
1867 | 154 | M2LGOLEM(I)=M2L(I) | ||
1868 | 155 | ENDDO | ||
1869 | 156 | |||
1870 | 157 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
1871 | 158 | DO I=0,3 | ||
1872 | 159 | ABSPCT(I) = 0.D0 | ||
1873 | 160 | DO J=0,(NLOOPLINE-1) | ||
1874 | 161 | PCT(I,J)=0.D0 | ||
1875 | 162 | ENDDO | ||
1876 | 163 | ENDDO | ||
1877 | 164 | DO I=0,3 | ||
1878 | 165 | DO J=1,NLOOPLINE | ||
1879 | 166 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
1880 | 167 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
1881 | 168 | ENDDO | ||
1882 | 169 | ENDDO | ||
1883 | 170 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
1884 | 171 | DO I=0,3 | ||
1885 | 172 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
1886 | 173 | ENDDO | ||
1887 | 174 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
1888 | 175 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
1889 | 176 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
1890 | 177 | STOP 'energy is not conserved' | ||
1891 | 178 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
1892 | 179 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
1893 | 180 | STOP 'px is not conserved' | ||
1894 | 181 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
1895 | 182 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
1896 | 183 | STOP 'py is not conserved' | ||
1897 | 184 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
1898 | 185 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
1899 | 186 | STOP 'pz is not conserved' | ||
1900 | 187 | ENDIF | ||
1901 | 188 | ENDIF | ||
1902 | 189 | DO I=0,3 | ||
1903 | 190 | DO J=1,(NLOOPLINE-1) | ||
1904 | 191 | DO K=1,J | ||
1905 | 192 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
1906 | 193 | ENDDO | ||
1907 | 194 | ENDDO | ||
1908 | 195 | ENDDO | ||
1909 | 196 | |||
1910 | 197 | C Now convert the loop momenta to Golem95 conventions | ||
1911 | 198 | DO I=0,3 | ||
1912 | 199 | PGOLEM(1,I)=0.0E0_KI | ||
1913 | 200 | DO J=2,NLOOPLINE | ||
1914 | 201 | PGOLEM(J,I)=PCT(I,J-1) | ||
1915 | 202 | ENDDO | ||
1916 | 203 | ENDDO | ||
1917 | 204 | |||
1918 | 205 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
1919 | 206 | C limits. | ||
1920 | 207 | CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
1921 | 208 | C Construct the golem internal matrices derived from the kinetic | ||
1922 | 209 | C one. | ||
1923 | 210 | CALL PREPARESMATRIX() | ||
1924 | 211 | |||
1925 | 212 | C Fill in the golem coefficents and compute the loop | ||
1926 | 213 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
1927 | 214 | RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
1928 | 215 | ELSE | ||
1929 | 216 | PASS_COEF_CHECK=.TRUE. | ||
1930 | 217 | SELECT CASE(RANK) | ||
1931 | 218 | CASE(0) | ||
1932 | 219 | CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0) | ||
1933 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1934 | 221 | COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
1935 | 222 | PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
1936 | 223 | ENDIF | ||
1937 | 224 | CASE(1) | ||
1938 | 225 | CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1) | ||
1939 | 226 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1940 | 227 | CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC) | ||
1941 | 228 | PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
1942 | 229 | ENDIF | ||
1943 | 230 | CASE(2) | ||
1944 | 231 | CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2) | ||
1945 | 232 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1946 | 233 | CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC) | ||
1947 | 234 | PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
1948 | 235 | ENDIF | ||
1949 | 236 | CASE(3) | ||
1950 | 237 | CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3) | ||
1951 | 238 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1952 | 239 | CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC) | ||
1953 | 240 | PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
1954 | 241 | ENDIF | ||
1955 | 242 | CASE(4) | ||
1956 | 243 | CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4) | ||
1957 | 244 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1958 | 245 | CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC) | ||
1959 | 246 | PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
1960 | 247 | ENDIF | ||
1961 | 248 | CASE(5) | ||
1962 | 249 | CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5) | ||
1963 | 250 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1964 | 251 | CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC) | ||
1965 | 252 | PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
1966 | 253 | ENDIF | ||
1967 | 254 | CASE(6) | ||
1968 | 255 | CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6) | ||
1969 | 256 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
1970 | 257 | CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC) | ||
1971 | 258 | PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
1972 | 259 | ENDIF | ||
1973 | 260 | CASE DEFAULT | ||
1974 | 261 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
1975 | 262 | STOP | ||
1976 | 263 | END SELECT | ||
1977 | 264 | |||
1978 | 265 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
1979 | 266 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
1980 | 267 | WRITE(*,*)'Coefs form MadLoop5:' | ||
1981 | 268 | SELECT CASE(RANK) | ||
1982 | 269 | CASE(0) | ||
1983 | 270 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
1984 | 271 | CASE(1) | ||
1985 | 272 | CALL PRINT_COEFFS(COEFFS1) | ||
1986 | 273 | CASE(2) | ||
1987 | 274 | CALL PRINT_COEFFS(COEFFS2) | ||
1988 | 275 | CASE(3) | ||
1989 | 276 | CALL PRINT_COEFFS(COEFFS3) | ||
1990 | 277 | CASE(4) | ||
1991 | 278 | CALL PRINT_COEFFS(COEFFS4) | ||
1992 | 279 | CASE(5) | ||
1993 | 280 | CALL PRINT_COEFFS(COEFFS5) | ||
1994 | 281 | CASE(6) | ||
1995 | 282 | CALL PRINT_COEFFS(COEFFS6) | ||
1996 | 283 | END SELECT | ||
1997 | 284 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
1998 | 285 | SELECT CASE(RANK) | ||
1999 | 286 | CASE(0) | ||
2000 | 287 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
2001 | 288 | CASE(1) | ||
2002 | 289 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
2003 | 290 | CASE(2) | ||
2004 | 291 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
2005 | 292 | CASE(3) | ||
2006 | 293 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
2007 | 294 | CASE(4) | ||
2008 | 295 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
2009 | 296 | CASE(5) | ||
2010 | 297 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
2011 | 298 | CASE(6) | ||
2012 | 299 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
2013 | 300 | END SELECT | ||
2014 | 301 | STOP | ||
2015 | 302 | ENDIF | ||
2016 | 303 | |||
2017 | 304 | SELECT CASE(NLOOPLINE) | ||
2018 | 305 | CASE(1) | ||
2019 | 306 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
2020 | 307 | STOP | ||
2021 | 308 | CASE(2) | ||
2022 | 309 | SELECT CASE(RANK) | ||
2023 | 310 | CASE(0) | ||
2024 | 311 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
2025 | 312 | CASE(1) | ||
2026 | 313 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
2027 | 314 | CASE(2) | ||
2028 | 315 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
2029 | 316 | CASE(3) | ||
2030 | 317 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
2031 | 318 | CASE DEFAULT | ||
2032 | 319 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
2033 | 320 | STOP | ||
2034 | 321 | END SELECT | ||
2035 | 322 | CASE(3) | ||
2036 | 323 | SELECT CASE(RANK) | ||
2037 | 324 | CASE(0) | ||
2038 | 325 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
2039 | 326 | CASE(1) | ||
2040 | 327 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
2041 | 328 | CASE(2) | ||
2042 | 329 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
2043 | 330 | CASE(3) | ||
2044 | 331 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
2045 | 332 | CASE(4) | ||
2046 | 333 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
2047 | 334 | CASE DEFAULT | ||
2048 | 335 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
2049 | 336 | STOP | ||
2050 | 337 | END SELECT | ||
2051 | 338 | CASE(4) | ||
2052 | 339 | SELECT CASE(RANK) | ||
2053 | 340 | CASE(0) | ||
2054 | 341 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
2055 | 342 | CASE(1) | ||
2056 | 343 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
2057 | 344 | CASE(2) | ||
2058 | 345 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
2059 | 346 | CASE(3) | ||
2060 | 347 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
2061 | 348 | CASE(4) | ||
2062 | 349 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
2063 | 350 | CASE(5) | ||
2064 | 351 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
2065 | 352 | CASE DEFAULT | ||
2066 | 353 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
2067 | 354 | STOP | ||
2068 | 355 | END SELECT | ||
2069 | 356 | CASE(5) | ||
2070 | 357 | SELECT CASE(RANK) | ||
2071 | 358 | CASE(0) | ||
2072 | 359 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
2073 | 360 | CASE(1) | ||
2074 | 361 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
2075 | 362 | CASE(2) | ||
2076 | 363 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
2077 | 364 | CASE(3) | ||
2078 | 365 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
2079 | 366 | CASE(4) | ||
2080 | 367 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
2081 | 368 | CASE(5) | ||
2082 | 369 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
2083 | 370 | CASE(6) | ||
2084 | 371 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
2085 | 372 | CASE DEFAULT | ||
2086 | 373 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
2087 | 374 | STOP | ||
2088 | 375 | END SELECT | ||
2089 | 376 | CASE(6) | ||
2090 | 377 | SELECT CASE(RANK) | ||
2091 | 378 | CASE(0) | ||
2092 | 379 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
2093 | 380 | CASE(1) | ||
2094 | 381 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
2095 | 382 | CASE(2) | ||
2096 | 383 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
2097 | 384 | CASE(3) | ||
2098 | 385 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
2099 | 386 | CASE(4) | ||
2100 | 387 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
2101 | 388 | CASE(5) | ||
2102 | 389 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
2103 | 390 | CASE(6) | ||
2104 | 391 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
2105 | 392 | CASE DEFAULT | ||
2106 | 393 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
2107 | 394 | STOP | ||
2108 | 395 | END SELECT | ||
2109 | 396 | CASE DEFAULT | ||
2110 | 397 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
2111 | 398 | STOP | ||
2112 | 399 | END SELECT | ||
2113 | 400 | ENDIF | ||
2114 | 401 | |||
2115 | 402 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
2116 | 403 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
2117 | 404 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
2118 | 405 | $ *RES_GOLEM%%A) | ||
2119 | 406 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
2120 | 407 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
2121 | 408 | |||
2122 | 409 | C Finally free golem memory and cache | ||
2123 | 410 | CALL EXITGOLEM95() | ||
2124 | 411 | |||
2125 | 412 | END | ||
2126 | 413 | |||
2127 | 414 | FUNCTION GOLEM_LOOPNUM(Q,MU2) | ||
2128 | 415 | USE PRECISION_GOLEM, ONLY: KI | ||
2129 | 416 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
2130 | 417 | REAL(KI),INTENT(IN)::MU2 | ||
2131 | 418 | COMPLEX(KI)::GOLEM_LOOPNUM | ||
2132 | 419 | |||
2133 | 420 | COMPLEX*16 QQ(0:3),NUM | ||
2134 | 421 | INTEGER I | ||
2135 | 422 | |||
2136 | 423 | DO I=0,3 | ||
2137 | 424 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
2138 | 425 | ENDDO | ||
2139 | 426 | |||
2140 | 427 | CALL LOOPNUM(QQ,NUM) | ||
2141 | 428 | GOLEM_LOOPNUM=NUM | ||
2142 | 429 | RETURN | ||
2143 | 430 | END FUNCTION | ||
2144 | 431 | |||
2145 | 432 | SUBROUTINE INITGOLEM() | ||
2146 | 433 | C | ||
2147 | 434 | C INITIALISATION OF GOLEM | ||
2148 | 435 | C | ||
2149 | 436 | C | ||
2150 | 437 | C MODULE | ||
2151 | 438 | C | ||
2152 | 439 | USE PARAMETRE | ||
2153 | 440 | C | ||
2154 | 441 | C LOCAL VARIABLES | ||
2155 | 442 | C | ||
2156 | 443 | REAL*8 THRS | ||
2157 | 444 | LOGICAL EXT_NUM_FOR_R1 | ||
2158 | 445 | C | ||
2159 | 446 | C GLOBAL VARIABLES | ||
2160 | 447 | C | ||
2161 | 448 | INCLUDE 'MadLoopParams.inc' | ||
2162 | 449 | C ---------- | ||
2163 | 450 | C BEGIN CODE | ||
2164 | 451 | C ---------- | ||
2165 | 452 | |||
2166 | 453 | C DEFAULT PARAMETERS FOR GOLEM | ||
2167 | 454 | C ------------------------------- | ||
2168 | 455 | C One can chose here to have either just the rational R1 piece | ||
2169 | 456 | C or everything but the R2 | ||
2170 | 457 | RAT_OR_TOT_PAR = TOT | ||
2171 | 458 | |||
2172 | 459 | END | ||
2173 | 460 | |||
2174 | 461 | SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
2175 | 462 | C | ||
2176 | 463 | C MODULE | ||
2177 | 464 | C | ||
2178 | 465 | USE MATRICE_S | ||
2179 | 466 | USE PRECISION_GOLEM, ONLY: KI | ||
2180 | 467 | C | ||
2181 | 468 | C ARGUMENTS | ||
2182 | 469 | C | ||
2183 | 470 | INTEGER NLOOPLINE | ||
2184 | 471 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
2185 | 472 | COMPLEX(KI) M2L(NLOOPLINE) | ||
2186 | 473 | C | ||
2187 | 474 | C LOCAL VARIABLES | ||
2188 | 475 | C | ||
2189 | 476 | INTEGER I,J | ||
2190 | 477 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
2191 | 478 | C ---------- | ||
2192 | 479 | C BEGIN CODE | ||
2193 | 480 | C ---------- | ||
2194 | 481 | |||
2195 | 482 | CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG) | ||
2196 | 483 | |||
2197 | 484 | DO I=1,NLOOPLINE | ||
2198 | 485 | DO J=1,NLOOPLINE | ||
2199 | 486 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
2200 | 487 | ENDDO | ||
2201 | 488 | ENDDO | ||
2202 | 489 | |||
2203 | 490 | END | ||
2204 | 491 | |||
2205 | 492 | FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
2206 | 493 | |||
2207 | 494 | USE PRECISION_GOLEM, ONLY: KI | ||
2208 | 495 | COMPLEX(KI) COEFS_A,COEFS_B | ||
2209 | 496 | REAL*8 COEF_CHECK_THRS | ||
2210 | 497 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2211 | 498 | REAL*8 DENOM,NUM | ||
2212 | 499 | LOGICAL COMPARE_COEFS_0 | ||
2213 | 500 | |||
2214 | 501 | NUM = ABS(COEFS_A-COEFS_B) | ||
2215 | 502 | DENOM = ABS(COEFS_A+COEFS_B) | ||
2216 | 503 | IF(DENOM.GT.0D0)THEN | ||
2217 | 504 | COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2218 | 505 | ELSE | ||
2219 | 506 | COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
2220 | 507 | ENDIF | ||
2221 | 508 | |||
2222 | 509 | END | ||
2223 | 510 | |||
2224 | 511 | FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
2225 | 512 | |||
2226 | 513 | USE TENS_REC | ||
2227 | 514 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
2228 | 515 | REAL*8 COEF_CHECK_THRS | ||
2229 | 516 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2230 | 517 | REAL*8 DENOM,NUM | ||
2231 | 518 | LOGICAL COMPARE_COEFS_1 | ||
2232 | 519 | |||
2233 | 520 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2234 | 521 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2235 | 522 | $ ) | ||
2236 | 523 | |||
2237 | 524 | IF(DENOM.GT.0D0)THEN | ||
2238 | 525 | COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2239 | 526 | ELSE | ||
2240 | 527 | COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
2241 | 528 | ENDIF | ||
2242 | 529 | |||
2243 | 530 | END | ||
2244 | 531 | |||
2245 | 532 | FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
2246 | 533 | |||
2247 | 534 | USE TENS_REC | ||
2248 | 535 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
2249 | 536 | REAL*8 COEF_CHECK_THRS | ||
2250 | 537 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2251 | 538 | REAL*8 DENOM,NUM | ||
2252 | 539 | LOGICAL COMPARE_COEFS_2 | ||
2253 | 540 | |||
2254 | 541 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2255 | 542 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
2256 | 543 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2257 | 544 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
2258 | 545 | IF(DENOM.GT.0D0)THEN | ||
2259 | 546 | COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2260 | 547 | ELSE | ||
2261 | 548 | COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
2262 | 549 | ENDIF | ||
2263 | 550 | |||
2264 | 551 | END | ||
2265 | 552 | |||
2266 | 553 | FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
2267 | 554 | |||
2268 | 555 | USE TENS_REC | ||
2269 | 556 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
2270 | 557 | REAL*8 COEF_CHECK_THRS | ||
2271 | 558 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2272 | 559 | REAL*8 DENOM,NUM | ||
2273 | 560 | LOGICAL COMPARE_COEFS_3 | ||
2274 | 561 | |||
2275 | 562 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2276 | 563 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
2277 | 564 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2278 | 565 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
2279 | 566 | $ ) | ||
2280 | 567 | IF(DENOM.GT.0D0)THEN | ||
2281 | 568 | COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2282 | 569 | ELSE | ||
2283 | 570 | COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
2284 | 571 | ENDIF | ||
2285 | 572 | |||
2286 | 573 | END | ||
2287 | 574 | |||
2288 | 575 | FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
2289 | 576 | |||
2290 | 577 | USE TENS_REC | ||
2291 | 578 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
2292 | 579 | REAL*8 COEF_CHECK_THRS | ||
2293 | 580 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2294 | 581 | REAL*8 DENOM,NUM | ||
2295 | 582 | LOGICAL COMPARE_COEFS_4 | ||
2296 | 583 | |||
2297 | 584 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2298 | 585 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
2299 | 586 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
2300 | 587 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2301 | 588 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
2302 | 589 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
2303 | 590 | IF(DENOM.GT.0D0)THEN | ||
2304 | 591 | COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2305 | 592 | ELSE | ||
2306 | 593 | COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
2307 | 594 | ENDIF | ||
2308 | 595 | |||
2309 | 596 | END | ||
2310 | 597 | |||
2311 | 598 | FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
2312 | 599 | |||
2313 | 600 | USE TENS_REC | ||
2314 | 601 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
2315 | 602 | REAL*8 COEF_CHECK_THRS | ||
2316 | 603 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2317 | 604 | REAL*8 DENOM,NUM | ||
2318 | 605 | LOGICAL COMPARE_COEFS_5 | ||
2319 | 606 | |||
2320 | 607 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2321 | 608 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
2322 | 609 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
2323 | 610 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2324 | 611 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
2325 | 612 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
2326 | 613 | IF(DENOM.GT.0D0)THEN | ||
2327 | 614 | COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2328 | 615 | ELSE | ||
2329 | 616 | COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
2330 | 617 | ENDIF | ||
2331 | 618 | |||
2332 | 619 | END | ||
2333 | 620 | |||
2334 | 621 | FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
2335 | 622 | |||
2336 | 623 | USE TENS_REC | ||
2337 | 624 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
2338 | 625 | REAL*8 COEF_CHECK_THRS | ||
2339 | 626 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2340 | 627 | REAL*8 DENOM,NUM | ||
2341 | 628 | LOGICAL COMPARE_COEFS_6 | ||
2342 | 629 | |||
2343 | 630 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2344 | 631 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
2345 | 632 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
2346 | 633 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2347 | 634 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
2348 | 635 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
2349 | 636 | IF(DENOM.GT.0D0)THEN | ||
2350 | 637 | COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2351 | 638 | ELSE | ||
2352 | 639 | COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
2353 | 640 | ENDIF | ||
2354 | 641 | |||
2355 | 642 | END | ||
2356 | 643 | |||
2357 | 644 | |||
2358 | 645 | SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
2359 | 646 | USE PRECISION_GOLEM, ONLY: KI | ||
2360 | 647 | INCLUDE 'coef_specs.inc' | ||
2361 | 648 | INCLUDE 'loop_max_coefs.inc' | ||
2362 | 649 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2363 | 650 | COMPLEX(KI) GOLEM_COEFS | ||
2364 | 651 | GOLEM_COEFS=ML_COEFS(0) | ||
2365 | 652 | END | ||
2366 | 653 | |||
2367 | 654 | SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
2368 | 655 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
2369 | 656 | INCLUDE 'coef_specs.inc' | ||
2370 | 657 | INCLUDE 'loop_max_coefs.inc' | ||
2371 | 658 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2372 | 659 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
2373 | 660 | C Constant coefficient | ||
2374 | 661 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
2375 | 662 | C Coefficient q(0) | ||
2376 | 663 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
2377 | 664 | C Coefficient q(1) | ||
2378 | 665 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
2379 | 666 | C Coefficient q(2) | ||
2380 | 667 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
2381 | 668 | C Coefficient q(3) | ||
2382 | 669 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
2383 | 670 | END | ||
2384 | 671 | |||
2385 | 672 | SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
2386 | 673 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
2387 | 674 | INCLUDE 'coef_specs.inc' | ||
2388 | 675 | INCLUDE 'loop_max_coefs.inc' | ||
2389 | 676 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2390 | 677 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
2391 | 678 | C Constant coefficient | ||
2392 | 679 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
2393 | 680 | C Coefficient q(0) | ||
2394 | 681 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
2395 | 682 | C Coefficient q(0)^2 | ||
2396 | 683 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
2397 | 684 | C Coefficient q(1) | ||
2398 | 685 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
2399 | 686 | C Coefficient q(1)^2 | ||
2400 | 687 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
2401 | 688 | C Coefficient q(2) | ||
2402 | 689 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
2403 | 690 | C Coefficient q(2)^2 | ||
2404 | 691 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
2405 | 692 | C Coefficient q(3) | ||
2406 | 693 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
2407 | 694 | C Coefficient q(3)^2 | ||
2408 | 695 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
2409 | 696 | C Coefficient q(0)*q(1) | ||
2410 | 697 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
2411 | 698 | C Coefficient q(0)*q(2) | ||
2412 | 699 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
2413 | 700 | C Coefficient q(0)*q(3) | ||
2414 | 701 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
2415 | 702 | C Coefficient q(1)*q(2) | ||
2416 | 703 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
2417 | 704 | C Coefficient q(1)*q(3) | ||
2418 | 705 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
2419 | 706 | C Coefficient q(2)*q(3) | ||
2420 | 707 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
2421 | 708 | END | ||
2422 | 709 | |||
2423 | 710 | SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
2424 | 711 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
2425 | 712 | INCLUDE 'coef_specs.inc' | ||
2426 | 713 | INCLUDE 'loop_max_coefs.inc' | ||
2427 | 714 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2428 | 715 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
2429 | 716 | C Dummy routine for FILL_GOLEM_COEFS_3 | ||
2430 | 717 | STOP 'ERROR: 3 > 2' | ||
2431 | 718 | END | ||
2432 | 719 | |||
2433 | 720 | SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
2434 | 721 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
2435 | 722 | INCLUDE 'coef_specs.inc' | ||
2436 | 723 | INCLUDE 'loop_max_coefs.inc' | ||
2437 | 724 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2438 | 725 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
2439 | 726 | C Dummy routine for FILL_GOLEM_COEFS_4 | ||
2440 | 727 | STOP 'ERROR: 4 > 2' | ||
2441 | 728 | END | ||
2442 | 729 | |||
2443 | 730 | SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
2444 | 731 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
2445 | 732 | INCLUDE 'coef_specs.inc' | ||
2446 | 733 | INCLUDE 'loop_max_coefs.inc' | ||
2447 | 734 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2448 | 735 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
2449 | 736 | C Dummy routine for FILL_GOLEM_COEFS_5 | ||
2450 | 737 | STOP 'ERROR: 5 > 2' | ||
2451 | 738 | END | ||
2452 | 739 | |||
2453 | 740 | SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
2454 | 741 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
2455 | 742 | INCLUDE 'coef_specs.inc' | ||
2456 | 743 | INCLUDE 'loop_max_coefs.inc' | ||
2457 | 744 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
2458 | 745 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
2459 | 746 | C Dummy routine for FILL_GOLEM_COEFS_6 | ||
2460 | 747 | STOP 'ERROR: 6 > 2' | ||
2461 | 748 | END | ||
2462 | 749 | 0 | ||
2463 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f' | |||
2464 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f 2016-08-07 07:16:07 +0000 | |||
2465 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f 2018-11-09 08:24:41 +0000 | |||
2466 | @@ -96,17 +96,9 @@ | |||
2467 | 96 | ENDIF | 96 | ENDIF |
2468 | 97 | 97 | ||
2469 | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
2481 | 99 | C Using Golem95 | 99 | C Golem95 not available |
2482 | 100 | C PDEN is dummy for Golem95 so we just initialize it to zero | 100 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
2483 | 101 | C here so as to use it for the function SWITCHORDER | 101 | STOP |
2473 | 102 | DO I=0,3 | ||
2474 | 103 | DO J=1,NLOOPLINE-1 | ||
2475 | 104 | PDEN(I,J)=0.0D0 | ||
2476 | 105 | ENDDO | ||
2477 | 106 | ENDDO | ||
2478 | 107 | CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
2479 | 108 | CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
2480 | 109 | RETURN | ||
2484 | 110 | ENDIF | 102 | ENDIF |
2485 | 111 | 103 | ||
2486 | 112 | C INITIALIZE TIR IF NEEDED | 104 | C INITIALIZE TIR IF NEEDED |
2487 | 113 | 105 | ||
2488 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f' | |||
2489 | --- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f 2017-08-14 07:04:15 +0000 | |||
2490 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f 2018-11-09 08:24:41 +0000 | |||
2491 | @@ -244,7 +244,7 @@ | |||
2492 | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
2493 | 245 | C AVAILABLE OR NOT | 245 | C AVAILABLE OR NOT |
2494 | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
2496 | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
2497 | 248 | $ ,.TRUE.,.TRUE./ | 248 | $ ,.TRUE.,.TRUE./ |
2498 | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
2499 | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
2500 | 251 | 251 | ||
2501 | === modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f' | |||
2502 | --- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2017-11-24 12:17:04 +0000 | |||
2503 | +++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2018-11-09 08:24:41 +0000 | |||
2504 | @@ -73,6 +73,9 @@ | |||
2505 | 73 | REAL*8 POL(2) | 73 | REAL*8 POL(2) |
2506 | 74 | COMMON/TO_POLARIZATION/ POL | 74 | COMMON/TO_POLARIZATION/ POL |
2507 | 75 | 75 | ||
2508 | 76 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
2509 | 77 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
2510 | 78 | |||
2511 | 76 | INTEGER ISUM_HEL | 79 | INTEGER ISUM_HEL |
2512 | 77 | LOGICAL MULTI_CHANNEL | 80 | LOGICAL MULTI_CHANNEL |
2513 | 78 | COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL | 81 | COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL |
2514 | @@ -110,6 +113,7 @@ | |||
2515 | 110 | C ---------- | 113 | C ---------- |
2516 | 111 | C BEGIN CODE | 114 | C BEGIN CODE |
2517 | 112 | C ---------- | 115 | C ---------- |
2518 | 116 | |||
2519 | 113 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 | 117 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 |
2520 | 114 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 | 118 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 |
2521 | 115 | DO I=1,NEXTERNAL | 119 | DO I=1,NEXTERNAL |
2522 | @@ -290,6 +294,15 @@ | |||
2523 | 290 | C Needed for v4 models | 294 | C Needed for v4 models |
2524 | 291 | COMPLEX*16 DUM0,DUM1 | 295 | COMPLEX*16 DUM0,DUM1 |
2525 | 292 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ | 296 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ |
2526 | 297 | |||
2527 | 298 | DOUBLE PRECISION FK_ZERO | ||
2528 | 299 | DOUBLE PRECISION FK_WZ | ||
2529 | 300 | SAVE FK_ZERO | ||
2530 | 301 | SAVE FK_WZ | ||
2531 | 302 | |||
2532 | 303 | LOGICAL FIRST | ||
2533 | 304 | DATA FIRST /.TRUE./ | ||
2534 | 305 | SAVE FIRST | ||
2535 | 293 | C | 306 | C |
2536 | 294 | C FUNCTION | 307 | C FUNCTION |
2537 | 295 | C | 308 | C |
2538 | @@ -300,6 +313,9 @@ | |||
2539 | 300 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) | 313 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) |
2540 | 301 | COMMON/TO_AMPS/ AMP2, JAMP2 | 314 | COMMON/TO_AMPS/ AMP2, JAMP2 |
2541 | 302 | INCLUDE 'coupl.inc' | 315 | INCLUDE 'coupl.inc' |
2542 | 316 | |||
2543 | 317 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
2544 | 318 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
2545 | 303 | C | 319 | C |
2546 | 304 | C COLOR DATA | 320 | C COLOR DATA |
2547 | 305 | C | 321 | C |
2548 | @@ -312,26 +328,33 @@ | |||
2549 | 312 | C ---------- | 328 | C ---------- |
2550 | 313 | C BEGIN CODE | 329 | C BEGIN CODE |
2551 | 314 | C ---------- | 330 | C ---------- |
2552 | 331 | IF (FIRST) THEN | ||
2553 | 332 | FIRST=.FALSE. | ||
2554 | 333 | FK_WZ = SIGN(MAX(ABS(WZ), ABS(MZ*SMALL_WIDTH_TREATMENT)), WZ) | ||
2555 | 334 | FK_ZERO = 0D0 | ||
2556 | 335 | ENDIF | ||
2557 | 336 | |||
2558 | 337 | |||
2559 | 315 | CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1)) | 338 | CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1)) |
2560 | 316 | CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2)) | 339 | CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2)) |
2561 | 317 | CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3)) | 340 | CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3)) |
2562 | 318 | CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4)) | 341 | CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4)) |
2564 | 319 | CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO,ZERO,W(1,5)) | 342 | CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO, FK_ZERO,W(1,5)) |
2565 | 320 | C Amplitude(s) for diagram number 1 | 343 | C Amplitude(s) for diagram number 1 |
2566 | 321 | CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQQ,AMP(1)) | 344 | CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQQ,AMP(1)) |
2568 | 322 | CALL FFV1_3(W(1,1),W(1,2),GQED,ZERO,ZERO,W(1,5)) | 345 | CALL FFV1_3(W(1,1),W(1,2),GQED,ZERO, FK_ZERO,W(1,5)) |
2569 | 323 | C Amplitude(s) for diagram number 2 | 346 | C Amplitude(s) for diagram number 2 |
2570 | 324 | CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQED,AMP(2)) | 347 | CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQED,AMP(2)) |
2572 | 325 | CALL FFV1_2_3(W(1,1),W(1,2),GUZ1,GUZ2,MZ,WZ,W(1,5)) | 348 | CALL FFV1_2_3(W(1,1),W(1,2),GUZ1,GUZ2,MZ, FK_WZ,W(1,5)) |
2573 | 326 | C Amplitude(s) for diagram number 3 | 349 | C Amplitude(s) for diagram number 3 |
2574 | 327 | CALL FFV1_2_0(W(1,4),W(1,3),W(1,5),GUZ1,GUZ2,AMP(3)) | 350 | CALL FFV1_2_0(W(1,4),W(1,3),W(1,5),GUZ1,GUZ2,AMP(3)) |
2576 | 328 | CALL FFV1_3(W(1,1),W(1,3),GQQ,ZERO,ZERO,W(1,5)) | 351 | CALL FFV1_3(W(1,1),W(1,3),GQQ,ZERO, FK_ZERO,W(1,5)) |
2577 | 329 | C Amplitude(s) for diagram number 4 | 352 | C Amplitude(s) for diagram number 4 |
2578 | 330 | CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQQ,AMP(4)) | 353 | CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQQ,AMP(4)) |
2580 | 331 | CALL FFV1_3(W(1,1),W(1,3),GQED,ZERO,ZERO,W(1,5)) | 354 | CALL FFV1_3(W(1,1),W(1,3),GQED,ZERO, FK_ZERO,W(1,5)) |
2581 | 332 | C Amplitude(s) for diagram number 5 | 355 | C Amplitude(s) for diagram number 5 |
2582 | 333 | CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQED,AMP(5)) | 356 | CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQED,AMP(5)) |
2584 | 334 | CALL FFV1_2_3(W(1,1),W(1,3),GUZ1,GUZ2,MZ,WZ,W(1,5)) | 357 | CALL FFV1_2_3(W(1,1),W(1,3),GUZ1,GUZ2,MZ, FK_WZ,W(1,5)) |
2585 | 335 | C Amplitude(s) for diagram number 6 | 358 | C Amplitude(s) for diagram number 6 |
2586 | 336 | CALL FFV1_2_0(W(1,4),W(1,2),W(1,5),GUZ1,GUZ2,AMP(6)) | 359 | CALL FFV1_2_0(W(1,4),W(1,2),W(1,5),GUZ1,GUZ2,AMP(6)) |
2587 | 337 | C JAMPs contributing to orders ALL_ORDERS=1 | 360 | C JAMPs contributing to orders ALL_ORDERS=1 |
2588 | 338 | 361 | ||
2589 | === modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f' | |||
2590 | --- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2017-11-26 00:21:49 +0000 | |||
2591 | +++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2018-11-09 08:24:41 +0000 | |||
2592 | @@ -51,6 +51,7 @@ | |||
2593 | 51 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ | 51 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ |
2594 | 52 | REAL XRAN1 | 52 | REAL XRAN1 |
2595 | 53 | EXTERNAL XRAN1 | 53 | EXTERNAL XRAN1 |
2596 | 54 | |||
2597 | 54 | C | 55 | C |
2598 | 55 | C GLOBAL VARIABLES | 56 | C GLOBAL VARIABLES |
2599 | 56 | C | 57 | C |
2600 | @@ -71,6 +72,7 @@ | |||
2601 | 71 | DATA IDUM /-1/ | 72 | DATA IDUM /-1/ |
2602 | 72 | DATA XTRY, XREJ, NGOOD /0,0,0/ | 73 | DATA XTRY, XREJ, NGOOD /0,0,0/ |
2603 | 73 | SAVE YFRAC, IGOOD, JHEL | 74 | SAVE YFRAC, IGOOD, JHEL |
2604 | 75 | |||
2605 | 74 | DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/ | 76 | DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/ |
2606 | 75 | DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/ | 77 | DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/ |
2607 | 76 | DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/ | 78 | DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/ |
2608 | @@ -261,6 +263,13 @@ | |||
2609 | 261 | C Needed for v4 models | 263 | C Needed for v4 models |
2610 | 262 | COMPLEX*16 DUM0,DUM1 | 264 | COMPLEX*16 DUM0,DUM1 |
2611 | 263 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ | 265 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ |
2612 | 266 | |||
2613 | 267 | DOUBLE PRECISION FK_ZERO | ||
2614 | 268 | SAVE FK_ZERO | ||
2615 | 269 | |||
2616 | 270 | LOGICAL FIRST | ||
2617 | 271 | DATA FIRST /.TRUE./ | ||
2618 | 272 | SAVE FIRST | ||
2619 | 264 | C | 273 | C |
2620 | 265 | C FUNCTION | 274 | C FUNCTION |
2621 | 266 | C | 275 | C |
2622 | @@ -271,6 +280,9 @@ | |||
2623 | 271 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) | 280 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) |
2624 | 272 | COMMON/TO_AMPS/ AMP2, JAMP2 | 281 | COMMON/TO_AMPS/ AMP2, JAMP2 |
2625 | 273 | INCLUDE 'coupl.inc' | 282 | INCLUDE 'coupl.inc' |
2626 | 283 | |||
2627 | 284 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
2628 | 285 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
2629 | 274 | C | 286 | C |
2630 | 275 | C COLOR DATA | 287 | C COLOR DATA |
2631 | 276 | C | 288 | C |
2632 | @@ -283,17 +295,22 @@ | |||
2633 | 283 | C ---------- | 295 | C ---------- |
2634 | 284 | C BEGIN CODE | 296 | C BEGIN CODE |
2635 | 285 | C ---------- | 297 | C ---------- |
2636 | 298 | IF (FIRST) THEN | ||
2637 | 299 | FIRST=.FALSE. | ||
2638 | 300 | FK_ZERO = 0D0 | ||
2639 | 301 | ENDIF | ||
2640 | 302 | |||
2641 | 286 | CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1)) | 303 | CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1)) |
2642 | 287 | CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2)) | 304 | CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2)) |
2643 | 288 | CALL VXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3)) | 305 | CALL VXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3)) |
2644 | 289 | CALL VXXXXX(P(0,4),ZERO,NHEL(4),+1*IC(4),W(1,4)) | 306 | CALL VXXXXX(P(0,4),ZERO,NHEL(4),+1*IC(4),W(1,4)) |
2646 | 290 | CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO,ZERO,W(1,5)) | 307 | CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO, FK_ZERO,W(1,5)) |
2647 | 291 | C Amplitude(s) for diagram number 1 | 308 | C Amplitude(s) for diagram number 1 |
2648 | 292 | CALL VVV1_0(W(1,3),W(1,4),W(1,5),G,AMP(1)) | 309 | CALL VVV1_0(W(1,3),W(1,4),W(1,5),G,AMP(1)) |
2650 | 293 | CALL FFV1_2(W(1,1),W(1,3),GQQ,ZERO,ZERO,W(1,5)) | 310 | CALL FFV1_2(W(1,1),W(1,3),GQQ,ZERO, FK_ZERO,W(1,5)) |
2651 | 294 | C Amplitude(s) for diagram number 2 | 311 | C Amplitude(s) for diagram number 2 |
2652 | 295 | CALL FFV1_0(W(1,5),W(1,2),W(1,4),GQQ,AMP(2)) | 312 | CALL FFV1_0(W(1,5),W(1,2),W(1,4),GQQ,AMP(2)) |
2654 | 296 | CALL FFV1_2(W(1,1),W(1,4),GQQ,ZERO,ZERO,W(1,5)) | 313 | CALL FFV1_2(W(1,1),W(1,4),GQQ,ZERO, FK_ZERO,W(1,5)) |
2655 | 297 | C Amplitude(s) for diagram number 3 | 314 | C Amplitude(s) for diagram number 3 |
2656 | 298 | CALL FFV1_0(W(1,5),W(1,2),W(1,3),GQQ,AMP(3)) | 315 | CALL FFV1_0(W(1,5),W(1,2),W(1,3),GQQ,AMP(3)) |
2657 | 299 | C JAMPs contributing to orders ALL_ORDERS=1 | 316 | C JAMPs contributing to orders ALL_ORDERS=1 |
2658 | 300 | 317 | ||
2659 | === removed file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f' | |||
2660 | --- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f 2016-05-26 03:24:09 +0000 | |||
2661 | +++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f 1970-01-01 00:00:00 +0000 | |||
2662 | @@ -1,823 +0,0 @@ | |||
2663 | 1 | SUBROUTINE ML5_0_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
2664 | 2 | C | ||
2665 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
2666 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
2667 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
2668 | 6 | C | ||
2669 | 7 | C Interface between MG5 and Golem95. | ||
2670 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
2671 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
2672 | 10 | C NLOOPLINE < 6. | ||
2673 | 11 | C | ||
2674 | 12 | C Process: g g > t t~ [ virt = QCD ] | ||
2675 | 13 | C | ||
2676 | 14 | C | ||
2677 | 15 | C MODULES | ||
2678 | 16 | C | ||
2679 | 17 | USE MATRICE_S | ||
2680 | 18 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
2681 | 19 | USE PRECISION_GOLEM, ONLY: KI | ||
2682 | 20 | USE TENS_COMB | ||
2683 | 21 | USE TENS_REC | ||
2684 | 22 | USE FORM_FACTOR_1P, ONLY: A10 | ||
2685 | 23 | USE FORM_FACTOR_2P, ONLY: A20 | ||
2686 | 24 | USE FORM_FACTOR_3P, ONLY: A30 | ||
2687 | 25 | USE FORM_FACTOR_4P, ONLY: A40 | ||
2688 | 26 | USE FORM_FACTOR_5P, ONLY: A50 | ||
2689 | 27 | USE FORM_FACTOR_6P, ONLY: A60 | ||
2690 | 28 | IMPLICIT NONE | ||
2691 | 29 | C | ||
2692 | 30 | C CONSTANTS | ||
2693 | 31 | C | ||
2694 | 32 | INTEGER NEXTERNAL | ||
2695 | 33 | PARAMETER (NEXTERNAL=4) | ||
2696 | 34 | LOGICAL CHECKPCONSERVATION | ||
2697 | 35 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
2698 | 36 | REAL*8 NORMALIZATION | ||
2699 | 37 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
2700 | 38 | $ *2)) | ||
2701 | 39 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
2702 | 40 | $ ,0.0_KI,0.0_KI/) | ||
2703 | 41 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
2704 | 42 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
2705 | 43 | C directly from | ||
2706 | 44 | C numerator using golem internal reconstruction routine | ||
2707 | 45 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
2708 | 46 | C against | ||
2709 | 47 | C MadLoop internal ones. | ||
2710 | 48 | INTEGER GOLEM_RUN_MODE | ||
2711 | 49 | PARAMETER (GOLEM_RUN_MODE=1) | ||
2712 | 50 | C The following is the acceptance threshold used for | ||
2713 | 51 | C GOLEM_RUN_MODE = 3 | ||
2714 | 52 | REAL*8 COEF_CHECK_THRS | ||
2715 | 53 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
2716 | 54 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2717 | 55 | |||
2718 | 56 | LOGICAL PASS_COEF_CHECK | ||
2719 | 57 | C | ||
2720 | 58 | C ARGUMENTS | ||
2721 | 59 | C | ||
2722 | 60 | INTEGER NLOOPLINE, RANK | ||
2723 | 61 | REAL*8 PL(0:3,NLOOPLINE) | ||
2724 | 62 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
2725 | 63 | REAL*8 REF_P | ||
2726 | 64 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
2727 | 65 | COMPLEX*16 M2L(NLOOPLINE) | ||
2728 | 66 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
2729 | 67 | COMPLEX*16 RES(3) | ||
2730 | 68 | LOGICAL STABLE | ||
2731 | 69 | C | ||
2732 | 70 | C LOCAL VARIABLES | ||
2733 | 71 | C | ||
2734 | 72 | INTEGER I, J, K | ||
2735 | 73 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
2736 | 74 | |||
2737 | 75 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
2738 | 76 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
2739 | 77 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
2740 | 78 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
2741 | 79 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
2742 | 80 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
2743 | 81 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
2744 | 82 | |||
2745 | 83 | C The pinch propagator optimization is not used, so for now it is | ||
2746 | 84 | C always 0. | ||
2747 | 85 | INTEGER PINCH | ||
2748 | 86 | C | ||
2749 | 87 | C EXTERNAL FUNCTIONS | ||
2750 | 88 | C | ||
2751 | 89 | COMPLEX(KI) ML5_0_GOLEM_LOOPNUM | ||
2752 | 90 | EXTERNAL ML5_0_GOLEM_LOOPNUM | ||
2753 | 91 | LOGICAL ML5_0_COMPARE_COEFS_0 | ||
2754 | 92 | LOGICAL ML5_0_COMPARE_COEFS_1 | ||
2755 | 93 | LOGICAL ML5_0_COMPARE_COEFS_2 | ||
2756 | 94 | LOGICAL ML5_0_COMPARE_COEFS_3 | ||
2757 | 95 | LOGICAL ML5_0_COMPARE_COEFS_4 | ||
2758 | 96 | LOGICAL ML5_0_COMPARE_COEFS_5 | ||
2759 | 97 | LOGICAL ML5_0_COMPARE_COEFS_6 | ||
2760 | 98 | C | ||
2761 | 99 | C GLOBAL VARIABLES | ||
2762 | 100 | C | ||
2763 | 101 | INCLUDE 'coupl.inc' | ||
2764 | 102 | INTEGER CTMODE | ||
2765 | 103 | REAL*8 LSCALE | ||
2766 | 104 | COMMON/ML5_0_CT/LSCALE,CTMODE | ||
2767 | 105 | |||
2768 | 106 | INTEGER ID,SQSOINDEX,R | ||
2769 | 107 | COMMON/ML5_0_LOOP/ID,SQSOINDEX,R | ||
2770 | 108 | |||
2771 | 109 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
2772 | 110 | $ ,COLLIERINIT | ||
2773 | 111 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
2774 | 112 | $ ,NINJAINIT,COLLIERINIT | ||
2775 | 113 | |||
2776 | 114 | INTEGER NLOOPGROUPS | ||
2777 | 115 | PARAMETER (NLOOPGROUPS=26) | ||
2778 | 116 | INTEGER NSQUAREDSO | ||
2779 | 117 | PARAMETER (NSQUAREDSO=1) | ||
2780 | 118 | INCLUDE 'loop_max_coefs.inc' | ||
2781 | 119 | |||
2782 | 120 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
2783 | 121 | COMMON/ML5_0_LCOEFS/LOOPCOEFS | ||
2784 | 122 | C ---------- | ||
2785 | 123 | C BEGIN CODE | ||
2786 | 124 | C ---------- | ||
2787 | 125 | |||
2788 | 126 | C The CT initialization is also performed here if not done already | ||
2789 | 127 | C because it calls MPINIT of OneLOop which is necessary on some | ||
2790 | 128 | C system | ||
2791 | 129 | IF (CTINIT) THEN | ||
2792 | 130 | CTINIT=.FALSE. | ||
2793 | 131 | CALL ML5_0_INITCT() | ||
2794 | 132 | ENDIF | ||
2795 | 133 | |||
2796 | 134 | C INITIALIZE GOLEM IF NEEDED | ||
2797 | 135 | IF (GOLEMINIT) THEN | ||
2798 | 136 | GOLEMINIT=.FALSE. | ||
2799 | 137 | CALL ML5_0_INITGOLEM() | ||
2800 | 138 | ENDIF | ||
2801 | 139 | |||
2802 | 140 | C No stability test intrisic to Golem95 now | ||
2803 | 141 | STABLE=.TRUE. | ||
2804 | 142 | |||
2805 | 143 | C This initialization must be done for each reduction because we | ||
2806 | 144 | C have not setup anyoptimization using pinched propagators yet. | ||
2807 | 145 | CALL INITGOLEM95(NLOOPLINE) | ||
2808 | 146 | PINCH = 0 | ||
2809 | 147 | |||
2810 | 148 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
2811 | 149 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
2812 | 150 | |||
2813 | 151 | C CONVERT THE MASSES TO BE COMPLEX | ||
2814 | 152 | DO I=1,NLOOPLINE | ||
2815 | 153 | M2LGOLEM(I)=M2L(I) | ||
2816 | 154 | ENDDO | ||
2817 | 155 | |||
2818 | 156 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
2819 | 157 | DO I=0,3 | ||
2820 | 158 | ABSPCT(I) = 0.D0 | ||
2821 | 159 | DO J=0,(NLOOPLINE-1) | ||
2822 | 160 | PCT(I,J)=0.D0 | ||
2823 | 161 | ENDDO | ||
2824 | 162 | ENDDO | ||
2825 | 163 | DO I=0,3 | ||
2826 | 164 | DO J=1,NLOOPLINE | ||
2827 | 165 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
2828 | 166 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
2829 | 167 | ENDDO | ||
2830 | 168 | ENDDO | ||
2831 | 169 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
2832 | 170 | DO I=0,3 | ||
2833 | 171 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
2834 | 172 | ENDDO | ||
2835 | 173 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
2836 | 174 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
2837 | 175 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
2838 | 176 | STOP 'energy is not conserved' | ||
2839 | 177 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
2840 | 178 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
2841 | 179 | STOP 'px is not conserved' | ||
2842 | 180 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
2843 | 181 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
2844 | 182 | STOP 'py is not conserved' | ||
2845 | 183 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
2846 | 184 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
2847 | 185 | STOP 'pz is not conserved' | ||
2848 | 186 | ENDIF | ||
2849 | 187 | ENDIF | ||
2850 | 188 | DO I=0,3 | ||
2851 | 189 | DO J=1,(NLOOPLINE-1) | ||
2852 | 190 | DO K=1,J | ||
2853 | 191 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
2854 | 192 | ENDDO | ||
2855 | 193 | ENDDO | ||
2856 | 194 | ENDDO | ||
2857 | 195 | |||
2858 | 196 | C Now convert the loop momenta to Golem95 conventions | ||
2859 | 197 | DO I=0,3 | ||
2860 | 198 | PGOLEM(1,I)=0.0E0_KI | ||
2861 | 199 | DO J=2,NLOOPLINE | ||
2862 | 200 | PGOLEM(J,I)=PCT(I,J-1) | ||
2863 | 201 | ENDDO | ||
2864 | 202 | ENDDO | ||
2865 | 203 | |||
2866 | 204 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
2867 | 205 | C limits. | ||
2868 | 206 | CALL ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
2869 | 207 | C Construct the golem internal matrices derived from the kinetic | ||
2870 | 208 | C one. | ||
2871 | 209 | CALL PREPARESMATRIX() | ||
2872 | 210 | |||
2873 | 211 | C Fill in the golem coefficents and compute the loop | ||
2874 | 212 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
2875 | 213 | RES_GOLEM = EVALUATE_B(ML5_0_GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
2876 | 214 | ELSE | ||
2877 | 215 | PASS_COEF_CHECK=.TRUE. | ||
2878 | 216 | SELECT CASE(RANK) | ||
2879 | 217 | CASE(0) | ||
2880 | 218 | CALL ML5_0_FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2881 | 219 | $ ,COEFFS0) | ||
2882 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2883 | 221 | COEFFS0_REC = ML5_0_GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
2884 | 222 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
2885 | 223 | ENDIF | ||
2886 | 224 | CASE(1) | ||
2887 | 225 | CALL ML5_0_FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2888 | 226 | $ ,COEFFS1) | ||
2889 | 227 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2890 | 228 | CALL RECONSTRUCT1(ML5_0_GOLEM_LOOPNUM,COEFFS1_REC) | ||
2891 | 229 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
2892 | 230 | ENDIF | ||
2893 | 231 | CASE(2) | ||
2894 | 232 | CALL ML5_0_FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2895 | 233 | $ ,COEFFS2) | ||
2896 | 234 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2897 | 235 | CALL RECONSTRUCT2(ML5_0_GOLEM_LOOPNUM,COEFFS2_REC) | ||
2898 | 236 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
2899 | 237 | ENDIF | ||
2900 | 238 | CASE(3) | ||
2901 | 239 | CALL ML5_0_FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2902 | 240 | $ ,COEFFS3) | ||
2903 | 241 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2904 | 242 | CALL RECONSTRUCT3(ML5_0_GOLEM_LOOPNUM,COEFFS3_REC) | ||
2905 | 243 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
2906 | 244 | ENDIF | ||
2907 | 245 | CASE(4) | ||
2908 | 246 | CALL ML5_0_FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2909 | 247 | $ ,COEFFS4) | ||
2910 | 248 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2911 | 249 | CALL RECONSTRUCT4(ML5_0_GOLEM_LOOPNUM,COEFFS4_REC) | ||
2912 | 250 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
2913 | 251 | ENDIF | ||
2914 | 252 | CASE(5) | ||
2915 | 253 | CALL ML5_0_FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2916 | 254 | $ ,COEFFS5) | ||
2917 | 255 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2918 | 256 | CALL RECONSTRUCT5(ML5_0_GOLEM_LOOPNUM,COEFFS5_REC) | ||
2919 | 257 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
2920 | 258 | ENDIF | ||
2921 | 259 | CASE(6) | ||
2922 | 260 | CALL ML5_0_FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID) | ||
2923 | 261 | $ ,COEFFS6) | ||
2924 | 262 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2925 | 263 | CALL RECONSTRUCT6(ML5_0_GOLEM_LOOPNUM,COEFFS6_REC) | ||
2926 | 264 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
2927 | 265 | ENDIF | ||
2928 | 266 | CASE DEFAULT | ||
2929 | 267 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
2930 | 268 | STOP | ||
2931 | 269 | END SELECT | ||
2932 | 270 | |||
2933 | 271 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
2934 | 272 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
2935 | 273 | WRITE(*,*)'Coefs form MadLoop5:' | ||
2936 | 274 | SELECT CASE(RANK) | ||
2937 | 275 | CASE(0) | ||
2938 | 276 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
2939 | 277 | CASE(1) | ||
2940 | 278 | CALL PRINT_COEFFS(COEFFS1) | ||
2941 | 279 | CASE(2) | ||
2942 | 280 | CALL PRINT_COEFFS(COEFFS2) | ||
2943 | 281 | CASE(3) | ||
2944 | 282 | CALL PRINT_COEFFS(COEFFS3) | ||
2945 | 283 | CASE(4) | ||
2946 | 284 | CALL PRINT_COEFFS(COEFFS4) | ||
2947 | 285 | CASE(5) | ||
2948 | 286 | CALL PRINT_COEFFS(COEFFS5) | ||
2949 | 287 | CASE(6) | ||
2950 | 288 | CALL PRINT_COEFFS(COEFFS6) | ||
2951 | 289 | END SELECT | ||
2952 | 290 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
2953 | 291 | SELECT CASE(RANK) | ||
2954 | 292 | CASE(0) | ||
2955 | 293 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
2956 | 294 | CASE(1) | ||
2957 | 295 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
2958 | 296 | CASE(2) | ||
2959 | 297 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
2960 | 298 | CASE(3) | ||
2961 | 299 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
2962 | 300 | CASE(4) | ||
2963 | 301 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
2964 | 302 | CASE(5) | ||
2965 | 303 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
2966 | 304 | CASE(6) | ||
2967 | 305 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
2968 | 306 | END SELECT | ||
2969 | 307 | STOP | ||
2970 | 308 | ENDIF | ||
2971 | 309 | |||
2972 | 310 | SELECT CASE(NLOOPLINE) | ||
2973 | 311 | CASE(1) | ||
2974 | 312 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
2975 | 313 | STOP | ||
2976 | 314 | CASE(2) | ||
2977 | 315 | SELECT CASE(RANK) | ||
2978 | 316 | CASE(0) | ||
2979 | 317 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
2980 | 318 | CASE(1) | ||
2981 | 319 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
2982 | 320 | CASE(2) | ||
2983 | 321 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
2984 | 322 | CASE(3) | ||
2985 | 323 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
2986 | 324 | CASE DEFAULT | ||
2987 | 325 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
2988 | 326 | STOP | ||
2989 | 327 | END SELECT | ||
2990 | 328 | CASE(3) | ||
2991 | 329 | SELECT CASE(RANK) | ||
2992 | 330 | CASE(0) | ||
2993 | 331 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
2994 | 332 | CASE(1) | ||
2995 | 333 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
2996 | 334 | CASE(2) | ||
2997 | 335 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
2998 | 336 | CASE(3) | ||
2999 | 337 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
3000 | 338 | CASE(4) | ||
3001 | 339 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
3002 | 340 | CASE DEFAULT | ||
3003 | 341 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
3004 | 342 | STOP | ||
3005 | 343 | END SELECT | ||
3006 | 344 | CASE(4) | ||
3007 | 345 | SELECT CASE(RANK) | ||
3008 | 346 | CASE(0) | ||
3009 | 347 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
3010 | 348 | CASE(1) | ||
3011 | 349 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
3012 | 350 | CASE(2) | ||
3013 | 351 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
3014 | 352 | CASE(3) | ||
3015 | 353 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
3016 | 354 | CASE(4) | ||
3017 | 355 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
3018 | 356 | CASE(5) | ||
3019 | 357 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
3020 | 358 | CASE DEFAULT | ||
3021 | 359 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
3022 | 360 | STOP | ||
3023 | 361 | END SELECT | ||
3024 | 362 | CASE(5) | ||
3025 | 363 | SELECT CASE(RANK) | ||
3026 | 364 | CASE(0) | ||
3027 | 365 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
3028 | 366 | CASE(1) | ||
3029 | 367 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
3030 | 368 | CASE(2) | ||
3031 | 369 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
3032 | 370 | CASE(3) | ||
3033 | 371 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
3034 | 372 | CASE(4) | ||
3035 | 373 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
3036 | 374 | CASE(5) | ||
3037 | 375 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
3038 | 376 | CASE(6) | ||
3039 | 377 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
3040 | 378 | CASE DEFAULT | ||
3041 | 379 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
3042 | 380 | STOP | ||
3043 | 381 | END SELECT | ||
3044 | 382 | CASE(6) | ||
3045 | 383 | SELECT CASE(RANK) | ||
3046 | 384 | CASE(0) | ||
3047 | 385 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
3048 | 386 | CASE(1) | ||
3049 | 387 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
3050 | 388 | CASE(2) | ||
3051 | 389 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
3052 | 390 | CASE(3) | ||
3053 | 391 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
3054 | 392 | CASE(4) | ||
3055 | 393 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
3056 | 394 | CASE(5) | ||
3057 | 395 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
3058 | 396 | CASE(6) | ||
3059 | 397 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
3060 | 398 | CASE DEFAULT | ||
3061 | 399 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
3062 | 400 | STOP | ||
3063 | 401 | END SELECT | ||
3064 | 402 | CASE DEFAULT | ||
3065 | 403 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
3066 | 404 | STOP | ||
3067 | 405 | END SELECT | ||
3068 | 406 | ENDIF | ||
3069 | 407 | |||
3070 | 408 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
3071 | 409 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
3072 | 410 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
3073 | 411 | $ *RES_GOLEM%%A) | ||
3074 | 412 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
3075 | 413 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
3076 | 414 | |||
3077 | 415 | C Finally free golem memory and cache | ||
3078 | 416 | CALL EXITGOLEM95() | ||
3079 | 417 | |||
3080 | 418 | END | ||
3081 | 419 | |||
3082 | 420 | FUNCTION ML5_0_GOLEM_LOOPNUM(Q,MU2) | ||
3083 | 421 | USE PRECISION_GOLEM, ONLY: KI | ||
3084 | 422 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
3085 | 423 | REAL(KI),INTENT(IN)::MU2 | ||
3086 | 424 | COMPLEX(KI)::ML5_0_GOLEM_LOOPNUM | ||
3087 | 425 | |||
3088 | 426 | COMPLEX*16 QQ(0:3),NUM | ||
3089 | 427 | INTEGER I | ||
3090 | 428 | |||
3091 | 429 | DO I=0,3 | ||
3092 | 430 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
3093 | 431 | ENDDO | ||
3094 | 432 | |||
3095 | 433 | CALL ML5_0_LOOPNUM(QQ,NUM) | ||
3096 | 434 | ML5_0_GOLEM_LOOPNUM=NUM | ||
3097 | 435 | RETURN | ||
3098 | 436 | END FUNCTION | ||
3099 | 437 | |||
3100 | 438 | SUBROUTINE ML5_0_INITGOLEM() | ||
3101 | 439 | C | ||
3102 | 440 | C INITIALISATION OF GOLEM | ||
3103 | 441 | C | ||
3104 | 442 | C | ||
3105 | 443 | C MODULE | ||
3106 | 444 | C | ||
3107 | 445 | USE PARAMETRE | ||
3108 | 446 | C | ||
3109 | 447 | C LOCAL VARIABLES | ||
3110 | 448 | C | ||
3111 | 449 | REAL*8 THRS | ||
3112 | 450 | LOGICAL EXT_NUM_FOR_R1 | ||
3113 | 451 | C | ||
3114 | 452 | C GLOBAL VARIABLES | ||
3115 | 453 | C | ||
3116 | 454 | INCLUDE 'MadLoopParams.inc' | ||
3117 | 455 | C ---------- | ||
3118 | 456 | C BEGIN CODE | ||
3119 | 457 | C ---------- | ||
3120 | 458 | |||
3121 | 459 | C DEFAULT PARAMETERS FOR GOLEM | ||
3122 | 460 | C ------------------------------- | ||
3123 | 461 | C One can chose here to have either just the rational R1 piece | ||
3124 | 462 | C or everything but the R2 | ||
3125 | 463 | RAT_OR_TOT_PAR = TOT | ||
3126 | 464 | |||
3127 | 465 | END | ||
3128 | 466 | |||
3129 | 467 | SUBROUTINE ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
3130 | 468 | C | ||
3131 | 469 | C MODULE | ||
3132 | 470 | C | ||
3133 | 471 | USE MATRICE_S | ||
3134 | 472 | USE PRECISION_GOLEM, ONLY: KI | ||
3135 | 473 | C | ||
3136 | 474 | C ARGUMENTS | ||
3137 | 475 | C | ||
3138 | 476 | INTEGER NLOOPLINE | ||
3139 | 477 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
3140 | 478 | COMPLEX(KI) M2L(NLOOPLINE) | ||
3141 | 479 | C | ||
3142 | 480 | C LOCAL VARIABLES | ||
3143 | 481 | C | ||
3144 | 482 | INTEGER I,J | ||
3145 | 483 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
3146 | 484 | C ---------- | ||
3147 | 485 | C BEGIN CODE | ||
3148 | 486 | C ---------- | ||
3149 | 487 | |||
3150 | 488 | CALL ML5_0_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L | ||
3151 | 489 | $ ,S_MAT_FROM_MG) | ||
3152 | 490 | |||
3153 | 491 | DO I=1,NLOOPLINE | ||
3154 | 492 | DO J=1,NLOOPLINE | ||
3155 | 493 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
3156 | 494 | ENDDO | ||
3157 | 495 | ENDDO | ||
3158 | 496 | |||
3159 | 497 | END | ||
3160 | 498 | |||
3161 | 499 | FUNCTION ML5_0_COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
3162 | 500 | |||
3163 | 501 | USE PRECISION_GOLEM, ONLY: KI | ||
3164 | 502 | COMPLEX(KI) COEFS_A,COEFS_B | ||
3165 | 503 | REAL*8 COEF_CHECK_THRS | ||
3166 | 504 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3167 | 505 | REAL*8 DENOM,NUM | ||
3168 | 506 | LOGICAL ML5_0_COMPARE_COEFS_0 | ||
3169 | 507 | |||
3170 | 508 | NUM = ABS(COEFS_A-COEFS_B) | ||
3171 | 509 | DENOM = ABS(COEFS_A+COEFS_B) | ||
3172 | 510 | IF(DENOM.GT.0D0)THEN | ||
3173 | 511 | ML5_0_COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3174 | 512 | ELSE | ||
3175 | 513 | ML5_0_COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
3176 | 514 | ENDIF | ||
3177 | 515 | |||
3178 | 516 | END | ||
3179 | 517 | |||
3180 | 518 | FUNCTION ML5_0_COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
3181 | 519 | |||
3182 | 520 | USE TENS_REC | ||
3183 | 521 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
3184 | 522 | REAL*8 COEF_CHECK_THRS | ||
3185 | 523 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3186 | 524 | REAL*8 DENOM,NUM | ||
3187 | 525 | LOGICAL ML5_0_COMPARE_COEFS_1 | ||
3188 | 526 | |||
3189 | 527 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3190 | 528 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3191 | 529 | $ ) | ||
3192 | 530 | |||
3193 | 531 | IF(DENOM.GT.0D0)THEN | ||
3194 | 532 | ML5_0_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3195 | 533 | ELSE | ||
3196 | 534 | ML5_0_COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
3197 | 535 | ENDIF | ||
3198 | 536 | |||
3199 | 537 | END | ||
3200 | 538 | |||
3201 | 539 | FUNCTION ML5_0_COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
3202 | 540 | |||
3203 | 541 | USE TENS_REC | ||
3204 | 542 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
3205 | 543 | REAL*8 COEF_CHECK_THRS | ||
3206 | 544 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3207 | 545 | REAL*8 DENOM,NUM | ||
3208 | 546 | LOGICAL ML5_0_COMPARE_COEFS_2 | ||
3209 | 547 | |||
3210 | 548 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3211 | 549 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
3212 | 550 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3213 | 551 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
3214 | 552 | IF(DENOM.GT.0D0)THEN | ||
3215 | 553 | ML5_0_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3216 | 554 | ELSE | ||
3217 | 555 | ML5_0_COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
3218 | 556 | ENDIF | ||
3219 | 557 | |||
3220 | 558 | END | ||
3221 | 559 | |||
3222 | 560 | FUNCTION ML5_0_COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
3223 | 561 | |||
3224 | 562 | USE TENS_REC | ||
3225 | 563 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
3226 | 564 | REAL*8 COEF_CHECK_THRS | ||
3227 | 565 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3228 | 566 | REAL*8 DENOM,NUM | ||
3229 | 567 | LOGICAL ML5_0_COMPARE_COEFS_3 | ||
3230 | 568 | |||
3231 | 569 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3232 | 570 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3233 | 571 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3234 | 572 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3235 | 573 | $ ) | ||
3236 | 574 | IF(DENOM.GT.0D0)THEN | ||
3237 | 575 | ML5_0_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3238 | 576 | ELSE | ||
3239 | 577 | ML5_0_COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
3240 | 578 | ENDIF | ||
3241 | 579 | |||
3242 | 580 | END | ||
3243 | 581 | |||
3244 | 582 | FUNCTION ML5_0_COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
3245 | 583 | |||
3246 | 584 | USE TENS_REC | ||
3247 | 585 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
3248 | 586 | REAL*8 COEF_CHECK_THRS | ||
3249 | 587 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3250 | 588 | REAL*8 DENOM,NUM | ||
3251 | 589 | LOGICAL ML5_0_COMPARE_COEFS_4 | ||
3252 | 590 | |||
3253 | 591 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3254 | 592 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3255 | 593 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3256 | 594 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3257 | 595 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3258 | 596 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3259 | 597 | IF(DENOM.GT.0D0)THEN | ||
3260 | 598 | ML5_0_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3261 | 599 | ELSE | ||
3262 | 600 | ML5_0_COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
3263 | 601 | ENDIF | ||
3264 | 602 | |||
3265 | 603 | END | ||
3266 | 604 | |||
3267 | 605 | FUNCTION ML5_0_COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
3268 | 606 | |||
3269 | 607 | USE TENS_REC | ||
3270 | 608 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
3271 | 609 | REAL*8 COEF_CHECK_THRS | ||
3272 | 610 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3273 | 611 | REAL*8 DENOM,NUM | ||
3274 | 612 | LOGICAL ML5_0_COMPARE_COEFS_5 | ||
3275 | 613 | |||
3276 | 614 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3277 | 615 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3278 | 616 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3279 | 617 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3280 | 618 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3281 | 619 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3282 | 620 | IF(DENOM.GT.0D0)THEN | ||
3283 | 621 | ML5_0_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3284 | 622 | ELSE | ||
3285 | 623 | ML5_0_COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
3286 | 624 | ENDIF | ||
3287 | 625 | |||
3288 | 626 | END | ||
3289 | 627 | |||
3290 | 628 | FUNCTION ML5_0_COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
3291 | 629 | |||
3292 | 630 | USE TENS_REC | ||
3293 | 631 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
3294 | 632 | REAL*8 COEF_CHECK_THRS | ||
3295 | 633 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3296 | 634 | REAL*8 DENOM,NUM | ||
3297 | 635 | LOGICAL ML5_0_COMPARE_COEFS_6 | ||
3298 | 636 | |||
3299 | 637 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3300 | 638 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3301 | 639 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3302 | 640 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3303 | 641 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3304 | 642 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3305 | 643 | IF(DENOM.GT.0D0)THEN | ||
3306 | 644 | ML5_0_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3307 | 645 | ELSE | ||
3308 | 646 | ML5_0_COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
3309 | 647 | ENDIF | ||
3310 | 648 | |||
3311 | 649 | END | ||
3312 | 650 | |||
3313 | 651 | |||
3314 | 652 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
3315 | 653 | USE PRECISION_GOLEM, ONLY: KI | ||
3316 | 654 | INCLUDE 'coef_specs.inc' | ||
3317 | 655 | INCLUDE 'loop_max_coefs.inc' | ||
3318 | 656 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3319 | 657 | COMPLEX(KI) GOLEM_COEFS | ||
3320 | 658 | GOLEM_COEFS=ML_COEFS(0) | ||
3321 | 659 | END | ||
3322 | 660 | |||
3323 | 661 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
3324 | 662 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
3325 | 663 | INCLUDE 'coef_specs.inc' | ||
3326 | 664 | INCLUDE 'loop_max_coefs.inc' | ||
3327 | 665 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3328 | 666 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
3329 | 667 | C Constant coefficient | ||
3330 | 668 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3331 | 669 | C Coefficient q(0) | ||
3332 | 670 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3333 | 671 | C Coefficient q(1) | ||
3334 | 672 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3335 | 673 | C Coefficient q(2) | ||
3336 | 674 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3337 | 675 | C Coefficient q(3) | ||
3338 | 676 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3339 | 677 | END | ||
3340 | 678 | |||
3341 | 679 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
3342 | 680 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
3343 | 681 | INCLUDE 'coef_specs.inc' | ||
3344 | 682 | INCLUDE 'loop_max_coefs.inc' | ||
3345 | 683 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3346 | 684 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
3347 | 685 | C Constant coefficient | ||
3348 | 686 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3349 | 687 | C Coefficient q(0) | ||
3350 | 688 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3351 | 689 | C Coefficient q(0)^2 | ||
3352 | 690 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
3353 | 691 | C Coefficient q(1) | ||
3354 | 692 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3355 | 693 | C Coefficient q(1)^2 | ||
3356 | 694 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
3357 | 695 | C Coefficient q(2) | ||
3358 | 696 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3359 | 697 | C Coefficient q(2)^2 | ||
3360 | 698 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
3361 | 699 | C Coefficient q(3) | ||
3362 | 700 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3363 | 701 | C Coefficient q(3)^2 | ||
3364 | 702 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
3365 | 703 | C Coefficient q(0)*q(1) | ||
3366 | 704 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
3367 | 705 | C Coefficient q(0)*q(2) | ||
3368 | 706 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
3369 | 707 | C Coefficient q(0)*q(3) | ||
3370 | 708 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
3371 | 709 | C Coefficient q(1)*q(2) | ||
3372 | 710 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
3373 | 711 | C Coefficient q(1)*q(3) | ||
3374 | 712 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
3375 | 713 | C Coefficient q(2)*q(3) | ||
3376 | 714 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
3377 | 715 | END | ||
3378 | 716 | |||
3379 | 717 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
3380 | 718 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
3381 | 719 | INCLUDE 'coef_specs.inc' | ||
3382 | 720 | INCLUDE 'loop_max_coefs.inc' | ||
3383 | 721 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3384 | 722 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
3385 | 723 | C Constant coefficient | ||
3386 | 724 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3387 | 725 | C Coefficient q(0) | ||
3388 | 726 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3389 | 727 | C Coefficient q(0)^2 | ||
3390 | 728 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
3391 | 729 | C Coefficient q(0)^3 | ||
3392 | 730 | GOLEM_COEFS%%C1(1,3)=-ML_COEFS(15) | ||
3393 | 731 | C Coefficient q(1) | ||
3394 | 732 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3395 | 733 | C Coefficient q(1)^2 | ||
3396 | 734 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
3397 | 735 | C Coefficient q(1)^3 | ||
3398 | 736 | GOLEM_COEFS%%C1(2,3)=-ML_COEFS(18) | ||
3399 | 737 | C Coefficient q(2) | ||
3400 | 738 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3401 | 739 | C Coefficient q(2)^2 | ||
3402 | 740 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
3403 | 741 | C Coefficient q(2)^3 | ||
3404 | 742 | GOLEM_COEFS%%C1(3,3)=-ML_COEFS(24) | ||
3405 | 743 | C Coefficient q(3) | ||
3406 | 744 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3407 | 745 | C Coefficient q(3)^2 | ||
3408 | 746 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
3409 | 747 | C Coefficient q(3)^3 | ||
3410 | 748 | GOLEM_COEFS%%C1(4,3)=-ML_COEFS(34) | ||
3411 | 749 | C Coefficient q(0)*q(1) | ||
3412 | 750 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
3413 | 751 | C Coefficient q(0)*q(1)^2 | ||
3414 | 752 | GOLEM_COEFS%%C2(1,2)=-ML_COEFS(17) | ||
3415 | 753 | C Coefficient q(0)^2*q(1) | ||
3416 | 754 | GOLEM_COEFS%%C2(1,3)=-ML_COEFS(16) | ||
3417 | 755 | C Coefficient q(0)*q(2) | ||
3418 | 756 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
3419 | 757 | C Coefficient q(0)*q(2)^2 | ||
3420 | 758 | GOLEM_COEFS%%C2(2,2)=-ML_COEFS(22) | ||
3421 | 759 | C Coefficient q(0)^2*q(2) | ||
3422 | 760 | GOLEM_COEFS%%C2(2,3)=-ML_COEFS(19) | ||
3423 | 761 | C Coefficient q(0)*q(3) | ||
3424 | 762 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
3425 | 763 | C Coefficient q(0)*q(3)^2 | ||
3426 | 764 | GOLEM_COEFS%%C2(3,2)=-ML_COEFS(31) | ||
3427 | 765 | C Coefficient q(0)^2*q(3) | ||
3428 | 766 | GOLEM_COEFS%%C2(3,3)=-ML_COEFS(25) | ||
3429 | 767 | C Coefficient q(1)*q(2) | ||
3430 | 768 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
3431 | 769 | C Coefficient q(1)*q(2)^2 | ||
3432 | 770 | GOLEM_COEFS%%C2(4,2)=-ML_COEFS(23) | ||
3433 | 771 | C Coefficient q(1)^2*q(2) | ||
3434 | 772 | GOLEM_COEFS%%C2(4,3)=-ML_COEFS(21) | ||
3435 | 773 | C Coefficient q(1)*q(3) | ||
3436 | 774 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
3437 | 775 | C Coefficient q(1)*q(3)^2 | ||
3438 | 776 | GOLEM_COEFS%%C2(5,2)=-ML_COEFS(32) | ||
3439 | 777 | C Coefficient q(1)^2*q(3) | ||
3440 | 778 | GOLEM_COEFS%%C2(5,3)=-ML_COEFS(27) | ||
3441 | 779 | C Coefficient q(2)*q(3) | ||
3442 | 780 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
3443 | 781 | C Coefficient q(2)*q(3)^2 | ||
3444 | 782 | GOLEM_COEFS%%C2(6,2)=-ML_COEFS(33) | ||
3445 | 783 | C Coefficient q(2)^2*q(3) | ||
3446 | 784 | GOLEM_COEFS%%C2(6,3)=-ML_COEFS(30) | ||
3447 | 785 | C Coefficient q(0)*q(1)*q(2) | ||
3448 | 786 | GOLEM_COEFS%%C3(1,1)=-ML_COEFS(20) | ||
3449 | 787 | C Coefficient q(0)*q(1)*q(3) | ||
3450 | 788 | GOLEM_COEFS%%C3(2,1)=-ML_COEFS(26) | ||
3451 | 789 | C Coefficient q(0)*q(2)*q(3) | ||
3452 | 790 | GOLEM_COEFS%%C3(3,1)=-ML_COEFS(28) | ||
3453 | 791 | C Coefficient q(1)*q(2)*q(3) | ||
3454 | 792 | GOLEM_COEFS%%C3(4,1)=-ML_COEFS(29) | ||
3455 | 793 | END | ||
3456 | 794 | |||
3457 | 795 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
3458 | 796 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
3459 | 797 | INCLUDE 'coef_specs.inc' | ||
3460 | 798 | INCLUDE 'loop_max_coefs.inc' | ||
3461 | 799 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3462 | 800 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
3463 | 801 | C Dummy routine for ML5_0_FILL_GOLEM_COEFS_4 | ||
3464 | 802 | STOP 'ERROR: 4 > 3' | ||
3465 | 803 | END | ||
3466 | 804 | |||
3467 | 805 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
3468 | 806 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
3469 | 807 | INCLUDE 'coef_specs.inc' | ||
3470 | 808 | INCLUDE 'loop_max_coefs.inc' | ||
3471 | 809 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3472 | 810 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
3473 | 811 | C Dummy routine for ML5_0_FILL_GOLEM_COEFS_5 | ||
3474 | 812 | STOP 'ERROR: 5 > 3' | ||
3475 | 813 | END | ||
3476 | 814 | |||
3477 | 815 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
3478 | 816 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
3479 | 817 | INCLUDE 'coef_specs.inc' | ||
3480 | 818 | INCLUDE 'loop_max_coefs.inc' | ||
3481 | 819 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3482 | 820 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
3483 | 821 | C Dummy routine for ML5_0_FILL_GOLEM_COEFS_6 | ||
3484 | 822 | STOP 'ERROR: 6 > 3' | ||
3485 | 823 | END | ||
3486 | 824 | 0 | ||
3487 | === modified file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f' | |||
3488 | --- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f 2016-06-28 23:55:35 +0000 | |||
3489 | +++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f 2018-11-09 08:24:41 +0000 | |||
3490 | @@ -95,17 +95,9 @@ | |||
3491 | 95 | ENDIF | 95 | ENDIF |
3492 | 96 | 96 | ||
3493 | 97 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 97 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
3505 | 98 | C Using Golem95 | 98 | C Golem95 not available |
3506 | 99 | C PDEN is dummy for Golem95 so we just initialize it to zero | 99 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
3507 | 100 | C here so as to use it for the function SWITCHORDER | 100 | STOP |
3497 | 101 | DO I=0,3 | ||
3498 | 102 | DO J=1,NLOOPLINE-1 | ||
3499 | 103 | PDEN(I,J)=0.0D0 | ||
3500 | 104 | ENDDO | ||
3501 | 105 | ENDDO | ||
3502 | 106 | CALL ML5_0_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
3503 | 107 | CALL ML5_0_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
3504 | 108 | RETURN | ||
3508 | 109 | ENDIF | 101 | ENDIF |
3509 | 110 | 102 | ||
3510 | 111 | C INITIALIZE TIR IF NEEDED | 103 | C INITIALIZE TIR IF NEEDED |
3511 | 112 | 104 | ||
3512 | === modified file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f' | |||
3513 | --- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f 2017-08-14 07:04:15 +0000 | |||
3514 | +++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f 2018-11-09 08:24:41 +0000 | |||
3515 | @@ -243,7 +243,7 @@ | |||
3516 | 243 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 243 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
3517 | 244 | C AVAILABLE OR NOT | 244 | C AVAILABLE OR NOT |
3518 | 245 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 245 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
3520 | 246 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 246 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
3521 | 247 | $ ,.TRUE.,.TRUE./ | 247 | $ ,.TRUE.,.TRUE./ |
3522 | 248 | COMMON/ML5_0_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 248 | COMMON/ML5_0_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
3523 | 249 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 249 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
3524 | 250 | 250 | ||
3525 | === removed file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f' | |||
3526 | --- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f 2016-05-26 03:24:09 +0000 | |||
3527 | +++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f 1970-01-01 00:00:00 +0000 | |||
3528 | @@ -1,755 +0,0 @@ | |||
3529 | 1 | SUBROUTINE MG5_1_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
3530 | 2 | C | ||
3531 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
3532 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
3533 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
3534 | 6 | C | ||
3535 | 7 | C Interface between MG5 and Golem95. | ||
3536 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
3537 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
3538 | 10 | C NLOOPLINE < 6. | ||
3539 | 11 | C | ||
3540 | 12 | C Process: u u~ > u u~ [ virt = QCD ] @1 | ||
3541 | 13 | C | ||
3542 | 14 | C | ||
3543 | 15 | C MODULES | ||
3544 | 16 | C | ||
3545 | 17 | USE MATRICE_S | ||
3546 | 18 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
3547 | 19 | USE PRECISION_GOLEM, ONLY: KI | ||
3548 | 20 | USE TENS_COMB | ||
3549 | 21 | USE TENS_REC | ||
3550 | 22 | USE FORM_FACTOR_1P, ONLY: A10 | ||
3551 | 23 | USE FORM_FACTOR_2P, ONLY: A20 | ||
3552 | 24 | USE FORM_FACTOR_3P, ONLY: A30 | ||
3553 | 25 | USE FORM_FACTOR_4P, ONLY: A40 | ||
3554 | 26 | USE FORM_FACTOR_5P, ONLY: A50 | ||
3555 | 27 | USE FORM_FACTOR_6P, ONLY: A60 | ||
3556 | 28 | IMPLICIT NONE | ||
3557 | 29 | C | ||
3558 | 30 | C CONSTANTS | ||
3559 | 31 | C | ||
3560 | 32 | INTEGER NEXTERNAL | ||
3561 | 33 | PARAMETER (NEXTERNAL=4) | ||
3562 | 34 | LOGICAL CHECKPCONSERVATION | ||
3563 | 35 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
3564 | 36 | REAL*8 NORMALIZATION | ||
3565 | 37 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
3566 | 38 | $ *2)) | ||
3567 | 39 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
3568 | 40 | $ ,0.0_KI,0.0_KI/) | ||
3569 | 41 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
3570 | 42 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
3571 | 43 | C directly from | ||
3572 | 44 | C numerator using golem internal reconstruction routine | ||
3573 | 45 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
3574 | 46 | C against | ||
3575 | 47 | C MadLoop internal ones. | ||
3576 | 48 | INTEGER GOLEM_RUN_MODE | ||
3577 | 49 | PARAMETER (GOLEM_RUN_MODE=1) | ||
3578 | 50 | C The following is the acceptance threshold used for | ||
3579 | 51 | C GOLEM_RUN_MODE = 3 | ||
3580 | 52 | REAL*8 COEF_CHECK_THRS | ||
3581 | 53 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
3582 | 54 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3583 | 55 | |||
3584 | 56 | LOGICAL PASS_COEF_CHECK | ||
3585 | 57 | C | ||
3586 | 58 | C ARGUMENTS | ||
3587 | 59 | C | ||
3588 | 60 | INTEGER NLOOPLINE, RANK | ||
3589 | 61 | REAL*8 PL(0:3,NLOOPLINE) | ||
3590 | 62 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
3591 | 63 | REAL*8 REF_P | ||
3592 | 64 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
3593 | 65 | COMPLEX*16 M2L(NLOOPLINE) | ||
3594 | 66 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
3595 | 67 | COMPLEX*16 RES(3) | ||
3596 | 68 | LOGICAL STABLE | ||
3597 | 69 | C | ||
3598 | 70 | C LOCAL VARIABLES | ||
3599 | 71 | C | ||
3600 | 72 | INTEGER I, J, K | ||
3601 | 73 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
3602 | 74 | |||
3603 | 75 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
3604 | 76 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
3605 | 77 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
3606 | 78 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
3607 | 79 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
3608 | 80 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
3609 | 81 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
3610 | 82 | |||
3611 | 83 | C The pinch propagator optimization is not used, so for now it is | ||
3612 | 84 | C always 0. | ||
3613 | 85 | INTEGER PINCH | ||
3614 | 86 | C | ||
3615 | 87 | C EXTERNAL FUNCTIONS | ||
3616 | 88 | C | ||
3617 | 89 | COMPLEX(KI) MG5_1_GOLEM_LOOPNUM | ||
3618 | 90 | EXTERNAL MG5_1_GOLEM_LOOPNUM | ||
3619 | 91 | LOGICAL MG5_1_COMPARE_COEFS_0 | ||
3620 | 92 | LOGICAL MG5_1_COMPARE_COEFS_1 | ||
3621 | 93 | LOGICAL MG5_1_COMPARE_COEFS_2 | ||
3622 | 94 | LOGICAL MG5_1_COMPARE_COEFS_3 | ||
3623 | 95 | LOGICAL MG5_1_COMPARE_COEFS_4 | ||
3624 | 96 | LOGICAL MG5_1_COMPARE_COEFS_5 | ||
3625 | 97 | LOGICAL MG5_1_COMPARE_COEFS_6 | ||
3626 | 98 | C | ||
3627 | 99 | C GLOBAL VARIABLES | ||
3628 | 100 | C | ||
3629 | 101 | INCLUDE 'coupl.inc' | ||
3630 | 102 | INTEGER CTMODE | ||
3631 | 103 | REAL*8 LSCALE | ||
3632 | 104 | COMMON/MG5_1_CT/LSCALE,CTMODE | ||
3633 | 105 | |||
3634 | 106 | INTEGER ID,SQSOINDEX,R | ||
3635 | 107 | COMMON/MG5_1_LOOP/ID,SQSOINDEX,R | ||
3636 | 108 | |||
3637 | 109 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
3638 | 110 | $ ,COLLIERINIT | ||
3639 | 111 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
3640 | 112 | $ ,NINJAINIT,COLLIERINIT | ||
3641 | 113 | |||
3642 | 114 | INTEGER NLOOPGROUPS | ||
3643 | 115 | PARAMETER (NLOOPGROUPS=13) | ||
3644 | 116 | INTEGER NSQUAREDSO | ||
3645 | 117 | PARAMETER (NSQUAREDSO=1) | ||
3646 | 118 | INCLUDE 'loop_max_coefs.inc' | ||
3647 | 119 | |||
3648 | 120 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
3649 | 121 | COMMON/MG5_1_LCOEFS/LOOPCOEFS | ||
3650 | 122 | C ---------- | ||
3651 | 123 | C BEGIN CODE | ||
3652 | 124 | C ---------- | ||
3653 | 125 | |||
3654 | 126 | C The CT initialization is also performed here if not done already | ||
3655 | 127 | C because it calls MPINIT of OneLOop which is necessary on some | ||
3656 | 128 | C system | ||
3657 | 129 | IF (CTINIT) THEN | ||
3658 | 130 | CTINIT=.FALSE. | ||
3659 | 131 | CALL MG5_1_INITCT() | ||
3660 | 132 | ENDIF | ||
3661 | 133 | |||
3662 | 134 | C INITIALIZE GOLEM IF NEEDED | ||
3663 | 135 | IF (GOLEMINIT) THEN | ||
3664 | 136 | GOLEMINIT=.FALSE. | ||
3665 | 137 | CALL MG5_1_INITGOLEM() | ||
3666 | 138 | ENDIF | ||
3667 | 139 | |||
3668 | 140 | C No stability test intrisic to Golem95 now | ||
3669 | 141 | STABLE=.TRUE. | ||
3670 | 142 | |||
3671 | 143 | C This initialization must be done for each reduction because we | ||
3672 | 144 | C have not setup anyoptimization using pinched propagators yet. | ||
3673 | 145 | CALL INITGOLEM95(NLOOPLINE) | ||
3674 | 146 | PINCH = 0 | ||
3675 | 147 | |||
3676 | 148 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
3677 | 149 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
3678 | 150 | |||
3679 | 151 | C CONVERT THE MASSES TO BE COMPLEX | ||
3680 | 152 | DO I=1,NLOOPLINE | ||
3681 | 153 | M2LGOLEM(I)=M2L(I) | ||
3682 | 154 | ENDDO | ||
3683 | 155 | |||
3684 | 156 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
3685 | 157 | DO I=0,3 | ||
3686 | 158 | ABSPCT(I) = 0.D0 | ||
3687 | 159 | DO J=0,(NLOOPLINE-1) | ||
3688 | 160 | PCT(I,J)=0.D0 | ||
3689 | 161 | ENDDO | ||
3690 | 162 | ENDDO | ||
3691 | 163 | DO I=0,3 | ||
3692 | 164 | DO J=1,NLOOPLINE | ||
3693 | 165 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
3694 | 166 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
3695 | 167 | ENDDO | ||
3696 | 168 | ENDDO | ||
3697 | 169 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
3698 | 170 | DO I=0,3 | ||
3699 | 171 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
3700 | 172 | ENDDO | ||
3701 | 173 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
3702 | 174 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
3703 | 175 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
3704 | 176 | STOP 'energy is not conserved' | ||
3705 | 177 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
3706 | 178 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
3707 | 179 | STOP 'px is not conserved' | ||
3708 | 180 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
3709 | 181 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
3710 | 182 | STOP 'py is not conserved' | ||
3711 | 183 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
3712 | 184 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
3713 | 185 | STOP 'pz is not conserved' | ||
3714 | 186 | ENDIF | ||
3715 | 187 | ENDIF | ||
3716 | 188 | DO I=0,3 | ||
3717 | 189 | DO J=1,(NLOOPLINE-1) | ||
3718 | 190 | DO K=1,J | ||
3719 | 191 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
3720 | 192 | ENDDO | ||
3721 | 193 | ENDDO | ||
3722 | 194 | ENDDO | ||
3723 | 195 | |||
3724 | 196 | C Now convert the loop momenta to Golem95 conventions | ||
3725 | 197 | DO I=0,3 | ||
3726 | 198 | PGOLEM(1,I)=0.0E0_KI | ||
3727 | 199 | DO J=2,NLOOPLINE | ||
3728 | 200 | PGOLEM(J,I)=PCT(I,J-1) | ||
3729 | 201 | ENDDO | ||
3730 | 202 | ENDDO | ||
3731 | 203 | |||
3732 | 204 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
3733 | 205 | C limits. | ||
3734 | 206 | CALL MG5_1_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
3735 | 207 | C Construct the golem internal matrices derived from the kinetic | ||
3736 | 208 | C one. | ||
3737 | 209 | CALL PREPARESMATRIX() | ||
3738 | 210 | |||
3739 | 211 | C Fill in the golem coefficents and compute the loop | ||
3740 | 212 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
3741 | 213 | RES_GOLEM = EVALUATE_B(MG5_1_GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
3742 | 214 | ELSE | ||
3743 | 215 | PASS_COEF_CHECK=.TRUE. | ||
3744 | 216 | SELECT CASE(RANK) | ||
3745 | 217 | CASE(0) | ||
3746 | 218 | CALL MG5_1_FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3747 | 219 | $ ,COEFFS0) | ||
3748 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3749 | 221 | COEFFS0_REC = MG5_1_GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
3750 | 222 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
3751 | 223 | ENDIF | ||
3752 | 224 | CASE(1) | ||
3753 | 225 | CALL MG5_1_FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3754 | 226 | $ ,COEFFS1) | ||
3755 | 227 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3756 | 228 | CALL RECONSTRUCT1(MG5_1_GOLEM_LOOPNUM,COEFFS1_REC) | ||
3757 | 229 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
3758 | 230 | ENDIF | ||
3759 | 231 | CASE(2) | ||
3760 | 232 | CALL MG5_1_FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3761 | 233 | $ ,COEFFS2) | ||
3762 | 234 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3763 | 235 | CALL RECONSTRUCT2(MG5_1_GOLEM_LOOPNUM,COEFFS2_REC) | ||
3764 | 236 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
3765 | 237 | ENDIF | ||
3766 | 238 | CASE(3) | ||
3767 | 239 | CALL MG5_1_FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3768 | 240 | $ ,COEFFS3) | ||
3769 | 241 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3770 | 242 | CALL RECONSTRUCT3(MG5_1_GOLEM_LOOPNUM,COEFFS3_REC) | ||
3771 | 243 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
3772 | 244 | ENDIF | ||
3773 | 245 | CASE(4) | ||
3774 | 246 | CALL MG5_1_FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3775 | 247 | $ ,COEFFS4) | ||
3776 | 248 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3777 | 249 | CALL RECONSTRUCT4(MG5_1_GOLEM_LOOPNUM,COEFFS4_REC) | ||
3778 | 250 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
3779 | 251 | ENDIF | ||
3780 | 252 | CASE(5) | ||
3781 | 253 | CALL MG5_1_FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3782 | 254 | $ ,COEFFS5) | ||
3783 | 255 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3784 | 256 | CALL RECONSTRUCT5(MG5_1_GOLEM_LOOPNUM,COEFFS5_REC) | ||
3785 | 257 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
3786 | 258 | ENDIF | ||
3787 | 259 | CASE(6) | ||
3788 | 260 | CALL MG5_1_FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID) | ||
3789 | 261 | $ ,COEFFS6) | ||
3790 | 262 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3791 | 263 | CALL RECONSTRUCT6(MG5_1_GOLEM_LOOPNUM,COEFFS6_REC) | ||
3792 | 264 | PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
3793 | 265 | ENDIF | ||
3794 | 266 | CASE DEFAULT | ||
3795 | 267 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
3796 | 268 | STOP | ||
3797 | 269 | END SELECT | ||
3798 | 270 | |||
3799 | 271 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
3800 | 272 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
3801 | 273 | WRITE(*,*)'Coefs form MadLoop5:' | ||
3802 | 274 | SELECT CASE(RANK) | ||
3803 | 275 | CASE(0) | ||
3804 | 276 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
3805 | 277 | CASE(1) | ||
3806 | 278 | CALL PRINT_COEFFS(COEFFS1) | ||
3807 | 279 | CASE(2) | ||
3808 | 280 | CALL PRINT_COEFFS(COEFFS2) | ||
3809 | 281 | CASE(3) | ||
3810 | 282 | CALL PRINT_COEFFS(COEFFS3) | ||
3811 | 283 | CASE(4) | ||
3812 | 284 | CALL PRINT_COEFFS(COEFFS4) | ||
3813 | 285 | CASE(5) | ||
3814 | 286 | CALL PRINT_COEFFS(COEFFS5) | ||
3815 | 287 | CASE(6) | ||
3816 | 288 | CALL PRINT_COEFFS(COEFFS6) | ||
3817 | 289 | END SELECT | ||
3818 | 290 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
3819 | 291 | SELECT CASE(RANK) | ||
3820 | 292 | CASE(0) | ||
3821 | 293 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
3822 | 294 | CASE(1) | ||
3823 | 295 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
3824 | 296 | CASE(2) | ||
3825 | 297 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
3826 | 298 | CASE(3) | ||
3827 | 299 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
3828 | 300 | CASE(4) | ||
3829 | 301 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
3830 | 302 | CASE(5) | ||
3831 | 303 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
3832 | 304 | CASE(6) | ||
3833 | 305 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
3834 | 306 | END SELECT | ||
3835 | 307 | STOP | ||
3836 | 308 | ENDIF | ||
3837 | 309 | |||
3838 | 310 | SELECT CASE(NLOOPLINE) | ||
3839 | 311 | CASE(1) | ||
3840 | 312 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
3841 | 313 | STOP | ||
3842 | 314 | CASE(2) | ||
3843 | 315 | SELECT CASE(RANK) | ||
3844 | 316 | CASE(0) | ||
3845 | 317 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
3846 | 318 | CASE(1) | ||
3847 | 319 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
3848 | 320 | CASE(2) | ||
3849 | 321 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
3850 | 322 | CASE(3) | ||
3851 | 323 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
3852 | 324 | CASE DEFAULT | ||
3853 | 325 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
3854 | 326 | STOP | ||
3855 | 327 | END SELECT | ||
3856 | 328 | CASE(3) | ||
3857 | 329 | SELECT CASE(RANK) | ||
3858 | 330 | CASE(0) | ||
3859 | 331 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
3860 | 332 | CASE(1) | ||
3861 | 333 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
3862 | 334 | CASE(2) | ||
3863 | 335 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
3864 | 336 | CASE(3) | ||
3865 | 337 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
3866 | 338 | CASE(4) | ||
3867 | 339 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
3868 | 340 | CASE DEFAULT | ||
3869 | 341 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
3870 | 342 | STOP | ||
3871 | 343 | END SELECT | ||
3872 | 344 | CASE(4) | ||
3873 | 345 | SELECT CASE(RANK) | ||
3874 | 346 | CASE(0) | ||
3875 | 347 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
3876 | 348 | CASE(1) | ||
3877 | 349 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
3878 | 350 | CASE(2) | ||
3879 | 351 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
3880 | 352 | CASE(3) | ||
3881 | 353 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
3882 | 354 | CASE(4) | ||
3883 | 355 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
3884 | 356 | CASE(5) | ||
3885 | 357 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
3886 | 358 | CASE DEFAULT | ||
3887 | 359 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
3888 | 360 | STOP | ||
3889 | 361 | END SELECT | ||
3890 | 362 | CASE(5) | ||
3891 | 363 | SELECT CASE(RANK) | ||
3892 | 364 | CASE(0) | ||
3893 | 365 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
3894 | 366 | CASE(1) | ||
3895 | 367 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
3896 | 368 | CASE(2) | ||
3897 | 369 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
3898 | 370 | CASE(3) | ||
3899 | 371 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
3900 | 372 | CASE(4) | ||
3901 | 373 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
3902 | 374 | CASE(5) | ||
3903 | 375 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
3904 | 376 | CASE(6) | ||
3905 | 377 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
3906 | 378 | CASE DEFAULT | ||
3907 | 379 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
3908 | 380 | STOP | ||
3909 | 381 | END SELECT | ||
3910 | 382 | CASE(6) | ||
3911 | 383 | SELECT CASE(RANK) | ||
3912 | 384 | CASE(0) | ||
3913 | 385 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
3914 | 386 | CASE(1) | ||
3915 | 387 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
3916 | 388 | CASE(2) | ||
3917 | 389 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
3918 | 390 | CASE(3) | ||
3919 | 391 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
3920 | 392 | CASE(4) | ||
3921 | 393 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
3922 | 394 | CASE(5) | ||
3923 | 395 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
3924 | 396 | CASE(6) | ||
3925 | 397 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
3926 | 398 | CASE DEFAULT | ||
3927 | 399 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
3928 | 400 | STOP | ||
3929 | 401 | END SELECT | ||
3930 | 402 | CASE DEFAULT | ||
3931 | 403 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
3932 | 404 | STOP | ||
3933 | 405 | END SELECT | ||
3934 | 406 | ENDIF | ||
3935 | 407 | |||
3936 | 408 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
3937 | 409 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
3938 | 410 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
3939 | 411 | $ *RES_GOLEM%%A) | ||
3940 | 412 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
3941 | 413 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
3942 | 414 | |||
3943 | 415 | C Finally free golem memory and cache | ||
3944 | 416 | CALL EXITGOLEM95() | ||
3945 | 417 | |||
3946 | 418 | END | ||
3947 | 419 | |||
3948 | 420 | FUNCTION MG5_1_GOLEM_LOOPNUM(Q,MU2) | ||
3949 | 421 | USE PRECISION_GOLEM, ONLY: KI | ||
3950 | 422 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
3951 | 423 | REAL(KI),INTENT(IN)::MU2 | ||
3952 | 424 | COMPLEX(KI)::MG5_1_GOLEM_LOOPNUM | ||
3953 | 425 | |||
3954 | 426 | COMPLEX*16 QQ(0:3),NUM | ||
3955 | 427 | INTEGER I | ||
3956 | 428 | |||
3957 | 429 | DO I=0,3 | ||
3958 | 430 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
3959 | 431 | ENDDO | ||
3960 | 432 | |||
3961 | 433 | CALL MG5_1_LOOPNUM(QQ,NUM) | ||
3962 | 434 | MG5_1_GOLEM_LOOPNUM=NUM | ||
3963 | 435 | RETURN | ||
3964 | 436 | END FUNCTION | ||
3965 | 437 | |||
3966 | 438 | SUBROUTINE MG5_1_INITGOLEM() | ||
3967 | 439 | C | ||
3968 | 440 | C INITIALISATION OF GOLEM | ||
3969 | 441 | C | ||
3970 | 442 | C | ||
3971 | 443 | C MODULE | ||
3972 | 444 | C | ||
3973 | 445 | USE PARAMETRE | ||
3974 | 446 | C | ||
3975 | 447 | C LOCAL VARIABLES | ||
3976 | 448 | C | ||
3977 | 449 | REAL*8 THRS | ||
3978 | 450 | LOGICAL EXT_NUM_FOR_R1 | ||
3979 | 451 | C | ||
3980 | 452 | C GLOBAL VARIABLES | ||
3981 | 453 | C | ||
3982 | 454 | INCLUDE 'MadLoopParams.inc' | ||
3983 | 455 | C ---------- | ||
3984 | 456 | C BEGIN CODE | ||
3985 | 457 | C ---------- | ||
3986 | 458 | |||
3987 | 459 | C DEFAULT PARAMETERS FOR GOLEM | ||
3988 | 460 | C ------------------------------- | ||
3989 | 461 | C One can chose here to have either just the rational R1 piece | ||
3990 | 462 | C or everything but the R2 | ||
3991 | 463 | RAT_OR_TOT_PAR = TOT | ||
3992 | 464 | |||
3993 | 465 | END | ||
3994 | 466 | |||
3995 | 467 | SUBROUTINE MG5_1_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
3996 | 468 | C | ||
3997 | 469 | C MODULE | ||
3998 | 470 | C | ||
3999 | 471 | USE MATRICE_S | ||
4000 | 472 | USE PRECISION_GOLEM, ONLY: KI | ||
4001 | 473 | C | ||
4002 | 474 | C ARGUMENTS | ||
4003 | 475 | C | ||
4004 | 476 | INTEGER NLOOPLINE | ||
4005 | 477 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
4006 | 478 | COMPLEX(KI) M2L(NLOOPLINE) | ||
4007 | 479 | C | ||
4008 | 480 | C LOCAL VARIABLES | ||
4009 | 481 | C | ||
4010 | 482 | INTEGER I,J | ||
4011 | 483 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
4012 | 484 | C ---------- | ||
4013 | 485 | C BEGIN CODE | ||
4014 | 486 | C ---------- | ||
4015 | 487 | |||
4016 | 488 | CALL MG5_1_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L | ||
4017 | 489 | $ ,S_MAT_FROM_MG) | ||
4018 | 490 | |||
4019 | 491 | DO I=1,NLOOPLINE | ||
4020 | 492 | DO J=1,NLOOPLINE | ||
4021 | 493 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
4022 | 494 | ENDDO | ||
4023 | 495 | ENDDO | ||
4024 | 496 | |||
4025 | 497 | END | ||
4026 | 498 | |||
4027 | 499 | FUNCTION MG5_1_COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
4028 | 500 | |||
4029 | 501 | USE PRECISION_GOLEM, ONLY: KI | ||
4030 | 502 | COMPLEX(KI) COEFS_A,COEFS_B | ||
4031 | 503 | REAL*8 COEF_CHECK_THRS | ||
4032 | 504 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4033 | 505 | REAL*8 DENOM,NUM | ||
4034 | 506 | LOGICAL MG5_1_COMPARE_COEFS_0 | ||
4035 | 507 | |||
4036 | 508 | NUM = ABS(COEFS_A-COEFS_B) | ||
4037 | 509 | DENOM = ABS(COEFS_A+COEFS_B) | ||
4038 | 510 | IF(DENOM.GT.0D0)THEN | ||
4039 | 511 | MG5_1_COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4040 | 512 | ELSE | ||
4041 | 513 | MG5_1_COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
4042 | 514 | ENDIF | ||
4043 | 515 | |||
4044 | 516 | END | ||
4045 | 517 | |||
4046 | 518 | FUNCTION MG5_1_COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
4047 | 519 | |||
4048 | 520 | USE TENS_REC | ||
4049 | 521 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
4050 | 522 | REAL*8 COEF_CHECK_THRS | ||
4051 | 523 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4052 | 524 | REAL*8 DENOM,NUM | ||
4053 | 525 | LOGICAL MG5_1_COMPARE_COEFS_1 | ||
4054 | 526 | |||
4055 | 527 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4056 | 528 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4057 | 529 | $ ) | ||
4058 | 530 | |||
4059 | 531 | IF(DENOM.GT.0D0)THEN | ||
4060 | 532 | MG5_1_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4061 | 533 | ELSE | ||
4062 | 534 | MG5_1_COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
4063 | 535 | ENDIF | ||
4064 | 536 | |||
4065 | 537 | END | ||
4066 | 538 | |||
4067 | 539 | FUNCTION MG5_1_COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
4068 | 540 | |||
4069 | 541 | USE TENS_REC | ||
4070 | 542 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
4071 | 543 | REAL*8 COEF_CHECK_THRS | ||
4072 | 544 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4073 | 545 | REAL*8 DENOM,NUM | ||
4074 | 546 | LOGICAL MG5_1_COMPARE_COEFS_2 | ||
4075 | 547 | |||
4076 | 548 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4077 | 549 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
4078 | 550 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4079 | 551 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
4080 | 552 | IF(DENOM.GT.0D0)THEN | ||
4081 | 553 | MG5_1_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4082 | 554 | ELSE | ||
4083 | 555 | MG5_1_COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
4084 | 556 | ENDIF | ||
4085 | 557 | |||
4086 | 558 | END | ||
4087 | 559 | |||
4088 | 560 | FUNCTION MG5_1_COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
4089 | 561 | |||
4090 | 562 | USE TENS_REC | ||
4091 | 563 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
4092 | 564 | REAL*8 COEF_CHECK_THRS | ||
4093 | 565 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4094 | 566 | REAL*8 DENOM,NUM | ||
4095 | 567 | LOGICAL MG5_1_COMPARE_COEFS_3 | ||
4096 | 568 | |||
4097 | 569 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4098 | 570 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4099 | 571 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4100 | 572 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4101 | 573 | $ ) | ||
4102 | 574 | IF(DENOM.GT.0D0)THEN | ||
4103 | 575 | MG5_1_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4104 | 576 | ELSE | ||
4105 | 577 | MG5_1_COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
4106 | 578 | ENDIF | ||
4107 | 579 | |||
4108 | 580 | END | ||
4109 | 581 | |||
4110 | 582 | FUNCTION MG5_1_COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
4111 | 583 | |||
4112 | 584 | USE TENS_REC | ||
4113 | 585 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
4114 | 586 | REAL*8 COEF_CHECK_THRS | ||
4115 | 587 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4116 | 588 | REAL*8 DENOM,NUM | ||
4117 | 589 | LOGICAL MG5_1_COMPARE_COEFS_4 | ||
4118 | 590 | |||
4119 | 591 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4120 | 592 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4121 | 593 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4122 | 594 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4123 | 595 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4124 | 596 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4125 | 597 | IF(DENOM.GT.0D0)THEN | ||
4126 | 598 | MG5_1_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4127 | 599 | ELSE | ||
4128 | 600 | MG5_1_COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
4129 | 601 | ENDIF | ||
4130 | 602 | |||
4131 | 603 | END | ||
4132 | 604 | |||
4133 | 605 | FUNCTION MG5_1_COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
4134 | 606 | |||
4135 | 607 | USE TENS_REC | ||
4136 | 608 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
4137 | 609 | REAL*8 COEF_CHECK_THRS | ||
4138 | 610 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4139 | 611 | REAL*8 DENOM,NUM | ||
4140 | 612 | LOGICAL MG5_1_COMPARE_COEFS_5 | ||
4141 | 613 | |||
4142 | 614 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4143 | 615 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4144 | 616 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4145 | 617 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4146 | 618 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4147 | 619 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4148 | 620 | IF(DENOM.GT.0D0)THEN | ||
4149 | 621 | MG5_1_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4150 | 622 | ELSE | ||
4151 | 623 | MG5_1_COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
4152 | 624 | ENDIF | ||
4153 | 625 | |||
4154 | 626 | END | ||
4155 | 627 | |||
4156 | 628 | FUNCTION MG5_1_COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
4157 | 629 | |||
4158 | 630 | USE TENS_REC | ||
4159 | 631 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
4160 | 632 | REAL*8 COEF_CHECK_THRS | ||
4161 | 633 | COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4162 | 634 | REAL*8 DENOM,NUM | ||
4163 | 635 | LOGICAL MG5_1_COMPARE_COEFS_6 | ||
4164 | 636 | |||
4165 | 637 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4166 | 638 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4167 | 639 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4168 | 640 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4169 | 641 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4170 | 642 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4171 | 643 | IF(DENOM.GT.0D0)THEN | ||
4172 | 644 | MG5_1_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4173 | 645 | ELSE | ||
4174 | 646 | MG5_1_COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
4175 | 647 | ENDIF | ||
4176 | 648 | |||
4177 | 649 | END | ||
4178 | 650 | |||
4179 | 651 | |||
4180 | 652 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
4181 | 653 | USE PRECISION_GOLEM, ONLY: KI | ||
4182 | 654 | INCLUDE 'coef_specs.inc' | ||
4183 | 655 | INCLUDE 'loop_max_coefs.inc' | ||
4184 | 656 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4185 | 657 | COMPLEX(KI) GOLEM_COEFS | ||
4186 | 658 | GOLEM_COEFS=ML_COEFS(0) | ||
4187 | 659 | END | ||
4188 | 660 | |||
4189 | 661 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
4190 | 662 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
4191 | 663 | INCLUDE 'coef_specs.inc' | ||
4192 | 664 | INCLUDE 'loop_max_coefs.inc' | ||
4193 | 665 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4194 | 666 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
4195 | 667 | C Constant coefficient | ||
4196 | 668 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
4197 | 669 | C Coefficient q(0) | ||
4198 | 670 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
4199 | 671 | C Coefficient q(1) | ||
4200 | 672 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
4201 | 673 | C Coefficient q(2) | ||
4202 | 674 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
4203 | 675 | C Coefficient q(3) | ||
4204 | 676 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
4205 | 677 | END | ||
4206 | 678 | |||
4207 | 679 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
4208 | 680 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
4209 | 681 | INCLUDE 'coef_specs.inc' | ||
4210 | 682 | INCLUDE 'loop_max_coefs.inc' | ||
4211 | 683 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4212 | 684 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
4213 | 685 | C Constant coefficient | ||
4214 | 686 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
4215 | 687 | C Coefficient q(0) | ||
4216 | 688 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
4217 | 689 | C Coefficient q(0)^2 | ||
4218 | 690 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
4219 | 691 | C Coefficient q(1) | ||
4220 | 692 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
4221 | 693 | C Coefficient q(1)^2 | ||
4222 | 694 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
4223 | 695 | C Coefficient q(2) | ||
4224 | 696 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
4225 | 697 | C Coefficient q(2)^2 | ||
4226 | 698 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
4227 | 699 | C Coefficient q(3) | ||
4228 | 700 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
4229 | 701 | C Coefficient q(3)^2 | ||
4230 | 702 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
4231 | 703 | C Coefficient q(0)*q(1) | ||
4232 | 704 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
4233 | 705 | C Coefficient q(0)*q(2) | ||
4234 | 706 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
4235 | 707 | C Coefficient q(0)*q(3) | ||
4236 | 708 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
4237 | 709 | C Coefficient q(1)*q(2) | ||
4238 | 710 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
4239 | 711 | C Coefficient q(1)*q(3) | ||
4240 | 712 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
4241 | 713 | C Coefficient q(2)*q(3) | ||
4242 | 714 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
4243 | 715 | END | ||
4244 | 716 | |||
4245 | 717 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
4246 | 718 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
4247 | 719 | INCLUDE 'coef_specs.inc' | ||
4248 | 720 | INCLUDE 'loop_max_coefs.inc' | ||
4249 | 721 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4250 | 722 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
4251 | 723 | C Dummy routine for MG5_1_FILL_GOLEM_COEFS_3 | ||
4252 | 724 | STOP 'ERROR: 3 > 2' | ||
4253 | 725 | END | ||
4254 | 726 | |||
4255 | 727 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
4256 | 728 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
4257 | 729 | INCLUDE 'coef_specs.inc' | ||
4258 | 730 | INCLUDE 'loop_max_coefs.inc' | ||
4259 | 731 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4260 | 732 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
4261 | 733 | C Dummy routine for MG5_1_FILL_GOLEM_COEFS_4 | ||
4262 | 734 | STOP 'ERROR: 4 > 2' | ||
4263 | 735 | END | ||
4264 | 736 | |||
4265 | 737 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
4266 | 738 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
4267 | 739 | INCLUDE 'coef_specs.inc' | ||
4268 | 740 | INCLUDE 'loop_max_coefs.inc' | ||
4269 | 741 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4270 | 742 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
4271 | 743 | C Dummy routine for MG5_1_FILL_GOLEM_COEFS_5 | ||
4272 | 744 | STOP 'ERROR: 5 > 2' | ||
4273 | 745 | END | ||
4274 | 746 | |||
4275 | 747 | SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
4276 | 748 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
4277 | 749 | INCLUDE 'coef_specs.inc' | ||
4278 | 750 | INCLUDE 'loop_max_coefs.inc' | ||
4279 | 751 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4280 | 752 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
4281 | 753 | C Dummy routine for MG5_1_FILL_GOLEM_COEFS_6 | ||
4282 | 754 | STOP 'ERROR: 6 > 2' | ||
4283 | 755 | END | ||
4284 | 756 | 0 | ||
4285 | === modified file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f' | |||
4286 | --- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f 2016-06-28 23:55:35 +0000 | |||
4287 | +++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f 2018-11-09 08:24:41 +0000 | |||
4288 | @@ -95,17 +95,9 @@ | |||
4289 | 95 | ENDIF | 95 | ENDIF |
4290 | 96 | 96 | ||
4291 | 97 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 97 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
4303 | 98 | C Using Golem95 | 98 | C Golem95 not available |
4304 | 99 | C PDEN is dummy for Golem95 so we just initialize it to zero | 99 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
4305 | 100 | C here so as to use it for the function SWITCHORDER | 100 | STOP |
4295 | 101 | DO I=0,3 | ||
4296 | 102 | DO J=1,NLOOPLINE-1 | ||
4297 | 103 | PDEN(I,J)=0.0D0 | ||
4298 | 104 | ENDDO | ||
4299 | 105 | ENDDO | ||
4300 | 106 | CALL MG5_1_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
4301 | 107 | CALL MG5_1_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
4302 | 108 | RETURN | ||
4306 | 109 | ENDIF | 101 | ENDIF |
4307 | 110 | 102 | ||
4308 | 111 | C INITIALIZE TIR IF NEEDED | 103 | C INITIALIZE TIR IF NEEDED |
4309 | 112 | 104 | ||
4310 | === modified file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f' | |||
4311 | --- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f 2017-08-15 19:34:40 +0000 | |||
4312 | +++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f 2018-11-09 08:24:41 +0000 | |||
4313 | @@ -243,7 +243,7 @@ | |||
4314 | 243 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 243 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
4315 | 244 | C AVAILABLE OR NOT | 244 | C AVAILABLE OR NOT |
4316 | 245 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 245 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
4318 | 246 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 246 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
4319 | 247 | $ ,.TRUE.,.TRUE./ | 247 | $ ,.TRUE.,.TRUE./ |
4320 | 248 | COMMON/MG5_1_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 248 | COMMON/MG5_1_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
4321 | 249 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 249 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
4322 | 250 | 250 | ||
4323 | === modified file 'tests/unit_tests/iolibs/test_export_v4.py' | |||
4324 | --- tests/unit_tests/iolibs/test_export_v4.py 2018-06-14 20:20:22 +0000 | |||
4325 | +++ tests/unit_tests/iolibs/test_export_v4.py 2018-11-09 08:24:41 +0000 | |||
4326 | @@ -2455,6 +2455,13 @@ | |||
4327 | 2455 | created_files = ['leshouche' | 2455 | created_files = ['leshouche' |
4328 | 2456 | ] | 2456 | ] |
4329 | 2457 | 2457 | ||
4330 | 2458 | |||
4331 | 2459 | def setUp(self): | ||
4332 | 2460 | |||
4333 | 2461 | |||
4334 | 2462 | helas_call_writers.HelasCallWriter.customize_argument_for_all_other_helas_object =\ | ||
4335 | 2463 | staticmethod(helas_call_writers.HelasCallWriter.default_customize_argument_for_all_other_helas_object) | ||
4336 | 2464 | |||
4337 | 2458 | tearDown = test_file_writers.CheckFileCreate.clean_files | 2465 | tearDown = test_file_writers.CheckFileCreate.clean_files |
4338 | 2459 | 2466 | ||
4339 | 2460 | def test_generate_helas_diagrams_ea_ae(self): | 2467 | def test_generate_helas_diagrams_ea_ae(self): |