FCLoopReplaceQuadraticEikonalPropagators
FCLoopReplaceQuadraticEikonalPropagators[topologies]
identifies SFAD
s and CFAD
s in
topologies
that represent mixed quadratic-eikonal
propagators, e.g. [p2−2p⋅q].
Using the information on loop momenta provided by the user the routine
will try to rewrite those denominators by completing the square, e.g. as
in [(p−q)2−q2].
This procedure is useful because one cannot easily determine the
momentum flow from looking at quadratic-eikonal propagators as it is
possible in the case of purely quadratic ones.
For this to work it is crucial to specify the loop momenta via the
LoopMomenta
option as well as the kinematics
(IntermediateSubstitutions
) and the rules for completing
the square (InitialSubstitutions
) on the purely
loop-momentum dependent piece of the propagator (e.g. p12−2p1⋅p2+p22 goes to (p1+p2)2.
Internally this routine uses ToGFAD
and
FromGFAD
.
See also
Overview, FCTopology, GFAD, FromGFAD, ToGFAD.
Examples
(DataType[#,FCVariable]=True)&/@{gkin,meta,u0b};
topos = {FCTopology[preTopoDia1, {SFAD[{{k2, 0}, {0, 1}, 1}], SFAD[{{k1, 0}, {0, 1}, 1}],
SFAD[{{k1 + k2, 0}, {0, 1}, 1}], SFAD[{{0, -k1 . nb}, {0, 1}, 1}], SFAD[{{k2, -(meta*u0b*k2 . nb)}, {0, 1}, 1}],
SFAD[{{k1 + k2, -2*gkin*meta*u0b*(k1 + k2) . n}, {0, 1}, 1}], SFAD[{{k1, -2*gkin*meta*k1 . n + meta*u0b*k1 . nb},
{2*gkin*meta^2*u0b, 1}, 1}], SFAD[{{k1, -2*gkin*meta*u0b*k1 . n + meta*u0b*k1 . nb}, {2*gkin*meta^2*u0b^2, 1}, 1}]},
{k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]}
{FCTopology(preTopoDia1,{(k22+iη)1,(k12+iη)1,((k1+k2)2+iη)1,(−k1⋅nb+iη)1,(k22−metau0b(k2⋅nb)+iη)1,((k1+k2)2−2gkinmetau0b((k1+k2)⋅n)+iη)1,(k12+metau0b(k1⋅nb)−2gkinmeta(k1⋅n)−2gkinmeta2u0b+iη)1,(k12+metau0b(k1⋅nb)−2gkinmetau0b(k1⋅n)−2gkinmeta2u0b2+iη)1},{k1,k2},{n,nb},{Hold[SPD][n]→0,Hold[SPD][nb]→0,Hold[SPD][n,nb]→2},{})}
FCLoopReplaceQuadraticEikonalPropagators[topos, LoopMomenta -> {k1, k2},
InitialSubstitutions -> {
ExpandScalarProduct[SPD[k1 - k2]] -> SPD[k1 - k2],
ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]},
IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 0}]
{FCTopology(preTopoDia1,{(k22+iη)1,(k12+iη)1,((k1+k2)2+iη)1,(−k1⋅nb+iη)1,((k2−2metau0bnb)2+iη)1,((k1+k2−gkinmetau0bn)2+iη)1,((k1−gkinmetan+2metau0bnb)2−2gkinmeta2u0b+iη)1,((k1−gkinmetau0bn+2metau0bnb)2−2gkinmeta2u0b2+iη)1},{k1,k2},{n,nb},{Hold[SPD][n]→0,Hold[SPD][nb]→0,Hold[SPD][n,nb]→2},{})}
Notice that the ordering of scalar products in the
InitialSubstitutions
option is important. It is recommended
to put the longest and most complicated rules first and all simpler
rules thereafter. Otherwise, it might happen that a simple rule will be
first applied to a complicated expression making it impossible to apply
the actually needed complicated rule later on. For example, this fails,
because the most complicated rule containing 3 loop momenta comes
last
testTopo = FCTopology["topology1230", {SFAD[{{k3, 0}, {0, 1}, 1}], SFAD[{{0, -k2 . nb}, {0, 1}, 1}],
SFAD[{{k1, -(meta*u0b*k1 . nb)}, {0, 1}, 1}], SFAD[{{k1, -2*gkin*meta*u0b*k1 . n}, {0, 1}, 1}],
SFAD[{{0, -(k1 + k2) . nb}, {-2*gkin*meta*u0b, 1}, 1}], SFAD[{{k1 + k2, -2*gkin*meta*u0b*(k1 + k2) . n}, {0, 1}, 1}],
SFAD[{{k2, -2*gkin*meta*k2 . n + meta*u0b*k2 . nb}, {2*gkin*meta^2*u0b, 1}, 1}],
SFAD[{{k1 + k2, -2*gkin*meta*u0b*(k1 + k2) . n + k3 . (-2*k1 - 2*k2 + k3) + 2*gkin*meta*u0b*k3 . n}, {0, 1}, 1}],
SFAD[{{0, (k1 - k3) . nb}, {0, 1}, 1}],
SFAD[{{k1, meta*u0b*(k1 - k3) . nb + k3 . (-2*k1 + k3)}, {0, 1}, 1}], SFAD[{{k1, 2*gkin*meta*k1 . n + k3 . (-2*k1 + k3) - 2*gkin*meta*k3 . n}, {0, 1}, 1}],
SFAD[{{k1 - k2, 0}, {0, 1}, 1}]}, {k1, k2, k3}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]
FCTopology(topology1230,{(k32+iη)1,(−k2⋅nb+iη)1,(k12−metau0b(k1⋅nb)+iη)1,(k12−2gkinmetau0b(k1⋅n)+iη)1,(−(k1+k2)⋅nb+2gkinmetau0b+iη)1,((k1+k2)2−2gkinmetau0b((k1+k2)⋅n)+iη)1,(k22+metau0b(k2⋅nb)−2gkinmeta(k2⋅n)−2gkinmeta2u0b+iη)1,((k1+k2)2+−2gkinmetau0b((k1+k2)⋅n)+k3⋅(−2k1−2k2+k3)+2gkinmetau0b(k3⋅n)+iη)1,((k1−k3)⋅nb+iη)1,(k12+metau0b((k1−k3)⋅nb)+k3⋅(k3−2k1)+iη)1,(k12+2gkinmeta(k1⋅n)+k3⋅(k3−2k1)−2gkinmeta(k3⋅n)+iη)1,((k1−k2)2+iη)1},{k1,k2,k3},{n,nb},{Hold[SPD][n]→0,Hold[SPD][nb]→0,Hold[SPD][n,nb]→2},{})
FCLoopReplaceQuadraticEikonalPropagators[testTopo, LoopMomenta -> {k1, k2, k3}, InitialSubstitutions -> {
ExpandScalarProduct[SPD[k2 - k3]] -> SPD[k2 - k3], ExpandScalarProduct[SPD[k1 - k3]] -> SPD[k1 - k3],
ExpandScalarProduct[SPD[k1 + k3]] -> SPD[k1 + k3],
ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2],
ExpandScalarProduct[SPD[k1 + k2 - k3]] -> SPD[k1 + k2 - k3]
}, IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 0}]
FromGFAD: Some of the converted propagators are not strictly quadratic or eikonal.
FromGFAD: {(k12+2(k1⋅k2)−2(k1⋅k3)+k22−2(k2⋅k3)+k32−2gkinmetau0b(k1⋅n+k2⋅n−k3⋅n)+iη)1}
FromGFAD: These propagators may later cause issues with topology minimization routines.
{FCTopology(topology1230,{(k32+iη)1,(−k2⋅nb+iη)1,((k1−2metau0bnb)2+iη)1,((k1−gkinmetau0bn)2+iη)1,(−(k1+k2)⋅nb+2gkinmetau0b+iη)1,((k1+k2−gkinmetau0bn)2+iη)1,((k2−gkinmetan+2metau0bnb)2−2gkinmeta2u0b+iη)1,(k12+2(k1⋅k2)−2(k1⋅k3)+k22−2(k2⋅k3)+k32−2gkinmetau0b(k1⋅n+k2⋅n−k3⋅n)+iη)1,((k1−k3)⋅nb+iη)1,((k1−k3+2metau0bnb)2+iη)1,((k1−k3+gkinmetan)2+iη)1,((k1−k2)2+iη)1},{k1,k2,k3},{n,nb},{Hold[SPD][n]→0,Hold[SPD][nb]→0,Hold[SPD][n,nb]→2},{})}
Rearranging the rules accordingly, we can make the conversion
succeed
FCLoopReplaceQuadraticEikonalPropagators[testTopo, LoopMomenta -> {k1, k2, k3}, InitialSubstitutions -> {
ExpandScalarProduct[SPD[k1 + k2 - k3]] -> SPD[k1 + k2 - k3],
ExpandScalarProduct[SPD[k2 - k3]] -> SPD[k2 - k3], ExpandScalarProduct[SPD[k1 - k3]] -> SPD[k1 - k3],
ExpandScalarProduct[SPD[k1 + k3]] -> SPD[k1 + k3],
ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]
}, IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 0}]
{FCTopology(topology1230,{(k32+iη)1,(−k2⋅nb+iη)1,((k1−2metau0bnb)2+iη)1,((k1−gkinmetau0bn)2+iη)1,(−(k1+k2)⋅nb+2gkinmetau0b+iη)1,((k1+k2−gkinmetau0bn)2+iη)1,((k2−gkinmetan+2metau0bnb)2−2gkinmeta2u0b+iη)1,((k1+k2−k3−gkinmetau0bn)2+iη)1,((k1−k3)⋅nb+iη)1,((k1−k3+2metau0bnb)2+iη)1,((k1−k3+gkinmetan)2+iη)1,((k1−k2)2+iη)1},{k1,k2,k3},{n,nb},{Hold[SPD][n]→0,Hold[SPD][nb]→0,Hold[SPD][n,nb]→2},{})}