Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

Phi4tools

Guides

  • Phi4tools

Tech Notes

  • Feynman Diagram Evaluation
  • Perturbative Series Generation

Symbols

  • BubbleSubdiagram
  • CountLoops
  • DeriveAndWriteExplicit
  • DrawGraph
  • ExternalMomentum
  • InformationDiagram
  • IntegrandDiagram
  • Momentum
  • MomVars
  • NComponents
  • NickelIndex
  • Propagator
  • SquareSubdiagram
  • SunsetSubdiagram
  • SymmetryFactorDiagram
  • TadSunsetSubdiagram
  • TadTriangleBubblesSubdiagram
  • TriangleSubdiagram
  • ValueDiagram
  • VisualizeDiagram
  • WriteExplicit
  • XCubicRatio
Feynman Diagram Evaluation
​
Visualization
Integration
In this Tech Note it is presented an example of how to compute the values of the diagrams in three dimensions starting from their integrands.
Visualization
Let's consider, as an example, the diagrams of the
(4)
Γ
(0)
at the order
4
λ
, i.e. with 4 quartic vertices with zero external momenta.
In[1]:=
Needs["GSberveglieri`Phi4tools`"]
We use the function
VisualizeDiagram
to draw the graph of the Feynman diagrams contributing at the given order.
In[2]:=
VisualizeDiagram
[4,0,4]
Out[2]=

,
,
,
,
,
,
,

It would be very challenging to numerically integrate directly the integrands written assigning the internal momenta to these diagrams. We have 3-loop diagrams, so the integrations would be generically in 6 dimensions (three integrations can be spared using the spherical symmetry of the integrand). It is helpful to substitute some of the analytically known subdiagrams so to reduce the number of effective loops and, thus, the dimension of the integrations.
Let's draw the effective diagrams after the substitutions implemented in this paclet. We do so by adding the option
"Substitutions""Analytics"
to
VisualizeDiagram
.
In[3]:=
VisualizeDiagram
[4,0,4,"Substitutions""Analytics"]
Out[3]=

,
,
,
,
,
,
,

Integration

Symbolic Integrand

The function
IntegrandDiagram
prints the integrands associated with these diagrams in terms of the internal momenta

[n]
(the external momenta

[n]
are by default put to zero). All the analytic functions appearing in the integrands correspond to propagators and other analytic functions corresponding to the subdiagrams that have been substituted.
We obtain the integrands for the simplified diagrams using the option
"Substitutions""Analytics"
in
IntegrandDiagram
.
In[4]:=
intgde4o4=
IntegrandDiagram
[4,0,4,"Substitutions""Analytics"]
Out[4]=

3
ℬ[0]
8
,
1
2
ℬ[0]ℬ[[1]]
2
[[1]]
,
1
6
3
[[1]]
[[1]],2ℬ[[1]][[1]][0,-[1],[1]],
1
2
2
ℬ[[1]]
2
[[1]]
,
1
4
ℬ[[1]][0,-[1],0,[1]],
1
2
2
ℬ[[1]]
2
[[1]]
,
1
3
[[1]][[2]][[1]+[2]][-[1],[1]+[2],-[2]]

Explicit Integrand in Three Dimensions

The function
WriteExplicit
applied to the previous output prints the integrands in three dimensions in a form ready to be integrated. It does so by substituting each subdiagram block with its explicit analytic expression and by writing the internal moment in spherical components in 3D. With the option
"Simplification""Simplify"
also a
Simplify
is applied to them.
In[5]:=
intgd3De4o4=
WriteExplicit
[intgde4o4,"Simplification""Simplify"]
Out[5]=

1
4096
3
π
,
ArcTan
[1]
ρ
2

64
2
π
[1]
ρ
2
1+
2
[1]
ρ

,-
-2+Log
1
9
9+
2
[1]
ρ
+
6ArcTan
[1]
ρ
3

[1]
ρ
192
2
π
3
1+
2
[1]
ρ

,
ArcTan
[1]
ρ
2

16
2
π
[1]
ρ
1+
2
[1]
ρ
4+
2
[1]
ρ

,
2
ArcTan
[1]
ρ
2

32
2
π
2
[1]
ρ
2
1+
2
[1]
ρ

,
ArcTan
[1]
ρ
2

64
2
π
[1]
ρ
2
4+
2
[1]
ρ

,
2
ArcTan
[1]
ρ
2

32
2
π
2
[1]
ρ
2
1+
2
[1]
ρ

,ArcTan
[1]
ρ
[2]
ρ
2
[1]
ρ
+2Cos[
[2]
θ
]
[1]
ρ
[2]
ρ
+
2
[2]
ρ
+4
2
Sin[
[2]
θ
]
24+
2
[1]
ρ
+Cos[
[2]
θ
]
[1]
ρ
[2]
ρ
+
2
[2]
ρ

12π
[1]
ρ
1+
2
[1]
ρ

[2]
ρ
1+
2
[2]
ρ
1+
2
[1]
ρ
+2Cos[
[2]
θ
]
[1]
ρ
[2]
ρ
+
2
[2]
ρ

2
[1]
ρ
+2Cos[
[2]
θ
]
[1]
ρ
[2]
ρ
+
2
[2]
ρ
+4
2
Sin[
[2]
θ
]

Notice that, due to the spherical symmetry, the angular components of
[1]
, together with
[2]
"ϕ"
do not appear in the above expression.

Residual Loops

Some of these integrands can be integrated analytically, while others not. So let's define a generic function to integrate them numerically. First of all, we have to understand in each case on how many variables we have to integrate. The function
CountLoops
gives the number of residual loops on which we have to integrate.
In[6]:=
loope4o4=
CountLoops
/@intgd3De4o4
Out[6]=
{0,1,1,1,1,1,1,2}
​

Integration in Three Dimensions

Let us write a function for the numerical integration of diagrams with 0, 1, and 2 residual loops. Our integrals will be 0, 1, and 3 dimensional, respectively.
Particular care has to be taken for the integral's measure. We need to consider a factor
1
3
(2π)
for every loop, and, since we are in spherical coordinates, a factor
1
2
2
(n)
"ρ"
sin(
(n)
"θ"
)
for every loop. Notice that we do not need to integrate over
[1]
"θ"
,
[1]
"ϕ"
, and
[2]
"ϕ"
and the corresponding factor can be taken into account analytically. Thus we can write:
In[7]:=
nintegratedim[l_,intgr_]:=Module{intsimpl,out},​​Which​​l0,intgr,​​l1,intsimpl=Simplifyintgr
2
[1]
"ρ"
2
2
π
;NIntegrateintsimpl,
Momentum
[1,"ρ"],0,∞,​​l2,intsimpl=Simplifyintgr
2
[1]
"ρ"
2
2
π
2
[2]
"ρ"
2
2
π
Sin[
[2]
"θ"
]
2
​​;NIntegrateintsimpl,
Momentum
[1,"ρ"],0,∞,
Momentum
[2,"ρ"],0,∞,
Momentum
[2,"θ"],0,π​​
Disclaimer: the integration variables in the Mathematica function
NIntegrate
must be written as above with the FullForm
Momentum
[i,"sub"]
, or, if using the short notation

for the variables, one needs to use
Evaluate
as follows
NIntegrateintsimpl,Evaluate@
[1]
"ρ"
,0,∞
.
Now we can perform the integrations:
In[8]:=
results3De4o4=Table[nintegratedim[loope4o4〚i〛,intgd3De4o4〚i〛],{i,Length@loope4o4}]
Out[8]=

1
4096
3
π
,0.0000209971,-3.95607×
-7
10
,0.0000483239,0.0000163598,7.87391×
-6
10
,0.0000163598,3.65141×
-6
10

Note that the numerical integration in three dimensions requires a bit more care if one wants to achieve a greater level of accuracy.
We can now compare these values with those that can be printed using the function
ValueDiagram
. There is a normalization factor of
v4-1
(16π)
to obtain the Nickel normalization.
In[9]:=
ValueDiagram
[4,0,4]
Out[9]=
1,
8
3
,
1
3
(1-8Log[2]+Log[81]),
64
3
Log
4
3
,
4
3
-
2
π
-32Log[2]+Log[9](8+Log[27])+24PolyLog2,
1
3
,1,
4
3
-
2
π
-32Log[2]+Log[9](8+Log[27])+24PolyLog2,
1
3
,0.463734961765340647270682712308442580303488902129863
±
1.0×
-50
10

In[12]:=
3
(16π)
results3De4o4​​N@
ValueDiagram
[4,0,4]
Out[12]=
{1,2.66667,-0.0502428,6.13722,2.07772,1.,2.07772,0.463735}
Out[13]=
{1.,2.66667,-0.0502428,6.13722,2.07772,1.,2.07772,0.4637349617653406
±
1.0×
-50
10
}
RelatedGuides
▪
Phi4tools

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com