|
| 1 | +#ifndef `TEST' |
| 2 | + #message Use -D TEST=XXX |
| 3 | + #terminate |
| 4 | +#else |
| 5 | + #include `NAME_' # `TEST' |
| 6 | +#endif |
| 7 | +.end |
| 8 | + |
| 9 | +*--#[ tloop : |
| 10 | +#- |
| 11 | + |
| 12 | +* This is a modified version of tloop.frm from the color.h example files. |
| 13 | + |
| 14 | +Off Statistics; |
| 15 | + |
| 16 | +* Larger than 5 becomes extremely slow under valgrind. |
| 17 | +#define SIZE "5" |
| 18 | +*#define ALTERNATEMETHOD "1" |
| 19 | +* |
| 20 | +* Test program for the color traces in the paper and a few more. |
| 21 | +* The paper: "Color traces for arbitrary groups" |
| 22 | +* by T. van Ritbergen, A.N. Schellekens and J.A.M. Vermaseren. |
| 23 | +* |
| 24 | +* The object is to express color traces in terms of group invariants |
| 25 | +* in such a way that the group has not been specified yet. The few |
| 26 | +* remaining invariants can be substituted afterwards. The expressions |
| 27 | +* in terms of invariants are better for publications. One sees more |
| 28 | +* about the structure of the problem this way. |
| 29 | +* |
| 30 | +* All declarations are made in the file cfactors.h |
| 31 | +* One needs version 3 or later of FORM to run these programs. |
| 32 | +* The programs will handle all color structures with up to 14 vertices. |
| 33 | +* One vertex is one generator in any representation. |
| 34 | +* Currently the program handles only one type of non-adjoint representaion. |
| 35 | +* If there are two different representations of such type one has to |
| 36 | +* try to run the problem in stages. |
| 37 | +* |
| 38 | +* Examples are: |
| 39 | +* One quark-loop with SIZE gluons in a maximally non-planar configuration |
| 40 | +* (TYPE = qloop) |
| 41 | +* Same but qluon loop (everything in the adjoint representation) |
| 42 | +* (TYPE = gloop) |
| 43 | +* Two quark loops with SIZE connecting gluons like a circular ladder. |
| 44 | +* (TYPE = qqloop) |
| 45 | +* Same with one quark loop and one gluon loop. |
| 46 | +* (TYPE = qgloop) |
| 47 | +* Same with two gluon loops. |
| 48 | +* (TYPE = ggloop) |
| 49 | +* The Coxeter graph (diagram with 14 vertices in the adjoint representation |
| 50 | +* in which there are no loops with fewer than 6 lines) (TYPE = g14) |
| 51 | +* |
| 52 | +* One should not choose SIZE larger than 7 or most likely the simplification |
| 53 | +* routine cannot simplify the final result completely (in some rare cases |
| 54 | +* it can though for SIZE = 8). |
| 55 | +* For execution times, see the paper. |
| 56 | +* It does get very slow for quarks and SIZE > 7. |
| 57 | +* |
| 58 | +* Program by J.Vermaseren, 24-may-1997 |
| 59 | +* |
| 60 | +#include include/color.h |
| 61 | +AutoDeclare Index i,j,k; |
| 62 | +CFunction acc; |
| 63 | +Symbol x; |
| 64 | +.global |
| 65 | +G Q{2*`SIZE'} = <T(i1,i2,j1)>*...*<T(i`SIZE',i{`SIZE'+1},j`SIZE')> |
| 66 | + *<T(i{`SIZE'+1},i{`SIZE'+2},j1)>*...*<T(i{`SIZE'*2},i{2*`SIZE'+1},j`SIZE')> |
| 67 | + *replace_(i{`SIZE'*2+1},i1); |
| 68 | + |
| 69 | +G G{2*`SIZE'} = <f(i1,i2,j1)>*...*<f(i`SIZE',i{`SIZE'+1},j`SIZE')> |
| 70 | + *<f(i{`SIZE'+1},i{`SIZE'+2},j1)>*...*<f(i{`SIZE'*2},i{2*`SIZE'+1},j`SIZE')> |
| 71 | + *replace_(i{`SIZE'*2+1},i1); |
| 72 | + |
| 73 | +G QQ`SIZE' = <T(i1,i2,j1)>*...*<T(i`SIZE',i{`SIZE'+1},j`SIZE')> |
| 74 | + *<T(k1,k2,j1)>*...*<T(k`SIZE',k{`SIZE'+1},j`SIZE')> |
| 75 | + *replace_(i{`SIZE'+1},i1,k{`SIZE'+1},k1); |
| 76 | +
|
| 77 | +G QG`SIZE' = <T(i1,i2,j1)>*...*<T(i`SIZE',i{`SIZE'+1},j`SIZE')> |
| 78 | + *<f(k1,k2,j1)>*...*<f(k`SIZE',k{`SIZE'+1},j`SIZE')> |
| 79 | + *replace_(i{`SIZE'+1},i1,k{`SIZE'+1},k1); |
| 80 | + |
| 81 | +G GG`SIZE' = <f(i1,i2,j1)>*...*<f(i`SIZE',i{`SIZE'+1},j`SIZE')> |
| 82 | + *<f(k1,k2,j1)>*...*<f(k`SIZE',k{`SIZE'+1},j`SIZE')> |
| 83 | + *replace_(i{`SIZE'+1},i1,k{`SIZE'+1},k1); |
| 84 | +
|
| 85 | +* These take too long under valgrind. |
| 86 | +*G girth14 = |
| 87 | +* f(i1,i2,i3)*f(i1,i4,i5)*f(i2,i6,i7)*f(i3,i8,i9) |
| 88 | +* *f(i4,i10,i11)*f(i5,i12,i13)*f(i6,i14,i15)*f(i7,i16,i17) |
| 89 | +* *f(i8,i18,i19)*f(i9,i20,i21) |
| 90 | +* *f(i10,i21,i15)*f(i13,i19,i14)*f(i17,i11,i18)*f(i12,i16,i20); |
| 91 | +* |
| 92 | +*G girth24 = |
| 93 | +* f(i36,i1,i2)*f(i36,i3,i4)*f(i1,i5,i6)*f(i2,i7,i8) |
| 94 | +* *f(i3,i9,i10)*f(i4,i11,i12)*f(i5,i13,i14)*f(i6,i15,i16) |
| 95 | +* *f(i7,i17,i18)*f(i8,i19,i20)*f(i9,i21,i22)*f(i10,i23,i24) |
| 96 | +* *f(i11,i25,i26)*f(i12,i27,i28)*f(i13,i23,i29)*f(i14,i27,i30) |
| 97 | +* *f(i15,i25,i31)*f(i16,i21,i32)*f(i17,i26,i29)*f(i18,i32,i33) |
| 98 | +* *f(i19,i31,i34)*f(i20,i22,i30)*f(i24,i34,i35)*f(i28,i33,i35); |
| 99 | +* |
| 100 | +*G fiveq = T(i1,i2,j1)*T(i2,i3,j2)*T(i3,i1,j3)* |
| 101 | +* T(i4,i5,j2)*T(i5,i6,j4)*T(i6,i4,j5)* |
| 102 | +* T(i7,i8,j4)*T(i8,i9,j6)*T(i9,i7,j7)* |
| 103 | +* T(i10,i11,j6)*T(i11,i12,j1)*T(i12,i10,j8)* |
| 104 | +* T(i13,i14,j3)*T(i14,i15,j5)*T(i15,i16,j7)*T(i16,i13,j8); |
| 105 | +
|
| 106 | +Sum i1,...,i{`SIZE'*2},j1,...,j`SIZE',k1,...,k`SIZE'; |
| 107 | +.sort |
| 108 | + |
| 109 | +#call color |
| 110 | +#call SORT(tloop-1) |
| 111 | +#call adjoint |
| 112 | +#call SORT(tloop-2) |
| 113 | +.sort |
| 114 | +#call simpli |
| 115 | +id acc(x?) = x; |
| 116 | +*Print +s; |
| 117 | +.sort |
| 118 | + |
| 119 | +* Check results |
| 120 | +Local Q10 = - Q10 |
| 121 | + + NA*I2R*cR^4 |
| 122 | + - 5*NA*I2R*cA*cR^3 |
| 123 | + + 35/4*NA*I2R*cA^2*cR^2 |
| 124 | + - 155/24*NA*I2R*cA^3*cR |
| 125 | + + 125/72*NA*I2R*cA^4 |
| 126 | + + 5*d44(cOlpR1,cOlpA1)*cR |
| 127 | + - 6*d44(cOlpR1,cOlpA1)*cA |
| 128 | + + 1/3*d44(cOlpA1,cOlpA2)*I2R |
| 129 | + ; |
| 130 | + |
| 131 | +Local G10 = - G10 |
| 132 | + - 1/36*NA*cA^5 |
| 133 | + + 2/3*d44(cOlpA1,cOlpA2)*cA |
| 134 | + ; |
| 135 | + |
| 136 | +Local QQ5 = - QQ5 |
| 137 | + - 5/144*NA*I2R^2*cA^3 |
| 138 | + + 11/48*d33(cOlpR1,cOlpR2)*cA^2 |
| 139 | + - 5/6*d44(cOlpR1,cOlpR2)*cA |
| 140 | + + 1/6*d44(cOlpR1,cOlpA1)*I2R |
| 141 | + + d55(cOlpR1,cOlpR2) |
| 142 | + ; |
| 143 | + |
| 144 | +Local QG5 = - QG5 |
| 145 | + - 5/144*i_*NA*I2R*cA^4 |
| 146 | + - 3/4*d44(cOlpR1,cOlpA1)*i_*cA |
| 147 | + + 1/12*d44(cOlpA1,cOlpA2)*i_*I2R |
| 148 | + ; |
| 149 | + |
| 150 | +Local GG5 = - GG5 |
| 151 | + + 5/144*NA*cA^5 |
| 152 | + + 2/3*d44(cOlpA1,cOlpA2)*cA |
| 153 | + ; |
| 154 | +.sort |
| 155 | + |
| 156 | +#do ex = {`activeexprnames_'} |
| 157 | + #if `ZERO_`ex'' == 0 |
| 158 | + #message Error in `ex' |
| 159 | + #terminate |
| 160 | + #endif |
| 161 | +#enddo |
| 162 | + |
| 163 | +.end |
| 164 | +#pend_if valgrind? && ncpu < 4 |
| 165 | +assert succeeded? |
| 166 | +*--#] tloop : |
0 commit comments