FeynCalc / feyncalc

Mathematica package for algebraic calculations in elementary particle physics.
https://feyncalc.github.io
GNU General Public License v3.0
316 stars 88 forks source link

Unexpected error generated by FCLoopBasisIntegralToTopology / FCLoopBasisIntegralToPropagators #38

Closed HBelusca closed 6 years ago

HBelusca commented 6 years ago

11.2.0 for Microsoft Windows (64-bit) (September 11, 2017)

The described problem appearing starting revision: 9.3.0 (development) (05732bb0e5780b83210fc21790fd541c7a43ae38) -- "FCLoopBasisExtract is now using FCLoopBasisIntegralToTopology."


With other colleagues I'm performing a 2-loop scalar integral calculation; due to the topology of the diagram (bubble diagram that will be == 0) and the fields involved (and using R-xi gauge) I encounter at some point the following quantity (which is the term in xi^1 in the expression):

FAD[q1, q1 - k1, q1 - k1, q1 - k1, q2] SPD[k1 - q1, k1 + q1] SPD[q1 - k1, q1 + k1]

Calling FCMultiLoopTID on it: FCMultiLoopTID[%, {q1, q2}] fails and displays the following error:

During evaluation of In[1]:= FCLoopBasisIntegralToTopology::failmsg: Error! FCLoopBasisIntegralToTopology has encountered a fatal problem and must abort the computation. The problem reads: The input expression does not seem to be a valid scalar loop integral.

Out[1]= $Aborted

Adding the following diagnostic patch on FeynCalc:

diff --git a/FeynCalc/LoopIntegrals/FCLoopBasis.m b/FeynCalc/LoopIntegrals/FCLoopBasis.m
index 38ec7768..17d18f82 100755
--- a/FeynCalc/LoopIntegrals/FCLoopBasis.m
+++ b/FeynCalc/LoopIntegrals/FCLoopBasis.m
@@ -244,6 +244,7 @@ FCLoopBasisIntegralToTopology[expr_, lmoms_List, OptionsPattern[]]:=
                ];

                If[     !MemberQ[{Times,FeynAmpDenominator,Pair,CartesianPair,TemporalPair},Head[exp]] || FreeQ2[exp,lmoms],
+               Print["(1) exp = ", InputForm[exp], " ; lmoms = ", InputForm[lmoms]];
                        Message[FCLoopBasisIntegralToTopology::failmsg,"The input expression does not seem to be a valid loop integral."];
                        Abort[]
                ];
@@ -284,6 +285,7 @@ FCLoopBasisIntegralToTopology[expr_, lmoms_List, OptionsPattern[]]:=
                ];

                If[     !FreeQ2[rest,lmoms] || !FreeQ2[tmp,{LorentzIndex,CartesianIndex,TemporalIndex}],
+               Print["(2) rest = ", InputForm[rest], " ; tmp = ", InputForm[tmp], " ; lmoms = ", InputForm[lmoms]];
                        Message[FCLoopBasisIntegralToTopology::failmsg,"The input expression does not seem to be a valid scalar loop integral."];
                        Abort[]
                ];

helps finding where the error is displayed and in which conditions:

During evaluation of In[1]:= (2) rest = (Pair[Momentum[k1, D], Momentum[k1, D]] - Pair[Momentum[q1, D], Momentum[q1, D]])*(-Pair[Momentum[k1, D], Momentum[k1, D]] + Pair[Momentum[q1, D], Momentum[q1, D]]) ; tmp = {FeynAmpDenominator[PropagatorDenominator[Momentum[q2, D], 0], PropagatorDenominator[Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0]]} ; lmoms = {q1, q2}

During evaluation of In[1]:= FCLoopBasisIntegralToTopology::failmsg: Error! FCLoopBasisIntegralToTopology has encountered a fatal problem and must abort the computation. The problem reads: The input expression does not seem to be a valid scalar loop integral.

Out[1]= $Aborted

NOTE: In latest FeynCalc versions FCLoopBasisIntegralToTopology has been renamed into FCLoopBasisIntegralToPropagators.


Errors also happen with the following expressions (coming from other diagrams):

FAD[q1, q1 - k1, q2, q1 + q2] SPD[2 k1 - q1, q1 + 2 q2] produces:

In[2]:= FCMultiLoopTID[%, {q1, q2}]

During evaluation of In[2]:= (2) rest = Pair[Momentum[k1, D], Momentum[2*q1 + 4*q2, D]] + Pair[Momentum[q1, D], Momentum[-q1 - 2*q2, D]] ; tmp = {FeynAmpDenominator[PropagatorDenominator[Momentum[q2, D], 0], PropagatorDenominator[Momentum[q1, D], 0], PropagatorDenominator[Momentum[q1, D] + Momentum[q2, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0]]} ; lmoms = {q1, q2}

During evaluation of In[2]:= FCLoopBasisIntegralToPropagators::failmsg: Error! FCLoopBasisIntegralToPropagators has encountered a fatal problem and must abort the computation. The problem reads: The input expression does not seem to be a valid scalar loop integral.

Out[2]= $Aborted

FAD[q1, q1 - k1, q1 - k1, q1 - q2 - k1, q2] SPD[k1 + q1, q1 - q2 - k1] SPD[k1 + q1, q2] produces:

In[3]:= FCMultiLoopTID[%, {q1, q2}]

During evaluation of In[3]:= (2) rest = -Pair[Momentum[k1, D], Momentum[k1 + q2, D]] + Pair[Momentum[q1, D], Momentum[q1 - q2, D]] ; tmp = {FeynAmpDenominator[PropagatorDenominator[Momentum[q2, D], 0], PropagatorDenominator[Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D], 0], PropagatorDenominator[-Momentum[k1, D] + Momentum[q1, D] - Momentum[q2, D], 0]], Pair[Momentum[k1 + q1, D], Momentum[q2, D]]} ; lmoms = {q1, q2}

During evaluation of In[3]:= FCLoopBasisIntegralToPropagators::failmsg: Error! FCLoopBasisIntegralToPropagators has encountered a fatal problem and must abort the computation. The problem reads: The input expression does not seem to be a valid scalar loop integral.

Out[3]= $Aborted
vsht commented 6 years ago

Thanks, it should be now fixed.

HBelusca commented 6 years ago

Confirmed fixed, thanks!