~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/long_ML_SMQCD_optimized/dux_mumvmxg/loop_matrix.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:
16
16
C     
17
17
      IMPLICIT NONE
18
18
C     
 
19
C     USER CUSTOMIZABLE OPTIONS
 
20
C     
 
21
C     This parameter is designed for the check timing command of MG5.
 
22
C      It skips the loop reduction.
 
23
      LOGICAL SKIPLOOPEVAL
 
24
      PARAMETER (SKIPLOOPEVAL=.FALSE.)
 
25
C     For timing checks. Stops the code after having only initialized
 
26
C      its arrays from the external data files 
 
27
      LOGICAL BOOTANDSTOP
 
28
      PARAMETER (BOOTANDSTOP=.FALSE.)
 
29
C     
19
30
C     CONSTANTS
20
31
C     
21
32
      CHARACTER*512 PARAMFNAME,HELCONFIGFNAME,LOOPFILTERFNAME
33
44
      PARAMETER (NBORNAMPS=2)
34
45
      INTEGER    NLOOPS, NLOOPGROUPS, NCTAMPS
35
46
      PARAMETER (NLOOPS=11, NLOOPGROUPS=9, NCTAMPS=28)
 
47
      INTEGER    NLOOPAMPS
 
48
      PARAMETER (NLOOPAMPS=39)
36
49
      INTEGER    NCOLORROWS
37
 
      PARAMETER (NCOLORROWS=39)
 
50
      PARAMETER (NCOLORROWS=NLOOPAMPS)
38
51
      INTEGER    NEXTERNAL
39
52
      PARAMETER (NEXTERNAL=5)
40
53
      INTEGER    NWAVEFUNCS,NLOOPWAVEFUNCS
68
81
C     Only CutTools provides QP
69
82
      INTEGER QP_NLOOPLIB
70
83
      PARAMETER (QP_NLOOPLIB=1)
71
 
C     This parameter is designed for the check timing command of MG5
72
 
      LOGICAL SKIPLOOPEVAL
73
 
      PARAMETER (SKIPLOOPEVAL=.FALSE.)
74
 
      LOGICAL BOOTANDSTOP
75
 
      PARAMETER (BOOTANDSTOP=.FALSE.)
76
84
      INTEGER MAXSTABILITYLENGTH
77
85
      DATA MAXSTABILITYLENGTH/20/
78
86
      COMMON/ML5_0_STABILITY_TESTS/MAXSTABILITYLENGTH
 
87
 
79
88
C     
80
89
C     ARGUMENTS 
81
90
C     
103
112
C     
104
113
C     LOCAL VARIABLES 
105
114
C     
106
 
      INTEGER I,J,K,H,DUMMY,I_QP_LIB
 
115
      INTEGER I,J,K,H,HEL_MULT,I_QP_LIB,DUMMY
107
116
 
108
117
      CHARACTER*512 PARAMFN,HELCONFIGFN,LOOPFILTERFN,COLORNUMFN
109
118
     $ ,COLORDENOMFN,HELFILTERFN
134
143
      LOGICAL EVAL_DONE(MAXSTABILITYLENGTH)
135
144
      LOGICAL DOING_QP_EVALS
136
145
      INTEGER STAB_INDEX,BASIC_CT_MODE
137
 
      INTEGER N_DP_EVAL, N_QP_EVAL
138
 
      DATA N_DP_EVAL/1/
139
 
      DATA N_QP_EVAL/1/
 
146
 
 
147
 
140
148
      REAL*8 ACC(0:NSQUAREDSO)
141
149
      REAL*8 DP_RES(3,0:NSQUAREDSO,MAXSTABILITYLENGTH)
142
150
C     QP_RES STORES THE QUADRUPLE PRECISION RESULT OBTAINED FROM
149
157
      REAL*8 HELSAVED(3,NCOMB)
150
158
      INTEGER ITEMP
151
159
      LOGICAL LTEMP
152
 
      REAL*8 BORNBUFF(0:NSQSO_BORN)
 
160
      REAL*8 BORNBUFF(0:NSQSO_BORN),TMPR
153
161
      REAL*8 BUFFR(3,0:NSQUAREDSO),BUFFR_BIS(3,0:NSQUAREDSO),TEMP(0:3
154
 
     $ ,0:NSQUAREDSO),TEMP1(0:NSQUAREDSO),TEMP2
 
162
     $ ,0:NSQUAREDSO),TEMP1(0:NSQUAREDSO)
 
163
      REAL*8 TEMP2
155
164
      COMPLEX*16 COEFS(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
156
165
      COMPLEX*16 CFTOT
157
166
      LOGICAL FOUNDHELFILTER,FOUNDLOOPFILTER
161
170
      DATA ((LOOPFILTERBUFF(J,I),J=1,NSQUAREDSO),I=1,NLOOPGROUPS)
162
171
     $ /NSQSOXNLG*.FALSE./
163
172
 
 
173
      LOGICAL AUTOMATIC_TIR_CACHE_CLEARING
 
174
      DATA AUTOMATIC_TIR_CACHE_CLEARING/.TRUE./
 
175
      COMMON/ML5_0_RUNTIME_OPTIONS/AUTOMATIC_TIR_CACHE_CLEARING
 
176
 
164
177
      INTEGER IDEN
165
178
      DATA IDEN/36/
166
179
      INTEGER HELAVGFACTOR
179
192
C     
180
193
C     FUNCTIONS
181
194
C     
 
195
      INTEGER ML5_0_TIRCACHE_INDEX
182
196
      INTEGER ML5_0_ML5SOINDEX_FOR_BORN_AMP
183
197
      INTEGER ML5_0_ML5SOINDEX_FOR_LOOP_AMP
184
198
      INTEGER ML5_0_ML5SQSOINDEX
192
206
      INCLUDE 'mp_coupl.inc'
193
207
      INCLUDE 'MadLoopParams.inc'
194
208
 
 
209
 
195
210
      LOGICAL CHOSEN_SO_CONFIGS(NSQUAREDSO)
196
211
      DATA CHOSEN_SO_CONFIGS//
197
212
      COMMON/ML5_0_CHOSEN_LOOP_SQSO/CHOSEN_SO_CONFIGS
198
213
 
 
214
      INTEGER N_DP_EVAL, N_QP_EVAL
 
215
      DATA N_DP_EVAL/1/
 
216
      DATA N_QP_EVAL/1/
 
217
      COMMON/ML5_0_N_EVALS/N_DP_EVAL,N_QP_EVAL
 
218
 
199
219
      LOGICAL CHECKPHASE
200
220
      DATA CHECKPHASE/.TRUE./
201
221
      LOGICAL HELDOUBLECHECKED
212
232
C     A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
213
233
C      AVAILABLE OR NOT
214
234
      LOGICAL LOOPLIBS_AVAILABLE(4)
215
 
      DATA LOOPLIBS_AVAILABLE /.TRUE.,.FALSE.,.FALSE.,.FALSE./
 
235
      DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.FALSE.,.FALSE./
216
236
      COMMON/ML5_0_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
217
237
C     A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
218
238
C      AVAILABLE OR NOT IN THE LOOPLIBS
219
239
C     PJFry++ and Golem95 do not support direction test
220
240
      LOGICAL LOOPLIBS_DIRECTEST(4)
221
 
      DATA LOOPLIBS_DIRECTEST /.TRUE.,.FALSE.,.TRUE.,.FALSE./
 
241
      DATA LOOPLIBS_DIRECTEST /.TRUE.,.TRUE.,.TRUE.,.TRUE./
222
242
 
223
243
C     PS CAN POSSIBILY BE PASSED THROUGH IMPROVE_PS BUT IS NOT
224
244
C      MODIFIED FOR THE PURPOSE OF THE STABILITY TEST
315
335
      COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
316
336
      COMMON/ML5_0_LCOEFS/LOOPCOEFS
317
337
 
 
338
 
 
339
 
318
340
      COMPLEX*16 AMPL(3,NCTAMPS)
319
341
      COMMON/ML5_0_AMPL/AMPL
320
342
 
358
380
C     ----------
359
381
 
360
382
      IF(ML_INIT) THEN
 
383
        ML_INIT = .FALSE.
361
384
        CALL PRINT_MADLOOP_BANNER()
362
385
        TMP = 'auto'
363
386
        CALL SETMADLOOPPATH(TMP)
364
387
        CALL JOINPATH(MLPATH,PARAMFNAME,PARAMFN)
365
388
        CALL MADLOOPPARAMREADER(PARAMFN,.TRUE.)
366
 
        ML_INIT = .FALSE.
 
389
 
 
390
C       Make sure that NROTATIONS_QP and NROTATIONS_DP are set to zero
 
391
C        if AUTOMATIC_TIR_CACHE_CLEARING is disabled.
 
392
        IF(.NOT.AUTOMATIC_TIR_CACHE_CLEARING) THEN
 
393
          IF(NROTATIONS_DP.NE.0.OR.NROTATIONS_QP.NE.0) THEN
 
394
            WRITE(*,*) 'INFO: AUTOMATIC_TIR_CACHE_CLEARING is disable'
 
395
     $       //'d, so MadLoop automatically resets NROTATIONS_DP an'
 
396
     $       //'d NROTATIONS_QP to 0.'
 
397
            NROTATIONS_QP=0
 
398
            NROTATIONS_DP=0
 
399
          ENDIF
 
400
        ENDIF
 
401
      ENDIF
 
402
 
 
403
      QP_TOOLS_AVAILABLE=.FALSE.
 
404
      INDEX_QP_TOOLS(1:QP_NLOOPLIB+1)=0
 
405
C     SKIP THE ONES THAT NOT AVAILABLE
 
406
      J=1
 
407
      DO I=1,NLOOPLIB
 
408
        IF(MLREDUCTIONLIB(J).EQ.0)EXIT
 
409
        IF(.NOT.LOOPLIBS_AVAILABLE(MLREDUCTIONLIB(J)))THEN
 
410
          MLREDUCTIONLIB(J:NLOOPLIB-1)=MLREDUCTIONLIB(J+1:NLOOPLIB)
 
411
          MLREDUCTIONLIB(NLOOPLIB)=0
 
412
        ELSE
 
413
          J=J+1
 
414
        ENDIF
 
415
      ENDDO
 
416
      IF(MLREDUCTIONLIB(1).EQ.0)THEN
 
417
        STOP 'No available loop reduction lib is provided. Make sur'
 
418
     $   //'e MLReductionLib is correct.'
 
419
      ENDIF
 
420
      J=0
 
421
      DO I=1,NLOOPLIB
 
422
        IF(MLREDUCTIONLIB(I).EQ.1)THEN
 
423
          J=J+1
 
424
          IF(.NOT.QP_TOOLS_AVAILABLE)QP_TOOLS_AVAILABLE=.TRUE.
 
425
          INDEX_QP_TOOLS(J)=I
 
426
        ENDIF
 
427
      ENDDO
 
428
 
 
429
C     Setup the file paths
 
430
      CALL JOINPATH(MLPATH,PARAMFNAME,PARAMFN)
 
431
      CALL JOINPATH(MLPATH,PROC_PREFIX,TMP)
 
432
      CALL JOINPATH(TMP,HELCONFIGFNAME,HELCONFIGFN)
 
433
      CALL JOINPATH(TMP,LOOPFILTERFNAME,LOOPFILTERFN)
 
434
      CALL JOINPATH(TMP,COLORNUMFNAME,COLORNUMFN)
 
435
      CALL JOINPATH(TMP,COLORDENOMFNAME,COLORDENOMFN)
 
436
      CALL JOINPATH(TMP,HELFILTERFNAME,HELFILTERFN)
 
437
 
 
438
      CALL ML5_0_SET_N_EVALS(N_DP_EVAL,N_QP_EVAL)
 
439
 
 
440
      OPEN(1, FILE=COLORNUMFN, ERR=104, STATUS='OLD',          
 
441
     $  ACTION='READ')
 
442
      DO I=1,NCOLORROWS
 
443
        READ(1,*,END=105) (CF_N(I,J),J=1,NBORNAMPS)
 
444
      ENDDO
 
445
      GOTO 105
 
446
 104  CONTINUE
 
447
      STOP 'Color factors could not be initialized from file ML5_0_Col'
 
448
     $ //'orNumFactors.dat. File not found'
 
449
 105  CONTINUE
 
450
      CLOSE(1)
 
451
      OPEN(1, FILE=COLORDENOMFN, ERR=106, STATUS='OLD',          
 
452
     $  ACTION='READ')
 
453
      DO I=1,NCOLORROWS
 
454
        READ(1,*,END=107) (CF_D(I,J),J=1,NBORNAMPS)
 
455
      ENDDO
 
456
      GOTO 107
 
457
 106  CONTINUE
 
458
      STOP 'Color factors could not be initialized from file ML5_0_Col'
 
459
     $ //'orDenomFactors.dat. File not found'
 
460
 107  CONTINUE
 
461
      CLOSE(1)
 
462
      OPEN(1, FILE=HELCONFIGFN, ERR=108, STATUS='OLD',                
 
463
     $   ACTION='READ')
 
464
      DO H=1,NCOMB
 
465
        READ(1,*,END=109) (HELC(I,H),I=1,NEXTERNAL)
 
466
      ENDDO
 
467
      GOTO 109
 
468
 108  CONTINUE
 
469
      STOP 'Color helictiy configurations could not be initialize'
 
470
     $ //'d from file ML5_0_HelConfigs.dat. File not found'
 
471
 109  CONTINUE
 
472
      CLOSE(1)
 
473
 
 
474
C     SETUP OF THE COMMON STARTING EXTERNAL LOOP WAVEFUNCTION
 
475
C     IT IS ALSO PS POINT INDEPENDENT, SO IT CAN BE DONE HERE.
 
476
      DO I=0,3
 
477
        PL(I,0)=(0.0D0,0.0D0)
 
478
      ENDDO
 
479
      DO I=1,MAXLWFSIZE
 
480
        DO J=0,LOOPMAXCOEFS-1
 
481
          DO K=1,MAXLWFSIZE
 
482
            IF(I.EQ.K.AND.J.EQ.0) THEN
 
483
              WL(I,J,K,0)=(1.0D0,0.0D0)
 
484
            ELSE
 
485
              WL(I,J,K,0)=(0.0D0,0.0D0)
 
486
            ENDIF
 
487
          ENDDO
 
488
        ENDDO
 
489
      ENDDO
 
490
      IF(BOOTANDSTOP) THEN
 
491
        WRITE(*,*) 'Stopped by user request.'
 
492
        STOP
367
493
      ENDIF
368
494
 
369
495
      IF(NTRY.EQ.0) THEN
370
 
C       CALL MADLOOPPARAMREADER(paramFileName,.TRUE.)
371
 
        QP_TOOLS_AVAILABLE=.FALSE.
372
 
        INDEX_QP_TOOLS(1:QP_NLOOPLIB+1)=0
373
 
C       SKIP THE ONES THAT NOT AVAILABLE
374
 
        J=1
375
 
        DO I=1,NLOOPLIB
376
 
          IF(MLREDUCTIONLIB(J).EQ.0)EXIT
377
 
          IF(.NOT.LOOPLIBS_AVAILABLE(MLREDUCTIONLIB(J)))THEN
378
 
            MLREDUCTIONLIB(J:NLOOPLIB-1)=MLREDUCTIONLIB(J+1:NLOOPLIB)
379
 
            MLREDUCTIONLIB(NLOOPLIB)=0
380
 
          ELSE
381
 
            J=J+1
382
 
          ENDIF
383
 
        ENDDO
384
 
        IF(MLREDUCTIONLIB(1).EQ.0)THEN
385
 
          STOP 'No available loop reduction lib is provided. Make sur'
386
 
     $     //'e MLReductionLib is correct.'
387
 
        ENDIF
388
 
        J=0
389
 
        DO I=1,NLOOPLIB
390
 
          IF(MLREDUCTIONLIB(I).EQ.1)THEN
391
 
            J=J+1
392
 
            IF(.NOT.QP_TOOLS_AVAILABLE)QP_TOOLS_AVAILABLE=.TRUE.
393
 
            INDEX_QP_TOOLS(J)=I
394
 
          ENDIF
395
 
        ENDDO
396
 
 
397
 
C       Setup the file paths
398
 
        CALL JOINPATH(MLPATH,PARAMFNAME,PARAMFN)
399
 
        CALL JOINPATH(MLPATH,PROC_PREFIX,TMP)
400
 
        CALL JOINPATH(TMP,HELCONFIGFNAME,HELCONFIGFN)
401
 
        CALL JOINPATH(TMP,LOOPFILTERFNAME,LOOPFILTERFN)
402
 
        CALL JOINPATH(TMP,COLORNUMFNAME,COLORNUMFN)
403
 
        CALL JOINPATH(TMP,COLORDENOMFNAME,COLORDENOMFN)
404
 
        CALL JOINPATH(TMP,HELFILTERFNAME,HELFILTERFN)
405
 
 
406
 
        CALL ML5_0_SET_N_EVALS(N_DP_EVAL,N_QP_EVAL)
407
 
 
408
 
        HELDOUBLECHECKED=.NOT.DOUBLECHECKHELICITYFILTER
 
496
        HELDOUBLECHECKED=(.NOT.DOUBLECHECKHELICITYFILTER).OR.(HELICITYF
 
497
     $   ILTERLEVEL.EQ.0)
409
498
        OPEN(1, FILE=LOOPFILTERFN, ERR=100, STATUS='OLD',          
410
499
     $    ACTION='READ')
411
500
        DO J=1,NLOOPGROUPS
422
511
 101    CONTINUE
423
512
        CLOSE(1)
424
513
 
 
514
        IF (HELICITYFILTERLEVEL.EQ.0) THEN
 
515
          FOUNDHELFILTER=.TRUE.
 
516
          DO J=1,NCOMB
 
517
            GOODHEL(J)=1
 
518
          ENDDO
 
519
          GOTO 122
 
520
        ENDIF
425
521
        OPEN(1, FILE=HELFILTERFN, ERR=102, STATUS='OLD',          
426
522
     $    ACTION='READ')
427
523
        DO I=1,NCOMB
435
531
        ENDDO
436
532
 103    CONTINUE
437
533
        CLOSE(1)
438
 
 
439
 
        OPEN(1, FILE=COLORNUMFN, ERR=104, STATUS='OLD',          
440
 
     $    ACTION='READ')
441
 
        DO I=1,NCOLORROWS
442
 
          READ(1,*,END=105) (CF_N(I,J),J=1,NBORNAMPS)
443
 
        ENDDO
444
 
        GOTO 105
445
 
 104    CONTINUE
446
 
        STOP 'Color factors could not be initialized from fil'
447
 
     $   //'e ML5_0_ColorNumFactors.dat. File not found'
448
 
 105    CONTINUE
449
 
        CLOSE(1)
450
 
        OPEN(1, FILE=COLORDENOMFN, ERR=106, STATUS='OLD',          
451
 
     $    ACTION='READ')
452
 
        DO I=1,NCOLORROWS
453
 
          READ(1,*,END=107) (CF_D(I,J),J=1,NBORNAMPS)
454
 
        ENDDO
455
 
        GOTO 107
456
 
 106    CONTINUE
457
 
        STOP 'Color factors could not be initialized from fil'
458
 
     $   //'e ML5_0_ColorDenomFactors.dat. File not found'
459
 
 107    CONTINUE
460
 
        CLOSE(1)
461
 
        OPEN(1, FILE=HELCONFIGFN, ERR=108, STATUS='OLD',              
462
 
     $       ACTION='READ')
463
 
        DO H=1,NCOMB
464
 
          READ(1,*,END=109) (HELC(I,H),I=1,NEXTERNAL)
465
 
        ENDDO
466
 
        GOTO 109
467
 
 108    CONTINUE
468
 
        STOP 'Color helictiy configurations could not be initialize'
469
 
     $   //'d from file ML5_0_HelConfigs.dat. File not found'
470
 
 109    CONTINUE
471
 
        CLOSE(1)
472
 
 
473
 
C       SETUP OF THE COMMON STARTING EXTERNAL LOOP WAVEFUNCTION
474
 
C       IT IS ALSO PS POINT INDEPENDENT, SO IT CAN BE DONE HERE.
475
 
        DO I=0,3
476
 
          PL(I,0)=(0.0D0,0.0D0)
477
 
        ENDDO
478
 
        DO I=1,MAXLWFSIZE
479
 
          DO J=0,LOOPMAXCOEFS-1
480
 
            DO K=1,MAXLWFSIZE
481
 
              IF(I.EQ.K.AND.J.EQ.0) THEN
482
 
                WL(I,J,K,0)=(1.0D0,0.0D0)
483
 
              ELSE
484
 
                WL(I,J,K,0)=(0.0D0,0.0D0)
485
 
              ENDIF
486
 
            ENDDO
 
534
        IF (HELICITYFILTERLEVEL.EQ.1) THEN
 
535
C         We must make sure to remove the matching-helicity optimisatio
 
536
C         n, as requested by the user.
 
537
          DO J=1,NCOMB
 
538
            IF ((GOODHEL(J).GT.1).OR.(GOODHEL(J).LT.HELOFFSET)) THEN
 
539
              GOODHEL(J)=1
 
540
            ENDIF
487
541
          ENDDO
488
 
        ENDDO
489
 
        IF(BOOTANDSTOP) THEN
490
 
          WRITE(*,*) 'Stopped by user request.'
491
 
          STOP
492
542
        ENDIF
 
543
 122    CONTINUE
493
544
      ENDIF
494
545
 
495
 
 
496
546
C     First compute the borns, it will store them in ANS(0,I)
497
547
C     It is left untouched for the rest of MadLoop evaluation.
498
548
C     Notice that the squared split order index I does NOT
512
562
        ANS(0,I)=BORNBUFF(I)
513
563
      ENDDO
514
564
 
515
 
 
516
565
C     We set here the reference to the born summed over all split
517
566
C      orders
518
567
      REF=0.0D0
557
606
     $ ).AND.USELOOPFILTER).OR.(.NOT.FOUNDHELFILTER))
558
607
 
559
608
      IF (WRITEOUTFILTERS) THEN
560
 
        IF ((.NOT. CHECKPHASE).AND.(.NOT.FOUNDHELFILTER)) THEN
561
 
 
 
609
        IF ((HELICITYFILTERLEVEL.NE.0).AND.(.NOT. CHECKPHASE).AND.(.NOT
 
610
     $   .FOUNDHELFILTER)) THEN
562
611
          OPEN(1, FILE=HELFILTERFN, ERR=110, STATUS='NEW',ACTION='WRIT'
563
612
     $     //'E')
564
613
          DO I=1,NCOMB
627
676
        ENDDO
628
677
      ENDDO
629
678
 
 
679
 
630
680
      IF (IMPROVEPSPOINT.GE.0) THEN
631
681
C       Make the input PS more precise (exact onshell and energy-moment
632
682
C       um conservation)
647
697
          AMPL(K,I)=(0.0D0,0.0D0)
648
698
        ENDDO
649
699
      ENDDO
650
 
C     USE THE FIRST LOOP REDUCTION LIBRARY AND THE FIRST QP LOOP
651
 
C      REDUCTION LIBRARY
 
700
 
 
701
C     Start by using the first available loop reduction library and qp
 
702
C      library.
652
703
      I_LIB=1
653
704
      I_QP_LIB=1
 
705
 
 
706
      GOTO 208
 
707
C     MadLoop jumps to this label during stability checks when it
 
708
C      recomputes a rotated PS point
654
709
 200  CONTINUE
 
710
C     For the computation of a rotated version of this PS point we
 
711
C      must reset the TIR cache since this changes the definition of
 
712
C      the loop denominators.
 
713
      CALL ML5_0_CLEAR_TIR_CACHE()
 
714
 208  CONTINUE
 
715
 
 
716
C     MadLoop jumps to this label during initialization when it goes
 
717
C      to the computation of the next helicity.
 
718
 205  CONTINUE
655
719
 
656
720
      IF (.NOT.MP_PS_SET.AND.(CTMODE.EQ.0.OR.CTMODE.GE.4)) THEN
657
721
        CALL ML5_0_SET_MP_PS(P_USER)
676
740
      DO I=1,NLOOPGROUPS
677
741
        DO J=1,3
678
742
          DO K=1,NSQUAREDSO
679
 
            LOOPRES(J,K,I)=0.0D0
 
743
            LOOPRES(J,K,I)=(0.0D0,0.0D0)
680
744
          ENDDO
681
745
        ENDDO
682
746
      ENDDO
713
777
          CT_REQ_SO_DONE=.FALSE.
714
778
          LOOP_REQ_SO_DONE=.FALSE.
715
779
 
 
780
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.
 
781
     $     -1) THEN
 
782
            HEL_MULT=GOODHEL(H)
 
783
          ELSE
 
784
            HEL_MULT=1
 
785
          ENDIF
 
786
 
 
787
 
716
788
C         Helas calls for the born amplitudes and counterterms
717
789
C          associated to given loops
718
790
          CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))
783
855
 3000     CONTINUE
784
856
          UVCT_REQ_SO_DONE=.TRUE.
785
857
 
786
 
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.
787
 
     $     -1) THEN
788
 
            DUMMY=GOODHEL(H)
789
 
          ELSE
790
 
            DUMMY=1
791
 
          ENDIF
792
858
          DO I=1,NCTAMPS
793
859
            DO J=1,NBORNAMPS
794
860
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
797
863
     $         I),ML5_0_ML5SOINDEX_FOR_BORN_AMP(J))
798
864
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
799
865
                DO K=1,3
800
 
                  TEMP2 = 2.0D0*DUMMY*DBLE(CFTOT*AMPL(K,I)*DCONJG(AMP(J
801
 
     $             )))
 
866
                  TEMP2 = 2.0D0*HEL_MULT*DBLE(CFTOT*AMPL(K,I)
 
867
     $             *DCONJG(AMP(J)))
802
868
                  ANS(K,ITEMP)=ANS(K,ITEMP)+TEMP2
803
869
                  ANS(K,0)=ANS(K,0)+TEMP2
804
870
                ENDDO
811
877
          CALL ML5_0_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,1))
812
878
          CALL FFV1L3_1(PL(0,1),W(1,9),GC_5,ZERO,ZERO,PL(0,2),COEFS)
813
879
          CALL ML5_0_UPDATE_WL_0_1(WL(1,0,1,1),4,COEFS,4,4,WL(1,0,1,2))
814
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,2),1,4,1,1,29,H)
 
880
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,2),1,4,1,1,1,29,H)
815
881
C         Coefficient construction for loop diagram with ID 4
816
882
          CALL FFV1L3_1(PL(0,0),W(1,2),GC_5,ZERO,ZERO,PL(0,3),COEFS)
817
883
          CALL ML5_0_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,3))
819
885
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,3),4,COEFS,4,4,WL(1,0,1,4))
820
886
          CALL FFV1L2P0_3(PL(0,4),W(1,6),GC_5,ZERO,ZERO,PL(0,5),COEFS)
821
887
          CALL ML5_0_UPDATE_WL_2_0(WL(1,0,1,4),4,COEFS,4,4,WL(1,0,1,5))
822
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,5),2,4,2,1,30,H)
 
888
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,5),2,4,2,1,1,30,H)
823
889
C         Coefficient construction for loop diagram with ID 5
824
890
          CALL FFV1L3_2(PL(0,0),W(1,1),GC_5,ZERO,ZERO,PL(0,6),COEFS)
825
891
          CALL ML5_0_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,6))
827
893
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,6),4,COEFS,4,4,WL(1,0,1,7))
828
894
          CALL FFV1L1P0_3(PL(0,7),W(1,8),GC_5,ZERO,ZERO,PL(0,8),COEFS)
829
895
          CALL ML5_0_UPDATE_WL_2_0(WL(1,0,1,7),4,COEFS,4,4,WL(1,0,1,8))
830
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,8),2,4,3,1,31,H)
 
896
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,8),2,4,3,1,1,31,H)
831
897
C         Coefficient construction for loop diagram with ID 6
832
898
          CALL FFV1L2P0_3(PL(0,0),W(1,1),GC_5,ZERO,ZERO,PL(0,9),COEFS)
833
899
          CALL ML5_0_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,9))
840
906
          CALL FFV2L2_1(PL(0,11),W(1,7),GC_47,ZERO,ZERO,PL(0,12),COEFS)
841
907
          CALL ML5_0_UPDATE_WL_2_1(WL(1,0,1,11),4,COEFS,4,4,WL(1,0,1
842
908
     $     ,12))
843
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,12),3,4,4,1,32,H)
 
909
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,12),3,4,4,1,1,32,H)
844
910
C         Coefficient construction for loop diagram with ID 7
845
911
          CALL VVV1L2P0_1(PL(0,9),W(1,5),GC_4,ZERO,ZERO,PL(0,13),COEFS)
846
912
          CALL ML5_0_UPDATE_WL_0_1(WL(1,0,1,9),4,COEFS,4,4,WL(1,0,1
848
914
          CALL FFV1L3_1(PL(0,13),W(1,9),GC_5,ZERO,ZERO,PL(0,14),COEFS)
849
915
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,13),4,COEFS,4,4,WL(1,0,1
850
916
     $     ,14))
851
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,14),2,4,5,1,33,H)
 
917
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,14),2,4,5,1,1,33,H)
852
918
C         Coefficient construction for loop diagram with ID 8
853
919
          CALL FFV1L3_1(PL(0,13),W(1,2),GC_5,ZERO,ZERO,PL(0,15),COEFS)
854
920
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,13),4,COEFS,4,4,WL(1,0,1
856
922
          CALL FFV2L2_1(PL(0,15),W(1,7),GC_47,ZERO,ZERO,PL(0,16),COEFS)
857
923
          CALL ML5_0_UPDATE_WL_2_1(WL(1,0,1,15),4,COEFS,4,4,WL(1,0,1
858
924
     $     ,16))
859
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,16),3,4,6,1,34,H)
 
925
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,16),3,4,6,1,1,34,H)
860
926
C         Coefficient construction for loop diagram with ID 9
861
927
          CALL FFV2L2_1(PL(0,10),W(1,7),GC_47,ZERO,ZERO,PL(0,17),COEFS)
862
928
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,10),4,COEFS,4,4,WL(1,0,1
864
930
          CALL FFV1L2_1(PL(0,17),W(1,5),GC_5,ZERO,ZERO,PL(0,18),COEFS)
865
931
          CALL ML5_0_UPDATE_WL_2_1(WL(1,0,1,17),4,COEFS,4,4,WL(1,0,1
866
932
     $     ,18))
867
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,18),3,4,7,1,35,H)
 
933
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,18),3,4,7,1,1,35,H)
868
934
C         Coefficient construction for loop diagram with ID 10
869
935
          CALL FFV1L1_2(PL(0,6),W(1,5),GC_5,ZERO,ZERO,PL(0,19),COEFS)
870
936
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,6),4,COEFS,4,4,WL(1,0,1
873
939
     $     ,COEFS)
874
940
          CALL ML5_0_UPDATE_WL_2_0(WL(1,0,1,19),4,COEFS,4,4,WL(1,0,1
875
941
     $     ,20))
876
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,20),2,4,5,1,36,H)
 
942
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,20),2,4,5,1,1,36,H)
877
943
C         Coefficient construction for loop diagram with ID 11
878
944
          CALL FFV1L1P0_3(PL(0,0),W(1,8),GC_5,ZERO,ZERO,PL(0,21),COEFS)
879
945
          CALL ML5_0_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
881
947
          CALL FFV1L3_2(PL(0,21),W(1,10),GC_5,ZERO,ZERO,PL(0,22),COEFS)
882
948
          CALL ML5_0_UPDATE_WL_0_1(WL(1,0,1,21),4,COEFS,4,4,WL(1,0,1
883
949
     $     ,22))
884
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,22),1,4,8,1,37,H)
 
950
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,22),1,4,8,1,1,37,H)
885
951
C         Coefficient construction for loop diagram with ID 12
886
952
          CALL FFV1L1P0_3(PL(0,0),W(1,2),GC_5,ZERO,ZERO,PL(0,23),COEFS)
887
953
          CALL ML5_0_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
893
959
          CALL FFV1L3_2(PL(0,24),W(1,10),GC_5,ZERO,ZERO,PL(0,25),COEFS)
894
960
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,24),4,COEFS,4,4,WL(1,0,1
895
961
     $     ,25))
896
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,25),2,4,9,1,38,H)
 
962
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,25),2,4,9,1,1,38,H)
897
963
C         Coefficient construction for loop diagram with ID 13
898
964
          CALL FFV1L2_1(PL(0,3),W(1,5),GC_5,ZERO,ZERO,PL(0,26),COEFS)
899
965
          CALL ML5_0_UPDATE_WL_1_1(WL(1,0,1,3),4,COEFS,4,4,WL(1,0,1
902
968
     $     ,COEFS)
903
969
          CALL ML5_0_UPDATE_WL_2_0(WL(1,0,1,26),4,COEFS,4,4,WL(1,0,1
904
970
     $     ,27))
905
 
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,27),2,4,9,1,39,H)
 
971
          CALL ML5_0_CREATE_LOOP_COEFS(WL(1,0,1,27),2,4,9,1,1,39,H)
906
972
 4000     CONTINUE
907
973
          LOOP_REQ_SO_DONE=.TRUE.
908
974
 
 
975
 
 
976
 
909
977
        ENDIF
910
978
      ENDDO
911
979
 
918
986
        ENDDO
919
987
      ENDDO
920
988
 
 
989
 
 
990
C     MadLoop jumps to this label during stability checks when it
 
991
C      recomputes the same PS point with a different CTMode
921
992
 300  CONTINUE
922
 
C     Free cache when using IREGI
 
993
 
 
994
 
923
995
 
924
996
 
925
997
      DO I=0,NSQUAREDSO
928
1000
        ENDDO
929
1001
      ENDDO
930
1002
 
 
1003
 
931
1004
      IF(SKIPLOOPEVAL) THEN
932
1005
        GOTO 1226
933
1006
      ENDIF
1002
1075
        HELSAVED(2,HELPICKED)=ANS(2,0)
1003
1076
        HELSAVED(3,HELPICKED)=ANS(3,0)
1004
1077
 
1005
 
        IF (CHECKPHASE) THEN
 
1078
        IF (CHECKPHASE.AND.NTRY.NE.0) THEN
1006
1079
C         SET THE HELICITY FILTER
1007
1080
          IF(.NOT.FOUNDHELFILTER) THEN
1008
1081
            HEL_INCONSISTENT=.FALSE.
1011
1084
              IF(NTRY.EQ.1) THEN
1012
1085
                GOODHEL(HELPICKED)=-HELOFFSET
1013
1086
              ELSEIF(GOODHEL(HELPICKED).NE.-HELOFFSET) THEN
1014
 
                WRITE(*,*) '##W02A WARNING Inconsistent helicity '
1015
 
     $           ,HELPICKED
 
1087
                WRITE(*,*) '##W02A WARNING Inconsistent zero helicit'
 
1088
     $           //'y ',HELPICKED
1016
1089
                IF(HELINITSTARTOVER) THEN
1017
1090
                  WRITE(*,*) '##I01 INFO Initialization starting ove'
1018
1091
     $             //'r because of inconsistency in the helicit'
1022
1095
                  HEL_INCONSISTENT=.TRUE.
1023
1096
                ENDIF
1024
1097
              ENDIF
1025
 
            ELSE
 
1098
            ELSEIF(HELICITYFILTERLEVEL.GT.1) THEN
1026
1099
              DO H=1,HELPICKED-1
1027
1100
                IF(GOODHEL(H).GT.-HELOFFSET) THEN
1028
1101
C                 Be looser for helicity check, bring a factor 100
1039
1112
C                     Make sure we have paired this hel config to the
1040
1113
C                      same one last PS point
1041
1114
                    ELSEIF(GOODHEL(HELPICKED).NE.(-H-HELOFFSET)) THEN
1042
 
                      WRITE(*,*) '##W02B WARNING Inconsistent helicit'
1043
 
     $                 //'y ',HELPICKED
 
1115
                      WRITE(*,*) '##W02B WARNING Inconsistent matchin'
 
1116
     $                 //'g helicity ',HELPICKED
1044
1117
                      IF(HELINITSTARTOVER) THEN
1045
1118
                        WRITE(*,*) '##I01 INFO Initialization startin'
1046
1119
     $                   //'g over because of inconsistency in th'
1163
1236
        IF(HELPICKED.NE.NCOMB) THEN
1164
1237
          HELPICKED=HELPICKED+1
1165
1238
          MP_DONE=.FALSE.
1166
 
          GOTO 200
 
1239
          GOTO 205
1167
1240
        ELSE
1168
1241
C         Useful printout
1169
1242
C         do I=1,NCOMB
1186
1259
            ENDIF
1187
1260
          ENDIF
1188
1261
        ENDIF
1189
 
 
1190
1262
      ENDIF
1191
1263
 
1192
1264
      DO K=1,3
1198
1270
        ENDDO
1199
1271
      ENDDO
1200
1272
 
 
1273
 
1201
1274
      IF(.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.(CTMODERUN.EQ.
1202
1275
     $ -1)) THEN
1203
1276
        STAB_INDEX=STAB_INDEX+1
1231
1304
            CTMODE=BASIC_CT_MODE+1
1232
1305
            GOTO 300
1233
1306
          ELSE
1234
 
C           NO DIRECTION TEST LIBRARIES: e.g. PJFry++ and Golem95
 
1307
C           If some TIR library would not support the loop direction
 
1308
C            test (they all do for now), then we would just copy the
 
1309
C            answer from mode 1 and carry on.
1235
1310
            STAB_INDEX=STAB_INDEX+1
1236
1311
            IF(DOING_QP_EVALS)THEN
1237
1312
              DO I=0,NSQUAREDSO
1595
1670
     $       -1)) THEN
1596
1671
              GOTO 1231
1597
1672
            ENDIF
1598
 
C           Be loser for helicity comparison, so bring a factor 100
1599
 
          ELSEIF(.NOT.ML5_0_ISZERO((RESA(J)/RESB(J))-DBLE(WGT_TO_TRY(I
1600
 
     $     )),REF*100.0D0,-1,-1)) THEN
 
1673
C           Be looser for helicity comparison, so bring a factor 100
 
1674
          ELSEIF(.NOT.ML5_0_ISZERO(ABS((RESA(J)/RESB(J))-DBLE(WGT_TO_TR
 
1675
     $     Y(I))),1.0D0,-1,-1)) THEN
1601
1676
            GOTO 1231
1602
1677
          ENDIF
1603
1678
        ENDDO
1792
1867
      INTEGER I,J
1793
1868
      INTEGER SQPLITORDERS(NSQSO,NSO)
1794
1869
 
 
1870
      COMMON/ML5_0_ML5SQPLITORDERS/SQPLITORDERS
1795
1871
C     
1796
1872
C     BEGIN CODE
1797
1873
C     
1882
1958
C     
1883
1959
C     CONSTANTS
1884
1960
C     
1885
 
 
1886
1961
      INTEGER    NSO, NSQUAREDSO, NAMPSO
1887
1962
      PARAMETER (NSO=0, NSQUAREDSO=0, NAMPSO=0)
1888
1963
C     
1895
1970
      INTEGER I, SQORDERS(NSO)
1896
1971
      INTEGER AMPSPLITORDERS(NAMPSO,NSO)
1897
1972
 
 
1973
      COMMON/ML5_0_ML5AMPSPLITORDERS/AMPSPLITORDERS
1898
1974
C     
1899
1975
C     FUNCTION
1900
1976
C     
1909
1985
      ML5_0_ML5SQSOINDEX=ML5_0_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
1910
1986
      END
1911
1987
 
 
1988
C     This is the inverse subroutine of ML5SOINDEX_FOR_SQUARED_ORDERS.
 
1989
C      Not directly useful, but provided nonetheless.
 
1990
      SUBROUTINE ML5_0_ML5GET_SQUARED_ORDERS_FOR_SOINDEX(SOINDEX
 
1991
     $ ,ORDERS)
 
1992
C     
 
1993
C     This functions returns the orders identified by the squared
 
1994
C      split order index in argument. Order values correspond to
 
1995
C      following list of couplings (and in this order):
 
1996
C     []
 
1997
C     
 
1998
C     CONSTANTS
 
1999
C     
 
2000
      INTEGER    NSO, NSQSO
 
2001
      PARAMETER (NSO=0, NSQSO=0)
 
2002
C     
 
2003
C     ARGUMENTS
 
2004
C     
 
2005
      INTEGER SOINDEX, ORDERS(NSO)
 
2006
C     
 
2007
C     LOCAL VARIABLES
 
2008
C     
 
2009
      INTEGER I
 
2010
      INTEGER SQPLITORDERS(NSQSO,NSO)
 
2011
      COMMON/ML5_0_ML5SQPLITORDERS/SQPLITORDERS
 
2012
C     
 
2013
C     BEGIN CODE
 
2014
C     
 
2015
      IF (SOINDEX.GT.0.AND.SOINDEX.LE.NSQSO) THEN
 
2016
        DO I=1,NSO
 
2017
          ORDERS(I) =  SQPLITORDERS(SOINDEX,I)
 
2018
        ENDDO
 
2019
        RETURN
 
2020
      ENDIF
 
2021
 
 
2022
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_SQUARED_ORDER'
 
2023
     $ //'S_FOR_SOINDEX'
 
2024
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
 
2025
      STOP
 
2026
 
 
2027
      END SUBROUTINE
 
2028
 
 
2029
C     This is the inverse subroutine of getting amplitude SO orders.
 
2030
C      Not directly useful, but provided nonetheless.
 
2031
      SUBROUTINE ML5_0_ML5GET_ORDERS_FOR_AMPSOINDEX(SOINDEX,ORDERS)
 
2032
C     
 
2033
C     This functions returns the orders identified by the split order
 
2034
C      index in argument. Order values correspond to following list of
 
2035
C      couplings (and in this order):
 
2036
C     []
 
2037
C     
 
2038
C     CONSTANTS
 
2039
C     
 
2040
      INTEGER    NSO, NAMPSO
 
2041
      PARAMETER (NSO=0, NAMPSO=0)
 
2042
C     
 
2043
C     ARGUMENTS
 
2044
C     
 
2045
      INTEGER SOINDEX, ORDERS(NSO)
 
2046
C     
 
2047
C     LOCAL VARIABLES
 
2048
C     
 
2049
      INTEGER I
 
2050
      INTEGER AMPSPLITORDERS(NAMPSO,NSO)
 
2051
      COMMON/ML5_0_ML5AMPSPLITORDERS/AMPSPLITORDERS
 
2052
C     
 
2053
C     BEGIN CODE
 
2054
C     
 
2055
      IF (SOINDEX.GT.0.AND.SOINDEX.LE.NAMPSO) THEN
 
2056
        DO I=1,NSO
 
2057
          ORDERS(I) =  AMPSPLITORDERS(SOINDEX,I)
 
2058
        ENDDO
 
2059
        RETURN
 
2060
      ENDIF
 
2061
 
 
2062
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5GET_ORDERS_FOR_AM'
 
2063
     $ //'PSOINDEX'
 
2064
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
 
2065
      STOP
 
2066
 
 
2067
      END SUBROUTINE
 
2068
 
 
2069
 
 
2070
C     This function is not directly useful, but included for completene
 
2071
C     ss
 
2072
      INTEGER FUNCTION ML5_0_ML5SOINDEX_FOR_AMPORDERS(ORDERS)
 
2073
C     
 
2074
C     This functions returns the integer index identifying the
 
2075
C      amplitude split orders passed in argument which correspond to
 
2076
C      the values of the following list of couplings (and in this
 
2077
C      order):
 
2078
C     []
 
2079
C     
 
2080
C     CONSTANTS
 
2081
C     
 
2082
      INTEGER    NSO, NAMPSO
 
2083
      PARAMETER (NSO=0, NAMPSO=0)
 
2084
C     
 
2085
C     ARGUMENTS
 
2086
C     
 
2087
      INTEGER ORDERS(NSO)
 
2088
C     
 
2089
C     LOCAL VARIABLES
 
2090
C     
 
2091
      INTEGER I,J
 
2092
      INTEGER AMPSPLITORDERS(NAMPSO,NSO)
 
2093
      COMMON/ML5_0_ML5AMPSPLITORDERS/AMPSPLITORDERS
 
2094
C     
 
2095
C     BEGIN CODE
 
2096
C     
 
2097
      DO I=1,NAMPSO
 
2098
        DO J=1,NSO
 
2099
          IF (ORDERS(J).NE.AMPSPLITORDERS(I,J)) GOTO 1009
 
2100
        ENDDO
 
2101
        ML5_0_ML5SOINDEX_FOR_AMPORDERS = I
 
2102
        RETURN
 
2103
 1009   CONTINUE
 
2104
      ENDDO
 
2105
 
 
2106
      WRITE(*,*) 'ERROR:: Stopping function ML5_0_ML5SOINDEX_FOR_AMPOR'
 
2107
     $ //'DERS'
 
2108
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
 
2109
      STOP
 
2110
 
 
2111
      END
 
2112
 
1912
2113
C     --=========================================--
1913
2114
C     Definition of additional access routines
1914
2115
C     --=========================================--
1928
2129
 
1929
2130
      ALWAYS_TEST_STABILITY = ONOFF
1930
2131
 
1931
 
      END
 
2132
      END SUBROUTINE
 
2133
 
 
2134
      SUBROUTINE ML5_0_SET_AUTOMATIC_TIR_CACHE_CLEARING(ONOFF)
 
2135
C     
 
2136
C     This function can be called by the MadLoop user so as to
 
2137
C      manually chose when
 
2138
C     to reset the TIR cache.
 
2139
C     
 
2140
      IMPLICIT NONE
 
2141
 
 
2142
      INCLUDE 'MadLoopParams.inc'
 
2143
 
 
2144
      LOGICAL ONOFF
 
2145
 
 
2146
      LOGICAL AUTOMATIC_TIR_CACHE_CLEARING
 
2147
      DATA AUTOMATIC_TIR_CACHE_CLEARING/.TRUE./
 
2148
      COMMON/ML5_0_RUNTIME_OPTIONS/AUTOMATIC_TIR_CACHE_CLEARING
 
2149
 
 
2150
      INTEGER N_DP_EVAL, N_QP_EVAL
 
2151
      COMMON/ML5_0_N_EVALS/N_DP_EVAL,N_QP_EVAL
 
2152
 
 
2153
      WRITE(*,*) 'Warning: No TIR caching implemented. Call t'
 
2154
     $ //'o SET_AUTOMATIC_TIR_CACHE_CLEARING did nothing.'
 
2155
      END SUBROUTINE
1932
2156
 
1933
2157
      SUBROUTINE ML5_0_SET_COUPLINGORDERS_TARGET(SOTARGET)
1934
2158
      IMPLICIT NONE
2149
2373
 
2150
2374
      END
2151
2375
 
 
2376
C     The subroutine below perform clean-up duties for MadLoop like
 
2377
C      de-allocating
 
2378
C     arrays
 
2379
      SUBROUTINE ML5_0_EXIT_MADLOOP()
 
2380
      CONTINUE
 
2381
      END
 
2382
 
 
2383