DRalgo/ DRalgo

DRalgo constructs an effective, dimensionally reduced, high-temperature field theory for generic models

Contributed by: Andreas Ekstedt
Philipp Schicho
Tuomas V.I. Tenkanen

DRalgo is an algorithmic implementation that constructs an effective, dimensionally reduced, high-temperature field theory for generic models

Installation Instructions

To install this paclet in your Wolfram Language environment, evaluate this code:
PacletInstall["DRalgo/DRalgo"]


To load the code after installation, evaluate this code:
Needs["DRalgo`DRalgo`"]

Details

DRalgo is an algorithmic implementation that constructs an effective, dimensionally reduced, high-temperature field theory for generic models. The corresponding Mathematica package automatically performs the matching up to next-to-leading order. For details, see the public release: https://arxiv.org/abs/2205.08815. To create model files, DRalgo uses functions from GroupMath. Since GroupMath is an external package, any use of DRalgo’s model-creation features should be accompanied by a corresponding citation: R. M. Fonseca, GroupMath: A Mathematica package for group theory calculations, Comput. Phys. Commun. 267 (2021) 108085 [2011.01764].

Examples

Basic Example of the Abelian Higgs Model

Model (6) 

We consider a simple model with a U(1) gauge group. The adjoint representation is trivial for abelian groups and has Dynkin index {0}. We also include a single complex scalar in the fundamental representation (R= 1).

In[1]:=
Group = {"U1"};
RepAdjoint = {0}; (*Dynkin index of the adjoint*)
CouplingName = {g1}; (*Gauge coupling*)

One complex scalar (interpreted as a Higgs-like field) is present:

In[2]:=
Higgs = {{Y\[Phi]}, "C"}; (*Complex scalar with Hypercharge Y\[Phi]*)
RepScalar = {Higgs}; (*Representation of the scalar field*)

Fermions are treated as Weyl spinors in DRalgo. Therefore, to define a Dirac fermion, one must include both a left-handed and a right-handed Weyl spinor. In this minimal model, no fermions are included:

In[3]:=
RepFermion = {}; (*No fermions in the model*)

We allocate all necessary coupling tensors for the model:

In[4]:=
{gvvv, gvff, gvss, \[Lambda]1, \[Lambda]3, \[Lambda]4, \[Mu]ij, \[Mu]IJ, \[Mu]IJC, Ysff, YsffC} = AllocateTensors[Group, RepAdjoint, CouplingName, RepFermion, RepScalar];

To build the Lagrangian, we construct the mass term m2 ϕϕ :

In[5]:=
InputInv = {{1, 1}, {True, False}}; (*Indicates a \[Phi]\[Dagger]\[Phi]-type invariant*)
MassTerm1 = CreateInvariant[Group, RepScalar, InputInv] // Simplify // FullSimplify;
VMass = msq*
   MassTerm1[[
    1]]; (*Component-level expression for \[Phi]\[Dagger]\[Phi]*)
\[Mu]ij = GradMass[VMass] // Simplify // SparseArray;

We add the quartic interaction of the complex scalar:

In[6]:=
QuarticTerm1 = MassTerm1[[
    1]]^2; (*Because MassTerm1=\[Phi]^+\[Phi], we can write (\[Phi]^+\[Phi])^2=MassTerm1^2*)
VQuartic = \[Lambda]*QuarticTerm1;
\[Lambda]4 = GradQuartic[VQuartic];

To invoke the model in DRalgo, it needs to be imported:

In[7]:=
ImportModelDRalgo[Group, gvvv, gvff, gvss, \[Lambda]1, \[Lambda]3, \[Lambda]4, \[Mu]ij, \[Mu]IJ, \[Mu]IJC, Ysff, YsffC, Verbose -> True];

Dimensional reduction from hard to soft scale (9) 

Integrating out the hard-scale modes in verbose mode:

In[8]:=
PerformDRhard[]

After the reduction completes, the effective couplings are given by:

In[9]:=
PrintCouplings[]
Out[9]=

Internally, a list of constants is used and they can be printed via:

In[10]:=
PrintConstants[]
Out[10]=

Both the leading order (LO) and next-to-leading order (NLO) scalar masses are given by:

In[11]:=
PrintScalarMass["LO"]
PrintScalarMass["NLO"]
Out[11]=
Out[12]=

Similarly, the Debye masses are given by:

In[13]:=
PrintDebyeMass["LO"]
PrintDebyeMass["NLO"]
Out[13]=
Out[14]=

Often one needs the explicit coupling tensors of DRalgo whose indices can be accessed via:

In[15]:=
PrintTensorDRalgo[];

For a specific tensor, e.g. for the scalars quartics with index "1", we can print it directly:

In[16]:=
PrintTensorDRalgo[1] // MatrixForm
Out[16]=

The hard-scale pressure contribution in the high-temperature expansion is obtained by:

In[17]:=
PrintPressure["LO"]
Out[17]=
In[18]:=
PrintPressure["NLO"]
Out[18]=
In[19]:=
PrintPressure["NNLO"]
Out[19]=

Finally, the β-functions of the model are:

In[20]:=
BetaFunctions4D[]
Out[20]=

Dimensional reduction from hard to ''ultrasoft'' scale (6) 

Integrate out the soft-scale modes in verbose mode:

In[21]:=
PerformDRsoft[{}];

After the reduction completes, the effective couplings are given by:

In[22]:=
PrintCouplingsUS[]
Out[22]=

Both the leading order (LO) and next-to-leading order (NLO) scalar masses are given by:

In[23]:=
PrintScalarMassUS["LO"]
PrintScalarMassUS["NLO"]
Out[23]=
Out[24]=

The soft-scale pressure contribution in the high-temperature expansion is obtained by:

In[25]:=
PrintPressureUS["LO"]
Out[25]=
In[26]:=
PrintPressureUS["NLO"]
Out[26]=

The NNLO soft-scale pressure is not yet included in DRalgo:

In[27]:=
PrintPressureUS["NNLO"]

Finally, the β-functions of the model are:

In[28]:=
BetaFunctions3DUS[]
Out[28]=

Effective potential directly (3) 

First, the theory scale is chosen:

In[29]:=
UseUltraSoftTheory[];

Then, a constant background is introduced to the scalars and the potential is calculated:

In[30]:=
\[CurlyPhi]vev = {0, \[CurlyPhi]} // SparseArray;
DefineVEVS[\[CurlyPhi]vev];
CalculatePotential[]

Finally, the different orders of the potential can be computed:

In[31]:=
PrintEffectivePotential["LO"]
Out[31]=
In[32]:=
PrintEffectivePotential["NLO"]
Out[32]=
In[33]:=
PrintEffectivePotential["NNLO"]
Out[33]=

Effective potential directly using HEFT (5) 

In this example, we assume that the temporal and vector degrees of freedom are heavy compared to the scalar sector. Thus, we integrate them out starting from the soft theory, ultimately constructing a High-Energy Effective Theory (HEFT).

Start from the soft theory:

In[34]:=
UseSoftTheory[];

We introduce a background field, φ, for the scalars and calculate the effective potential:

In[35]:=
\[CurlyPhi]vev = {0, \[CurlyPhi], 0} // SparseArray;
DefineVEVS[\[CurlyPhi]vev];
CalculatePotential[]

Before computing the final potential, we must identify which temporal scalars and gauge bosons are heavy and are to be integrated out. Use PrepareHET[{scalarIndices}, {vectorIndices}] to specify them:

In[36]:=
PrepareHET[{3}, {1}]

This functions similar to PerformDRsoft[{}], and the indices can be found with the commands

In[37]:=
PrintScalarRepPositions[] (*Scalar field indices*)
PrintGaugeRepPositions[] (*Gauge field indices*)
Out[37]=
Out[38]=

After, calculating the effective potential in the HEFT setup,

In[39]:=
CalculatePotentialHET[]

finally, the different orders of the potential can be computed :

In[40]:=
PrintActionHET["LO"]
Out[40]=
In[41]:=
PrintActionHET["NLO"]
Out[41]=

The U(1) gauge bosons modify the scalar kinetic terms. The renormalization (wavefunction normalization) is encoded in the Z-factor:

In[42]:=
PrintScalarKineticHET[] // Normal
Out[42]=

Publisher

Philipp Schicho

Compatibility

Wolfram Language Version 13

Version History

  • 1.3.0 – 14 May 2025

License Information

GNU General Public License v3.0 or later

Paclet Source