Quit[];

WallGoMatrix

Installation

PacletInstall["WallGo/WallGoMatrix"];

Initialisation

If[$InputFileName=="",
	SetDirectory[NotebookDirectory[]],
	SetDirectory[DirectoryName[$InputFileName]]
];
(*Put this if you want to create multiple model-files with the same kernel*)
WallGo`WallGoMatrix`$GroupMathMultipleModels=True;
Check[
    Get["WallGo`WallGoMatrix`"],
    Message[Get::noopen, "WallGo`WallGoMatrix` at "<>ToString[$UserBaseDirectory]<>"/Applications"];
    Abort[];
]

Yukawa Model

Model

Using SU(2) in the adjoint representation with Dynkin index {0} and representation R= 1.

Group={"U1"};
RepAdjoint={0};
RepScalar={{{0},"R"}};
CouplingName={g1};

Scalars are present in the theory:

RepScalar={{{0},"R"}};

Fermions are implemented as Weyl spinors.
Therefore, to create one Dirac fermion, one left-handed and one right-handed fermion is needed:

RepFermion={{{0},"L"},{{0},"R"}};

The input for the gauge interactions to DRalgo are then given by

{gvvv,gvff,gvss,λ1,λ3,λ4,μij,μIJC,μIJ,Ysff,YsffC}=AllocateTensors[Group,RepAdjoint,CouplingName,RepFermion,RepScalar];

Create group invariant for tadpole

(* σ ϕ *)
InputInv={{1},{True}};
LinearTerm=CreateInvariant[Group,RepScalar,InputInv][[1]];
VLinear=0;(* turned off *)σ*LinearTerm
λ1=GradTadpole[VLinear];

Create group invariant for mass term

(* 1/2m^2ϕ^2 *)
InputInv={{1,1},{True,True}}; 
MassTerm=CreateInvariant[Group,RepScalar,InputInv][[1]];
VMass=msq/2*MassTerm
μij=GradMass[VMass]//SparseArray;

Create group invariant for cubic term

(* 1/6γϕ^3 *)
InputInv={{1,1,1},{True,True,True}};
CubicTerm=CreateInvariant[Group,RepScalar,InputInv][[1]];
VCubic=gamma/6*CubicTerm
λ3=GradCubic[VCubic];

Create group invariant for quartic term

(* 1/24λϕ^4 *)
InputInv={{1,1,1,1},{True,True,True,True}};
QuarticTerm=CreateInvariant[Group,RepScalar,InputInv][[1]];
VQuartic=lam/24*MassTerm^2
λ4=GradQuartic[VQuartic];

Create group invariant for Dirac Fermion mass term

(* m(Subscript[ψ, R]Subscript[ψ, L]+Subscript[ψ^+, L]Subscript[ψ, R]^+)*)
InputInv={{2,1},{True,True}}; (*Subscript[ψ, R]^+Subscript[ψ, L]*)
MassTerm1=CreateInvariantFermion[Group,RepFermion,InputInv][[1]]
InputInv={{1,2},{False,False}};  (*Subscript[ψ^+, L]Subscript[ψ, R]*)
MassTerm2=CreateInvariantFermion[Group,RepFermion,InputInv][[1]]

μIJ=mpsi*GradMassFermion[MassTerm1];
μIJC=mpsi*GradMassFermion[MassTerm2];

Create group invariant for Yukawa interaction

(* y ϕ(Subscript[ψ, R]Subscript[ψ, L]+Subscript[ψ^+, L]Subscript[ψ, R]^+)*)
InputInv={{1,2,1},{True,True,True}};
YukawaDoublet1=CreateInvariantYukawa[Group,RepScalar,RepFermion,InputInv][[1]]//Simplify;
InputInv={{1,1,2},{True,False,False}}; 
YukawaDoublet2=CreateInvariantYukawa[Group,RepScalar,RepFermion,InputInv][[1]]//Simplify;

Ysff= y*GradYukawa[YukawaDoublet1];
YsffC=y*GradYukawa[YukawaDoublet2];

To invoke the model, it needs to be imported:

ImportModel[Group,gvvv,gvff,gvss,λ1,λ3,λ4,μij,μIJ,μIJC,Ysff,YsffC,Verbose->False];

A model with 1 Dirac fermions and 1 scalar bosons

SymmetryBreaking

Include a VEV to discriminate particles given their mass.

vev={v};
(*SymmetryBreaking[vev,VevDependentCouplings->True]*) (*uncomment if you want vev-dependent couplings*)
SymmetryBreaking[vev]

UserInput

In DRalgo fermions are Weyl.
So to create one Dirac we need
one left-handed and
one right-handed fermion

(*Below
rep 1-2 are fermions,
(*rep 3 is a scalar*)
*)

Representation for scalar:

RepScalar=CreateParticle[{1},"S",ms2,"Phi"];

Representation for left-handed fermion:

RepFermionL=CreateParticle[{1},"F",mf2,"PsiL"];

Representation for right-handed fermion:

RepFermionR=CreateParticle[{2},"F",mf2,"PsiR"];

Representation for Z-boson:

RepZ=CreateParticle[{1},"V",mv2,"Z"];

Collecting out-of-equilibrium particles.
These particles do not necessarily have to be out of equilibrium the particle RepZ is set as light:

ParticleList={RepScalar,RepFermionL,RepFermionR};

Collecting light particles (these are never incoming):

LightParticleList={RepZ};

Generating the matrix elements

OutputFile="output/matrixElements.yukawa";
MatrixElements=ExportMatrixElements[
	OutputFile,
	ParticleList,
	LightParticleList,
	{
		TruncateAtLeadingLog->True,
		Format->{"json","txt"}}]