|
|
|
---
|
|
|
|
title: Automatic index contraction
|
|
|
|
permalink: /Automatic_index_contraction/
|
|
|
|
---
|
|
|
|
|
|
|
|
[Category:Model](/Category:Model "wikilink")
|
|
|
|
|
|
|
|
General
|
|
|
|
-------
|
|
|
|
|
|
|
|
It is usually not necessary to define any index structure for terms appearing in the (Super)potential. This task is automatically performed by SARAH: it adds generation indices if necessary to all fields and parameters and contracts all charges using
|
|
|
|
|
|
|
|
- the Kronecker delta (`Delta`)
|
|
|
|
- the antisymmetric tensor (`epsTensor`)
|
|
|
|
- Clebsch-Gordan Coefficients (`CGC`).
|
|
|
|
|
|
|
|
### Simple contractions
|
|
|
|
|
|
|
|
The rules to contract indices corresponding to the fundamental (upper) and anti-fundamental (lower) representation of a gauge group are
|
|
|
|
|
|
|
|
- An upper and a lower index is contracted via a Kronecker Delta
|
|
|
|
- N upper or lower indices of a *S**U*(*N*) are contracted with the epsilon Tensor
|
|
|
|
|
|
|
|
#### Example
|
|
|
|
|
|
|
|
1. $3 \\times \\bar{3}$ of *S**U*(3):
|
|
|
|
Delta[col1,col2] T[{col1}].Tc[{col2}]
|
|
|
|
|
|
|
|
2. 2 × 2 of *S**U*(2):
|
|
|
|
epsTensor[lef1,lef2] Hu[{lef1}].Hd[{lef2}]
|
|
|
|
|
|
|
|
3. 3 × 3 × 3 of *S**U*(3):
|
|
|
|
epsTensor[col1,col2,col3] T[{col1}].T[{col2}].T[{col3}]
|
|
|
|
|
|
|
|
4. 2 × 3 × 2 of *S**U*(2):
|
|
|
|
Delta[lef1,lef2] epsTensor[lef2b,lef3] Hu[{lef1}].T[{lef2,lef2b}].Hu[{lef3}]
|
|
|
|
|
|
|
|
5. $3 \\times \\bar{3}$ of *S**U*(3) and 2 × 2 of *S**U*(2):
|
|
|
|
Delta[col1,col2] epsTensor[lef1,lef3] Q[{lef1,col1}].u[{col2}].Hu[{lef3}]
|
|
|
|
|
|
|
|
### Clebsch-Gordan Coefficients
|
|
|
|
|
|
|
|
The CGCs which are used for interactions involving higher dimensional irreps are parametrized as follows:
|
|
|
|
|
|
|
|
CG[group,dnykin][indices]
|
|
|
|
|
|
|
|
First, the gauge group is given, afterwards the Dynkin labels of all involved irreps are stated and finally the indices are listed. For instance, the interaction between a scalar color sextet (<span>Oc</span>) and two fermionic triplets which appear in several generations (`t`) is defined in the input by the user just as
|
|
|
|
|
|
|
|
#### Example
|
|
|
|
|
|
|
|
Ys Oc.t.t
|
|
|
|
|
|
|
|
and internally expanded by SARAH to
|
|
|
|
|
|
|
|
Ys[gen2,gen3]*CG[SU[3],{{0,2},{1,0},{1,0}}][col1,col2,co3]*Oc[{col1}]*t[{gen2,col2}]*t[{gen3,col3}]
|
|
|
|
|
|
|
|
The numerical values for all CGCs are calculated by Susyno.
|
|
|
|
|
|
|
|
Self-defined contractions
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
### Contractions for Lagrangian
|
|
|
|
|
|
|
|
In principle, it is also possible that the user can define a contraction of indices which is not the standard one. In particular for the *S**U*(2) it might be necessary to adjust the index contraction: there is some ambiguity because of the relation among the fundamental and anti-fundamental representation in this group. One can see that SARAH used contractions via
|
|
|
|
|
|
|
|
- `ShowSuperpotentialContractions` for SUSY models
|
|
|
|
- `` SA`LagrangianContractions `` for non-SUSY models
|
|
|
|
|
|
|
|
#### Example
|
|
|
|
|
|
|
|
1. 2 × 3 × 2 of *S**U*(2): depending of the definition of the triplet `t` the demanded contraction might be
|
|
|
|
epsTensor[lef1,lef2] epsTensor[lef2b,lef3] l[{lef1}].t[{lef2,lef2b}].l[{lef3}]
|
|
|
|
|
|
|
|
The default contraction of SARAH would have been instead
|
|
|
|
|
|
|
|
epsTensor[lef1,lef2] Delta[lef2b,lef3] l[{lef1}].t[{lef2,lef2b}].l[{lef3}]
|
|
|
|
|
|
|
|
**Note, the indices for the fields are shown only for clarity here. When writing the contractions in the SARAH model file, it is not necessary to write the indices of the fields. These are generated automatically by SARAH. Thus, the correct syntax which shall be used in the model file is as follows**
|
|
|
|
|
|
|
|
epsTensor[lef1,lef2] epsTensor[lef2b,lef3] l.t.l
|
|
|
|
|
|
|
|
2. |*H*<sub>*u*</sub><sup>†</sup>*σ*<sub>*a*</sub>*H*<sub>*u*</sub> + *H*<sub>*d*</sub><sup>†</sup>*σ*<sub>*a*</sub>*H*<sub>*d*</sub>|<sup>2</sup> can be written by using the completeness relation of the Pauli matrices as
|
|
|
|
(2 Delta[lef1,lef4] Delta[lef2,lef3]- Delta[lef1,lef2] Delta[lef3,lef4])*
|
|
|
|
(conj[SHd].SHd.SHd.conj[SHd] + conj[SHu].SHu.SHu.conj[SHu] - 2 conj[SHd].SHd.SHu.conj[SHu]) )
|
|
|
|
|
|
|
|
### Contractions for RGEs
|
|
|
|
|
|
|
|
SARAH calculates the RGEs for the unbroken gauge groups. Therefore, it assumes that non-fundamental irreps not written as tensor product as this is the case for broken groups, but of vectors of appropriate length. Because of that, it has to re-calculate the contractions internally, and makes use of routines of Susyno of that. However, Susyno returns the contractions with an arbitrary phase which can even change from Mathematica version to Mathematica version, i.e. this can sometimes by rather randomly. If you encounter such a problem, it's best to make use of the option to fix the contractions in the model. That's done via
|
|
|
|
|
|
|
|
ContractionRGE[COUPLING]=CONTRACTION
|
|
|
|
|
|
|
|
where `COUPLING` is the name of the coupling for which you want to 'hard-code' the contraction and `CONTRACTION` is the given contraction.
|
|
|
|
|
|
|
|
#### Example
|
|
|
|
|
|
|
|
1. **Four triplet interaction**: for
|
|
|
|
1/2 LT trip.trip.trip.trip
|
|
|
|
|
|
|
|
one can define as contraction used in the RGEs
|
|
|
|
|
|
|
|
|
|
|
|
ContractionRGE[LT]=Delta[lef1,lef2] Delta[lef3, lef4];
|
|
|
|
|
|
|
|
2. **Triplet-doublet interaction**: Writing the interaction between to scalar doublets `H` and a scalar triplet `Ts` as
|
|
|
|
muT conj[H].Ts.H
|
|
|
|
|
|
|
|
One can define an explicit contraction via
|
|
|
|
|
|
|
|
ContractionRGE[muT]=InvMat[99][lef1,lef2,lef3];
|
|
|
|
Off[Part::pspec];
|
|
|
|
InvMat[99][a___Integer]:={{{1/Sqrt[2], 0}, {0, 1/Sqrt[2]}, {0, -(I/Sqrt[2])}}, {{0, -(1/Sqrt[2])}, {1/Sqrt[2], 0}, {I/Sqrt[2], 0}}}[[/a|a]];
|
|
|
|
On[Part::pspec];
|
|
|
|
|
|
|
|
See also
|
|
|
|
-------- |
|
|
|
\ No newline at end of file |