~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f

  • Committer: olivier Mattelaer
  • Date: 2016-05-12 11:00:18 UTC
  • mfrom: (262.1.150 2.3.4)
  • Revision ID: olivier.mattelaer@uclouvain.be-20160512110018-sevb79f0wm4g8mpp
pass to 2.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
C     MadLoop internal ones.
48
48
      INTEGER GOLEM_RUN_MODE
49
49
      PARAMETER (GOLEM_RUN_MODE=1)
50
 
C     The following is the acceptance threshold used for GOLEM_RUN_MODE
51
 
C      = 3
 
50
C     The following is the acceptance threshold used for
 
51
C      GOLEM_RUN_MODE = 3
52
52
      REAL*8 COEF_CHECK_THRS
53
53
      DATA COEF_CHECK_THRS/1.0D-13/
54
54
      COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
59
59
C     
60
60
      INTEGER NLOOPLINE, RANK
61
61
      REAL*8 PL(0:3,NLOOPLINE)
62
 
      REAL*8 PCT(0:3,0:NLOOPLINE-1)
 
62
      REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
 
63
      REAL*8 REF_P
63
64
      REAL(KI) PGOLEM(NLOOPLINE,0:3)
64
65
      COMPLEX*16 M2L(NLOOPLINE)
65
66
      COMPLEX(KI) M2LGOLEM(NLOOPLINE)
105
106
      INTEGER ID,SQSOINDEX,R
106
107
      COMMON/MG5_1_LOOP/ID,SQSOINDEX,R
107
108
 
108
 
      LOGICAL CTINIT, TIRINIT, GOLEMINIT
109
 
      COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT
 
109
      LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
 
110
      COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
 
111
     $ ,NINJAINIT
110
112
 
111
113
      INTEGER NLOOPGROUPS
112
114
      PARAMETER (NLOOPGROUPS=13)
113
 
      INTEGER LOOPMAXCOEFS
114
 
      PARAMETER (LOOPMAXCOEFS=15)
115
115
      INTEGER NSQUAREDSO
116
116
      PARAMETER (NSQUAREDSO=1)
 
117
      INCLUDE 'loop_max_coefs.inc'
117
118
 
118
119
      COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
119
120
      COMMON/MG5_1_LCOEFS/LOOPCOEFS
121
122
C     BEGIN CODE
122
123
C     ----------
123
124
 
124
 
C     INITIALIZE CUTTOOLS IF NEEDED
 
125
C     The CT initialization is also performed here if not done already
 
126
C      because it calls MPINIT of OneLOop which is necessary on some
 
127
C      system
 
128
      IF (CTINIT) THEN
 
129
        CTINIT=.FALSE.
 
130
        CALL MG5_1_INITCT()
 
131
      ENDIF
 
132
 
 
133
C     INITIALIZE GOLEM IF NEEDED
125
134
      IF (GOLEMINIT) THEN
126
135
        GOLEMINIT=.FALSE.
127
136
        CALL MG5_1_INITGOLEM()
145
154
 
146
155
C     CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
147
156
      DO I=0,3
 
157
        ABSPCT(I) = 0.D0
148
158
        DO J=0,(NLOOPLINE-1)
149
159
          PCT(I,J)=0.D0
150
160
        ENDDO
152
162
      DO I=0,3
153
163
        DO J=1,NLOOPLINE
154
164
          PCT(I,0)=PCT(I,0)+PL(I,J)
 
165
          ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
155
166
        ENDDO
156
167
      ENDDO
157
 
      IF (CHECKPCONSERVATION) THEN
158
 
        IF (PCT(0,0).GT.1.D-6) THEN
 
168
      REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
 
169
      DO I=0,3
 
170
        ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
 
171
      ENDDO
 
172
      IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
 
173
        IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
159
174
          WRITE(*,*) 'energy is not conserved ',PCT(0,0)
160
175
          STOP 'energy is not conserved'
161
 
        ELSEIF (PCT(1,0).GT.1.D-6) THEN
 
176
        ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
162
177
          WRITE(*,*) 'px is not conserved ',PCT(1,0)
163
178
          STOP 'px is not conserved'
164
 
        ELSEIF (PCT(2,0).GT.1.D-6) THEN
 
179
        ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
165
180
          WRITE(*,*) 'py is not conserved ',PCT(2,0)
166
181
          STOP 'py is not conserved'
167
 
        ELSEIF (PCT(3,0).GT.1.D-6) THEN
 
182
        ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
168
183
          WRITE(*,*) 'pz is not conserved ',PCT(3,0)
169
184
          STOP 'pz is not conserved'
170
185
        ENDIF
460
475
      INTEGER NLOOPLINE
461
476
      REAL(KI) PGOLEM(NLOOPLINE,0:3)
462
477
      COMPLEX(KI) M2L(NLOOPLINE)
463
 
 
464
 
C     
465
 
C     GLOBAL VARIABLES
466
 
C     
467
 
      INCLUDE 'MadLoopParams.inc'
468
 
      INTEGER CTMODE
469
 
      REAL*8 LSCALE
470
 
      COMMON/MG5_1_CT/LSCALE,CTMODE
471
 
      REAL*8 REF_NORMALIZATION
472
478
C     
473
479
C     LOCAL VARIABLES
474
480
C     
475
 
      INTEGER I,J,K
476
 
      COMPLEX(KI) DIFFSQ
 
481
      INTEGER I,J
 
482
      COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
477
483
C     ----------
478
484
C     BEGIN CODE
479
485
C     ----------
480
486
 
 
487
      CALL MG5_1_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L
 
488
     $ ,S_MAT_FROM_MG)
 
489
 
481
490
      DO I=1,NLOOPLINE
482
491
        DO J=1,NLOOPLINE
483
 
          IF(I.EQ.J)THEN
484
 
            S_MAT(I,J)=-(M2L(I)+M2L(J))
485
 
          ELSE
486
 
            DIFFSQ = (CMPLX(PGOLEM(I,0),0.0_KI,KIND=KI)-CMPLX(PGOLEM(J
487
 
     $       ,0),0.0_KI,KIND=KI))**2
488
 
            DO K=1,3
489
 
              DIFFSQ = DIFFSQ-(CMPLX(PGOLEM(I,K),0.0_KI,KIND=KI)
490
 
     $         -CMPLX(PGOLEM(J,K),0.0_KI,KIND=KI))**2
491
 
            ENDDO
492
 
            S_MAT(I,J)=DIFFSQ-M2L(I)-M2L(J)
493
 
            IF(M2L(I).NE.0.0D0)THEN
494
 
              IF(ABS((DIFFSQ-M2L(I))/M2L(I)).LT.OSTHRES)THEN
495
 
                S_MAT(I,J)=-M2L(J)
496
 
              ENDIF
497
 
            ENDIF
498
 
            IF(M2L(J).NE.0.0D0)THEN
499
 
              IF(ABS((DIFFSQ-M2L(J))/M2L(J)).LT.OSTHRES)THEN
500
 
                S_MAT(I,J)=-M2L(I)
501
 
              ENDIF
502
 
            ENDIF
503
 
C           Chose what seems the most appropriate way to compare
504
 
C           massless onshellness. (here we pick the energy component)
505
 
            REF_NORMALIZATION=(PGOLEM(I,0)+PGOLEM(J,0))**2
506
 
            IF(REF_NORMALIZATION.NE.0.0D0)THEN
507
 
              IF(ABS(DIFFSQ/REF_NORMALIZATION).LT.OSTHRES)THEN
508
 
                S_MAT(I,J)=-(M2L(I)+M2L(J))
509
 
              ENDIF
510
 
            ENDIF
511
 
          ENDIF
 
492
          S_MAT(I,J)=S_MAT_FROM_MG(I,J)
512
493
        ENDDO
513
494
      ENDDO
514
495
 
543
524
      LOGICAL MG5_1_COMPARE_COEFS_1
544
525
 
545
526
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
546
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
547
 
     $ ))
 
527
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
528
     $ )
548
529
 
549
530
      IF(DENOM.GT.0D0)THEN
550
531
        MG5_1_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
565
546
 
566
547
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
567
548
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
568
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
569
 
     $ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
 
549
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
550
     $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
570
551
      IF(DENOM.GT.0D0)THEN
571
552
        MG5_1_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
572
553
      ELSE
586
567
 
587
568
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
588
569
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
589
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
590
 
     $ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
591
 
     $ ))
 
570
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
571
     $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
 
572
     $ )
592
573
      IF(DENOM.GT.0D0)THEN
593
574
        MG5_1_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
594
575
      ELSE
607
588
      LOGICAL MG5_1_COMPARE_COEFS_4
608
589
 
609
590
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
610
 
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
611
 
     $ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
612
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
613
 
     $ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
614
 
     $ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
 
591
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
 
592
     $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
 
593
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
594
     $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
 
595
     $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
615
596
      IF(DENOM.GT.0D0)THEN
616
597
        MG5_1_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
617
598
      ELSE
630
611
      LOGICAL MG5_1_COMPARE_COEFS_5
631
612
 
632
613
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
633
 
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
634
 
     $ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
635
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
636
 
     $ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
637
 
     $ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
 
614
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
 
615
     $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
 
616
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
617
     $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
 
618
     $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
638
619
      IF(DENOM.GT.0D0)THEN
639
620
        MG5_1_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
640
621
      ELSE
653
634
      LOGICAL MG5_1_COMPARE_COEFS_6
654
635
 
655
636
      NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
656
 
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)
657
 
     $ )+SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
658
 
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1
659
 
     $ ))+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3
660
 
     $ ))+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
 
637
     $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
 
638
     $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
 
639
      DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
 
640
     $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
 
641
     $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
661
642
      IF(DENOM.GT.0D0)THEN
662
643
        MG5_1_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
663
644
      ELSE
670
651
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
671
652
      USE PRECISION_GOLEM, ONLY: KI
672
653
      INCLUDE 'coef_specs.inc'
673
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
654
      INCLUDE 'loop_max_coefs.inc'
 
655
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
674
656
      COMPLEX(KI) GOLEM_COEFS
675
657
      GOLEM_COEFS=ML_COEFS(0)
676
658
      END
678
660
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
679
661
      USE TENS_REC, ONLY: COEFF_TYPE_1
680
662
      INCLUDE 'coef_specs.inc'
681
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
663
      INCLUDE 'loop_max_coefs.inc'
 
664
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
682
665
      TYPE(COEFF_TYPE_1) GOLEM_COEFS
683
666
C     Constant coefficient 
684
667
      GOLEM_COEFS%%C0=ML_COEFS(0)
695
678
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
696
679
      USE TENS_REC, ONLY: COEFF_TYPE_2
697
680
      INCLUDE 'coef_specs.inc'
698
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
681
      INCLUDE 'loop_max_coefs.inc'
 
682
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
699
683
      TYPE(COEFF_TYPE_2) GOLEM_COEFS
700
684
C     Constant coefficient 
701
685
      GOLEM_COEFS%%C0=ML_COEFS(0)
732
716
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
733
717
      USE TENS_REC, ONLY: COEFF_TYPE_3
734
718
      INCLUDE 'coef_specs.inc'
735
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
719
      INCLUDE 'loop_max_coefs.inc'
 
720
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
736
721
      TYPE(COEFF_TYPE_3) GOLEM_COEFS
737
722
C     Dummy routine for MG5_1_FILL_GOLEM_COEFS_3
738
723
      STOP 'ERROR: 3 > 2'
741
726
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
742
727
      USE TENS_REC, ONLY: COEFF_TYPE_4
743
728
      INCLUDE 'coef_specs.inc'
744
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
729
      INCLUDE 'loop_max_coefs.inc'
 
730
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
745
731
      TYPE(COEFF_TYPE_4) GOLEM_COEFS
746
732
C     Dummy routine for MG5_1_FILL_GOLEM_COEFS_4
747
733
      STOP 'ERROR: 4 > 2'
750
736
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
751
737
      USE TENS_REC, ONLY: COEFF_TYPE_5
752
738
      INCLUDE 'coef_specs.inc'
753
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
739
      INCLUDE 'loop_max_coefs.inc'
 
740
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
754
741
      TYPE(COEFF_TYPE_5) GOLEM_COEFS
755
742
C     Dummy routine for MG5_1_FILL_GOLEM_COEFS_5
756
743
      STOP 'ERROR: 5 > 2'
759
746
      SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
760
747
      USE TENS_REC, ONLY: COEFF_TYPE_6
761
748
      INCLUDE 'coef_specs.inc'
762
 
      COMPLEX*16 ML_COEFS(0:LOOP_MAXCOEFS-1)
 
749
      INCLUDE 'loop_max_coefs.inc'
 
750
      COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
763
751
      TYPE(COEFF_TYPE_6) GOLEM_COEFS
764
752
C     Dummy routine for MG5_1_FILL_GOLEM_COEFS_6
765
753
      STOP 'ERROR: 6 > 2'