~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/TIR_interface.f

  • Committer: olivier Mattelaer
  • Date: 2015-03-05 00:14:16 UTC
  • mfrom: (258.1.9 2.3)
  • mto: (258.8.1 2.3)
  • mto: This revision was merged to the branch mainline in revision 259.
  • Revision ID: olivier.mattelaer@uclouvain.be-20150305001416-y9mzeykfzwnl9t0j
partial merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
      LOGICAL CTINIT, TIRINIT, GOLEMINIT
47
47
      COMMON/REDUCTIONCODEINIT/CTINIT,TIRINIT,GOLEMINIT
48
48
 
 
49
C     This variable will be used to detect changes in the TIR library
 
50
C      used so as to force the reset of the TIR filter.
 
51
      INTEGER LAST_LIB_USED
 
52
      DATA LAST_LIB_USED/-1/
 
53
 
49
54
      COMPLEX*16 TIRCOEFS(0:LOOPMAXCOEFS-1,3)
50
55
      COMPLEX*16 PJCOEFS(0:LOOPMAXCOEFS-1,3)
51
56
C     
60
65
      REAL*8 LSCALE
61
66
      COMMON/ML5_0_CT/LSCALE,CTMODE
62
67
 
 
68
C     The argument ILIB is the TIR library to be used for that
 
69
C      specific library.
 
70
      INTEGER LIBINDEX
 
71
      COMMON/ML5_0_I_LIB/LIBINDEX
63
72
 
64
73
      COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
65
74
      COMMON/ML5_0_LCOEFS/LOOPCOEFS
66
 
 
67
75
C     ----------
68
76
C     BEGIN CODE
69
77
C     ----------
70
78
 
 
79
C     Initialize for the very first time ML is called LAST_ILIB with
 
80
C      the first ILIB used.
 
81
      IF(LAST_LIB_USED.EQ.-1) THEN
 
82
        LAST_LIB_USED = MLREDUCTIONLIB(LIBINDEX)
 
83
      ELSE
 
84
C       We changed the TIR library so we must refresh the cache.
 
85
        IF(MLREDUCTIONLIB(LIBINDEX).NE.LAST_LIB_USED) THEN
 
86
          LAST_LIB_USED = MLREDUCTIONLIB(LIBINDEX)
 
87
          CALL ML5_0_CLEAR_TIR_CACHE()
 
88
        ENDIF
 
89
      ENDIF
 
90
 
 
91
      IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN
 
92
C       Golem95 not available
 
93
        WRITE(*,*) 'ERROR:: Golem95 is not interfaced.'
 
94
        STOP
 
95
      ENDIF
 
96
 
71
97
C     INITIALIZE TIR IF NEEDED
72
 
 
73
98
      IF (TIRINIT) THEN
74
99
        TIRINIT=.FALSE.
75
100
        CALL ML5_0_INITTIR()
124
149
      DO I=0,RANK
125
150
        NLOOPCOEFS=NLOOPCOEFS+(3+I)*(2+I)*(1+I)/6
126
151
      ENDDO
127
 
 
128
152
      SELECT CASE(MLREDUCTIONLIB(I_LIB))
129
153
      CASE(2)
130
154
C     PJFry++
131
 
      WRITE(*,*)'PJFRY is not installed correctly  !'
 
155
      WRITE(*,*) 'ERROR:: PJFRY++ is not interfaced.'
132
156
      STOP
133
157
      CASE(3)
134
158
C     IREGI
135
 
      WRITE(*,*)'IREGI is not installed correctly  !'
 
159
      WRITE(*,*) 'ERROR:: IREGI is not interfaced.'
136
160
      STOP
137
161
      END SELECT
138
 
 
139
162
      DO I=1,3
140
 
        RES(I)=LOOPCOEFS(0,I_SQSO,I_LOOPGROUP)*TIRCOEFS(0,I)
141
 
        DO J=1,NLOOPCOEFS-1
 
163
        RES(I)=(0.0D0,0.0D0)
 
164
        DO J=0,NLOOPCOEFS-1
142
165
          RES(I)=RES(I)+LOOPCOEFS(J,I_SQSO,I_LOOPGROUP)*TIRCOEFS(J,I)
143
166
        ENDDO
144
167
      ENDDO
148
171
C     WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
149
172
      END
150
173
 
 
174
      SUBROUTINE ML5_0_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
 
175
      IMPLICIT NONE
 
176
 
 
177
      INTEGER CTMODE,NLOOPLINE
 
178
 
 
179
      REAL*8 PL(0:3,NLOOPLINE)
 
180
      REAL*8 PDEN(0:3,NLOOPLINE-1)
 
181
      COMPLEX*16 M2L(NLOOPLINE)
 
182
      REAL*8 NEW_PL(0:3,NLOOPLINE)
 
183
      REAL*8 NEW_PDEN(0:3,NLOOPLINE-1)
 
184
      COMPLEX*16 NEW_M2L(NLOOPLINE)
 
185
 
 
186
      INTEGER I,J,K
 
187
 
 
188
      IF (CTMODE.NE.2.AND.CTMODE.NE.4) THEN
 
189
        RETURN
 
190
      ENDIF
 
191
 
 
192
      IF (NLOOPLINE.LE.2) THEN
 
193
        RETURN
 
194
      ENDIF
 
195
 
 
196
      DO I=1,NLOOPLINE-1
 
197
        DO J=0,3
 
198
          NEW_PDEN(J,NLOOPLINE-I) = PDEN(J,I)
 
199
        ENDDO
 
200
      ENDDO
 
201
      DO I=1,NLOOPLINE-1
 
202
        DO J=0,3
 
203
          PDEN(J,I) = NEW_PDEN(J,I)
 
204
        ENDDO
 
205
      ENDDO
 
206
 
 
207
      DO I=2,NLOOPLINE
 
208
        NEW_M2L(I)=M2L(NLOOPLINE-I+2)
 
209
      ENDDO
 
210
      DO I=2,NLOOPLINE
 
211
        M2L(I)=NEW_M2L(I)
 
212
      ENDDO
 
213
 
 
214
 
 
215
      DO I=1,NLOOPLINE
 
216
        DO J=0,3
 
217
          NEW_PL(J,I) = -PL(J,NLOOPLINE+1-I)
 
218
        ENDDO
 
219
      ENDDO
 
220
      DO I=1,NLOOPLINE
 
221
        DO J=0,3
 
222
          PL(J,I) = NEW_PL(J,I)
 
223
        ENDDO
 
224
      ENDDO
 
225
 
 
226
      END
 
227
 
151
228
      SUBROUTINE ML5_0_INITTIR()
152
229
C     
153
230
C     INITIALISATION OF TIR
181
258
C     2 -> AVH
182
259
C     3 -> QCDLOOP
183
260
      LOOPLIB=CTLOOPLIBRARY
184
 
 
185
261
C     The initialization below is for CT v1.9.2+
186
262
      IF (CTINIT) THEN
187
263
        CTINIT=.FALSE.
204
280
C     CONSTANTS
205
281
C     
206
282
      INTEGER NLOOPLIB,QP_NLOOPLIB
207
 
      PARAMETER (NLOOPLIB=3,QP_NLOOPLIB=1)
 
283
      PARAMETER (NLOOPLIB=4,QP_NLOOPLIB=1)
208
284
C     
209
285
C     ARGUMENTS
210
286
C     
213
289
C     
214
290
C     LOCAL VARIABLES
215
291
C     
216
 
      INTEGER I,J_LIB,LIBNUM
 
292
      INTEGER I,J_LIB,LIBNUM,SELECT_LIBINDEX
217
293
      LOGICAL LPASS
218
294
C     
219
295
C     GLOBAL VARIABLES
234
310
     $     //'b is correct'
235
311
        ENDIF
236
312
        J_LIB=0
237
 
        DO I=1,QP_NLOOPLIB
238
 
          IF(INDEX_QP_TOOLS(I).EQ.LIBINDEX)THEN
239
 
            J_LIB=I
240
 
            EXIT
 
313
        SELECT_LIBINDEX=LIBINDEX
 
314
        DO WHILE(J_LIB.EQ.0)
 
315
          DO I=1,QP_NLOOPLIB
 
316
            IF(INDEX_QP_TOOLS(I).EQ.SELECT_LIBINDEX)THEN
 
317
              J_LIB=I
 
318
              EXIT
 
319
            ENDIF
 
320
          ENDDO
 
321
          IF(J_LIB.EQ.0)THEN
 
322
            SELECT_LIBINDEX=SELECT_LIBINDEX+1
 
323
            IF(SELECT_LIBINDEX.GT.NLOOPLIB.OR.MLREDUCTIONLIB(SELECT_LIB
 
324
     $       INDEX).EQ.0)SELECT_LIBINDEX=1
241
325
          ENDIF
242
326
        ENDDO
243
 
        IF(J_LIB.EQ.0)THEN
244
 
          STOP 'CANNOT find the correct qp tool'
245
 
        ENDIF
246
327
        I=J_LIB
247
 
        I_LIB=LIBINDEX
 
328
        I_LIB=SELECT_LIBINDEX
248
329
        LIBNUM=MLREDUCTIONLIB(I_LIB)
249
330
        DO
250
331
        CALL DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,COMPLEX_MASS,LPASS)
279
360
      RETURN
280
361
      END
281
362
 
 
363
      SUBROUTINE ML5_0_CLEAR_TIR_CACHE()
 
364
C     No TIR caching implemented, this is dummy. (The subroutine is
 
365
C      kept as it might be called by the MC).
 
366
      CONTINUE
 
367
      END SUBROUTINE
 
368
 
 
369