1
SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
3
C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4
C By the MadGraph5_aMC@NLO Development Team
5
C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
7
C Interface between MG5 and Golem95.
8
C The Golem95 version should be higher than 1.3.0.
9
C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 <
12
C Process: d~ u > w+ WEIGHTED<=2 QED<=1 [ all = QCD ]
13
C Process: s~ c > w+ WEIGHTED<=2 QED<=1 [ all = QCD ]
19
USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR
20
USE PRECISION_GOLEM, ONLY: KI
23
USE FORM_FACTOR_1P, ONLY: A10
24
USE FORM_FACTOR_2P, ONLY: A20
25
USE FORM_FACTOR_3P, ONLY: A30
26
USE FORM_FACTOR_4P, ONLY: A40
27
USE FORM_FACTOR_5P, ONLY: A50
28
USE FORM_FACTOR_6P, ONLY: A60
34
PARAMETER (NEXTERNAL=3)
35
LOGICAL CHECKPCONSERVATION
36
PARAMETER (CHECKPCONSERVATION=.TRUE.)
38
PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0*
40
REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI
42
C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients
43
C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints
45
C numerator using golem internal reconstruction routine
46
C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients
48
C MadLoop internal ones.
49
INTEGER GOLEM_RUN_MODE
50
PARAMETER (GOLEM_RUN_MODE=1)
51
C The following is the acceptance threshold used for
53
REAL*8 COEF_CHECK_THRS
54
DATA COEF_CHECK_THRS/1.0D-13/
55
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
57
LOGICAL PASS_COEF_CHECK
61
INTEGER NLOOPLINE, RANK
62
REAL*8 PL(0:3,NLOOPLINE)
63
REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
65
REAL(KI) PGOLEM(NLOOPLINE,0:3)
66
COMPLEX*16 M2L(NLOOPLINE)
67
COMPLEX(KI) M2LGOLEM(NLOOPLINE)
74
TYPE(FORM_FACTOR)::RES_GOLEM
76
COMPLEX(KI)::COEFFS0,COEFFS0_REC
77
TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC
78
TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC
79
TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC
80
TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC
81
TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC
82
TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC
84
C The pinch propagator optimization is not used, so for now it is
90
COMPLEX(KI) GOLEM_LOOPNUM
91
EXTERNAL GOLEM_LOOPNUM
92
LOGICAL COMPARE_COEFS_0
93
LOGICAL COMPARE_COEFS_1
94
LOGICAL COMPARE_COEFS_2
95
LOGICAL COMPARE_COEFS_3
96
LOGICAL COMPARE_COEFS_4
97
LOGICAL COMPARE_COEFS_5
98
LOGICAL COMPARE_COEFS_6
105
COMMON/CT/LSCALE,CTMODE
107
INTEGER ID,SQSOINDEX,R
108
COMMON/LOOP/ID,SQSOINDEX,R
110
LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
111
COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
115
PARAMETER (NLOOPGROUPS=1)
117
PARAMETER (NSQUAREDSO=1)
118
INCLUDE 'loop_max_coefs.inc'
120
COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
121
COMMON/LCOEFS/LOOPCOEFS
126
C The CT initialization is also performed here if not done already
127
C because it calls MPINIT of OneLOop which is necessary on some
134
C INITIALIZE GOLEM IF NEEDED
140
C No stability test intrisic to Golem95 now
143
C This initialization must be done for each reduction because we
144
C have not setup anyoptimization using pinched propagators yet.
145
CALL INITGOLEM95(NLOOPLINE)
148
C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE
149
C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION
151
C CONVERT THE MASSES TO BE COMPLEX
156
C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
165
PCT(I,0)=PCT(I,0)+PL(I,J)
166
ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
169
REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
171
ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
173
IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
174
IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
175
WRITE(*,*) 'energy is not conserved ',PCT(0,0)
176
STOP 'energy is not conserved'
177
ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
178
WRITE(*,*) 'px is not conserved ',PCT(1,0)
179
STOP 'px is not conserved'
180
ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
181
WRITE(*,*) 'py is not conserved ',PCT(2,0)
182
STOP 'py is not conserved'
183
ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
184
WRITE(*,*) 'pz is not conserved ',PCT(3,0)
185
STOP 'pz is not conserved'
191
PCT(I,J)=PCT(I,J)+PL(I,K)
196
C Now convert the loop momenta to Golem95 conventions
200
PGOLEM(J,I)=PCT(I,J-1)
204
C Fill in the kinematic s-matrix while taking care of on-shell
206
CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM)
207
C Construct the golem internal matrices derived from the kinetic
209
CALL PREPARESMATRIX()
211
C Fill in the golem coefficents and compute the loop
212
IF(GOLEM_RUN_MODE.EQ.2)THEN
213
RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK)
215
PASS_COEF_CHECK=.TRUE.
218
CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0)
219
IF(GOLEM_RUN_MODE.EQ.3)THEN
220
COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI)
221
PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC)
224
CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1)
225
IF(GOLEM_RUN_MODE.EQ.3)THEN
226
CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC)
227
PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC)
230
CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2)
231
IF(GOLEM_RUN_MODE.EQ.3)THEN
232
CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC)
233
PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC)
236
CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3)
237
IF(GOLEM_RUN_MODE.EQ.3)THEN
238
CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC)
239
PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC)
242
CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4)
243
IF(GOLEM_RUN_MODE.EQ.3)THEN
244
CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC)
245
PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC)
248
CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5)
249
IF(GOLEM_RUN_MODE.EQ.3)THEN
250
CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC)
251
PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC)
254
CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6)
255
IF(GOLEM_RUN_MODE.EQ.3)THEN
256
CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC)
257
PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC)
260
WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK
264
IF(.NOT.PASS_COEF_CHECK)THEN
265
WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK
266
WRITE(*,*)'Coefs form MadLoop5:'
269
WRITE(*,*)'Constant coef = ',COEFFS0
271
CALL PRINT_COEFFS(COEFFS1)
273
CALL PRINT_COEFFS(COEFFS2)
275
CALL PRINT_COEFFS(COEFFS3)
277
CALL PRINT_COEFFS(COEFFS4)
279
CALL PRINT_COEFFS(COEFFS5)
281
CALL PRINT_COEFFS(COEFFS6)
283
WRITE(*,*)'Coefs reconstructed by Golem95:'
286
WRITE(*,*)'Constant coef = ',COEFFS0_REC
288
CALL PRINT_COEFFS(COEFFS1_REC)
290
CALL PRINT_COEFFS(COEFFS2_REC)
292
CALL PRINT_COEFFS(COEFFS3_REC)
294
CALL PRINT_COEFFS(COEFFS4_REC)
296
CALL PRINT_COEFFS(COEFFS5_REC)
298
CALL PRINT_COEFFS(COEFFS6_REC)
303
SELECT CASE(NLOOPLINE)
305
WRITE(*,*)'Golem95 cannot handle with tadpole yet'
310
RES_GOLEM = COEFFS0*A20(PINCH)
312
RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH)
314
RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH)
316
RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH)
318
WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK
324
RES_GOLEM = COEFFS0*A30(PINCH)
326
RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH)
328
RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH)
330
RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH)
332
RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH)
334
WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK
340
RES_GOLEM = COEFFS0*A40(PINCH)
342
RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH)
344
RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH)
346
RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH)
348
RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH)
350
RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH)
352
WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK
358
RES_GOLEM = COEFFS0*A50(PINCH)
360
RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH)
362
RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH)
364
RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH)
366
RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH)
368
RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH)
370
RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH)
372
WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK
378
RES_GOLEM = COEFFS0*A60(PINCH)
380
RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH)
382
RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH)
384
RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH)
386
RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH)
388
RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH)
390
RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH)
392
WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK
396
WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE
401
RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R)
402
$ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A)
403
RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R)
405
RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A)
406
C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
408
C Finally free golem memory and cache
413
FUNCTION GOLEM_LOOPNUM(Q,MU2)
414
USE PRECISION_GOLEM, ONLY: KI
415
REAL(KI),DIMENSION(0:3),INTENT(IN)::Q
416
REAL(KI),INTENT(IN)::MU2
417
COMPLEX(KI)::GOLEM_LOOPNUM
419
COMPLEX*16 QQ(0:3),NUM
423
QQ(I)=CMPLX(Q(I),0.0D0,KIND=16)
431
SUBROUTINE INITGOLEM()
433
C INITIALISATION OF GOLEM
443
LOGICAL EXT_NUM_FOR_R1
447
INCLUDE 'MadLoopParams.inc'
452
C DEFAULT PARAMETERS FOR GOLEM
453
C -------------------------------
454
C One can chose here to have either just the rational R1 piece
455
C or everything but the R2
460
SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L)
465
USE PRECISION_GOLEM, ONLY: KI
470
REAL(KI) PGOLEM(NLOOPLINE,0:3)
471
COMPLEX(KI) M2L(NLOOPLINE)
476
COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
481
CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG)
485
S_MAT(I,J)=S_MAT_FROM_MG(I,J)
491
FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B)
493
USE PRECISION_GOLEM, ONLY: KI
494
COMPLEX(KI) COEFS_A,COEFS_B
495
REAL*8 COEF_CHECK_THRS
496
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
498
LOGICAL COMPARE_COEFS_0
500
NUM = ABS(COEFS_A-COEFS_B)
501
DENOM = ABS(COEFS_A+COEFS_B)
503
COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS)
505
COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS)
510
FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B)
513
TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B
514
REAL*8 COEF_CHECK_THRS
515
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
517
LOGICAL COMPARE_COEFS_1
519
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
520
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
524
COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
526
COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS)
531
FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B)
534
TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B
535
REAL*8 COEF_CHECK_THRS
536
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
538
LOGICAL COMPARE_COEFS_2
540
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
541
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
542
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
543
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
545
COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
547
COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS)
552
FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B)
555
TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B
556
REAL*8 COEF_CHECK_THRS
557
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
559
LOGICAL COMPARE_COEFS_3
561
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
562
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
563
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
564
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
567
COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
569
COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS)
574
FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B)
577
TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B
578
REAL*8 COEF_CHECK_THRS
579
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
581
LOGICAL COMPARE_COEFS_4
583
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
584
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
585
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
586
DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
587
$ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
588
$ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
590
COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
592
COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS)
597
FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B)
600
TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B
601
REAL*8 COEF_CHECK_THRS
602
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
604
LOGICAL COMPARE_COEFS_5
606
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
607
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
608
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
609
DENOM = 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))
613
COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
615
COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS)
620
FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B)
623
TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B
624
REAL*8 COEF_CHECK_THRS
625
COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
627
LOGICAL COMPARE_COEFS_6
629
NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
630
$ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
631
$ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
632
DENOM = 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))
636
COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
638
COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS)
644
SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
645
USE PRECISION_GOLEM, ONLY: KI
646
INCLUDE 'coef_specs.inc'
647
INCLUDE 'loop_max_coefs.inc'
648
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
649
COMPLEX(KI) GOLEM_COEFS
650
GOLEM_COEFS=ML_COEFS(0)
653
SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
654
USE TENS_REC, ONLY: COEFF_TYPE_1
655
INCLUDE 'coef_specs.inc'
656
INCLUDE 'loop_max_coefs.inc'
657
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
658
TYPE(COEFF_TYPE_1) GOLEM_COEFS
659
C Constant coefficient
660
GOLEM_COEFS%%C0=ML_COEFS(0)
662
GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
664
GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
666
GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
668
GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
671
SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
672
USE TENS_REC, ONLY: COEFF_TYPE_2
673
INCLUDE 'coef_specs.inc'
674
INCLUDE 'loop_max_coefs.inc'
675
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
676
TYPE(COEFF_TYPE_2) GOLEM_COEFS
677
C Constant coefficient
678
GOLEM_COEFS%%C0=ML_COEFS(0)
680
GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
682
GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
684
GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
686
GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
688
GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
690
GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
692
GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
694
GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
695
C Coefficient q(0)*q(1)
696
GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
697
C Coefficient q(0)*q(2)
698
GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
699
C Coefficient q(0)*q(3)
700
GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
701
C Coefficient q(1)*q(2)
702
GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
703
C Coefficient q(1)*q(3)
704
GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
705
C Coefficient q(2)*q(3)
706
GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
709
SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
710
USE TENS_REC, ONLY: COEFF_TYPE_3
711
INCLUDE 'coef_specs.inc'
712
INCLUDE 'loop_max_coefs.inc'
713
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
714
TYPE(COEFF_TYPE_3) GOLEM_COEFS
715
C Dummy routine for FILL_GOLEM_COEFS_3
719
SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
720
USE TENS_REC, ONLY: COEFF_TYPE_4
721
INCLUDE 'coef_specs.inc'
722
INCLUDE 'loop_max_coefs.inc'
723
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
724
TYPE(COEFF_TYPE_4) GOLEM_COEFS
725
C Dummy routine for FILL_GOLEM_COEFS_4
729
SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
730
USE TENS_REC, ONLY: COEFF_TYPE_5
731
INCLUDE 'coef_specs.inc'
732
INCLUDE 'loop_max_coefs.inc'
733
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
734
TYPE(COEFF_TYPE_5) GOLEM_COEFS
735
C Dummy routine for FILL_GOLEM_COEFS_5
739
SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
740
USE TENS_REC, ONLY: COEFF_TYPE_6
741
INCLUDE 'coef_specs.inc'
742
INCLUDE 'loop_max_coefs.inc'
743
COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
744
TYPE(COEFF_TYPE_6) GOLEM_COEFS
745
C Dummy routine for FILL_GOLEM_COEFS_6