Skip to content

Commit

Permalink
Remove thermal mass (#352)
Browse files Browse the repository at this point in the history
* removed thermal mass from particle.py and inert doublet model

* fixed conftest

* removed thermal mass from singletZ2

* removed thermal mass from ManySinglets, Yukawa and SM

* Removed the question about msqThermal in the FAQ

* Fixed line numbers in first example

---------

Co-authored-by: Benoit Laurent <[email protected]>
Co-authored-by: Oliver Gould <[email protected]>
  • Loading branch information
3 people authored Nov 7, 2024
1 parent 79adb5c commit 0afaf6e
Show file tree
Hide file tree
Showing 9 changed files with 3 additions and 64 deletions.
13 changes: 0 additions & 13 deletions Models/InertDoubletModel/inertDoubletModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,11 @@ def topMsqVacuum(fields: Fields) -> Fields:
def topMsqDerivative(fields: Fields) -> Fields:
return self.modelParameters["yt"] ** 2 * fields.getField(0)

def topMsqThermal(T: float) -> float:
return self.modelParameters["g3"] ** 2 * T**2 / 6.0

topQuarkL = Particle(
name="TopL",
index=0,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
Expand All @@ -144,7 +140,6 @@ def topMsqThermal(T: float) -> float:
index=1,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
Expand All @@ -157,15 +152,11 @@ def WMsqVacuum(fields: Fields) -> Fields: # pylint: disable=invalid-name
def WMsqDerivative(fields: Fields) -> Fields: # pylint: disable=invalid-name
return self.modelParameters["g2"] ** 2 * fields.getField(0) / 2

def WMsqThermal(T: float) -> float: # pylint: disable=invalid-name
return self.modelParameters["g2"] ** 2 * T**2 * 11.0 / 6.0

wBoson = Particle(
name="W",
index=4,
msqVacuum=WMsqVacuum,
msqDerivative=WMsqDerivative,
msqThermal=WMsqThermal,
statistics="Boson",
totalDOFs=9,
)
Expand All @@ -177,16 +168,12 @@ def heavyScalarMsqVacuum(fields: Fields) -> Fields:

def heavyScalarMsqDerivative(fields: Fields) -> Fields:
return self.modelParameters["lambda3"]*fields.getField(0)

def heavyScalarThermal(T: float) -> float:
return self.modelParameters["lambda3"] * T**2 / 24.0

heavyScalar = Particle(
name="A",
index=6,
msqVacuum=heavyScalarMsqVacuum,
msqDerivative=heavyScalarMsqDerivative,
msqThermal=heavyScalarThermal,
statistics="Boson",
totalDOFs=3,
)
Expand Down
4 changes: 0 additions & 4 deletions Models/ManySinglets/manySinglets.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,11 @@ def topMsqDerivative(fields: Fields) -> Fields:
]
)

def topMsqThermal(T: float) -> float:
return self.modelParameters["g3"] ** 2 * T**2 / 6.0

topQuark = Particle(
"top",
index=0,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=12,
)
Expand Down
8 changes: 0 additions & 8 deletions Models/SingletStandardModel_Z2/singletStandardModelZ2.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,15 +130,11 @@ def topMsqDerivative(fields: Fields) -> Fields:
[fields.getField(0), 0 * fields.getField(1)]
)

def topMsqThermal(T: float) -> float:
return self.modelParameters["g3"] ** 2 * T**2 / 6.0

topQuark = Particle(
"top",
index=0,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=12,
)
Expand All @@ -155,15 +151,11 @@ def gluonMsqVacuum(fields: Fields) -> Fields:
def gluonMsqDerivative(fields: Fields) -> Fields:
return np.zeros_like(fields)

def gluonMsqThermal(T: float) -> float:
return self.modelParameters["g3"] ** 2 * T**2 * 2.0

gluon = Particle(
"gluon",
index=1,
msqVacuum=gluonMsqVacuum,
msqDerivative=gluonMsqDerivative,
msqThermal=gluonMsqThermal,
statistics="Boson",
totalDOFs=16,
)
Expand Down
9 changes: 0 additions & 9 deletions Models/StandardModel/standardModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,11 @@ def topMsqVacuum(fields: Fields) -> Fields:
def topMsqDerivative(fields: Fields) -> Fields:
return self.modelParameters["yt"] ** 2 * fields.getField(0)

def topMsqThermal(T: float) -> float:
return self.modelParameters["g3"] ** 2 * T**2 / 6.0

topQuarkL = Particle(
name="TopL",
index=0,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
Expand All @@ -138,7 +134,6 @@ def topMsqThermal(T: float) -> float:
index=1,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
Expand All @@ -151,15 +146,11 @@ def WMsqVacuum(fields: Fields) -> Fields: # pylint: disable=invalid-name
def WMsqDerivative(fields: Fields) -> Fields: # pylint: disable=invalid-name
return self.modelParameters["g2"] ** 2 * fields.getField(0) / 2

def WMsqThermal(T: float) -> float: # pylint: disable=invalid-name
return self.modelParameters["g2"] ** 2 * T**2 * 3.0 / 5.0

wBoson = Particle(
name="W",
index=4,
msqVacuum=WMsqVacuum,
msqDerivative=WMsqDerivative,
msqThermal=WMsqThermal,
statistics="Boson",
totalDOFs=9,
)
Expand Down
6 changes: 0 additions & 6 deletions Models/Yukawa/yukawa.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,11 @@ def psiMsqDerivative(fields: Fields) -> Fields:
)
)

# Asymptotic thermal mass (twice the static thermal mass)
def psiMsqThermal(T: float) -> float:
return 1 / 8 * self.modelParameters["y"] ** 2 * T**2

psiL = Particle(
"psiL",
index=1,
msqVacuum=psiMsqVacuum,
msqDerivative=psiMsqDerivative,
msqThermal=psiMsqThermal,
statistics="Fermion",
totalDOFs=2,
)
Expand All @@ -82,7 +77,6 @@ def psiMsqThermal(T: float) -> float:
index=2,
msqVacuum=psiMsqVacuum,
msqDerivative=psiMsqDerivative,
msqThermal=psiMsqThermal,
statistics="Fermion",
totalDOFs=2,
)
Expand Down
5 changes: 0 additions & 5 deletions docs/source/faqs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,6 @@ Model requirements
Note that this parameter needs to be of the type Fields. If the particle is in equilibrium the type does not matter, and it
msqVacuum can simply be set to zero.

- **What is the msqThermal in the Particle defintion?**

This is the (field-independent) thermal mass of the particle. It is used in the propagator in the matrix elements, and
regularizes the IR-divergence in the limit of vanishing Mandelstam variables t and u.

- **How do I cound the totalDOFs in the Particle definition?**

totalDOFs counts the total number of degrees of freedom for a particle species. This includes summing over e.g. spins and colors.
Expand Down
6 changes: 3 additions & 3 deletions docs/source/firstExample.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ The definition of the Model starts by inheriting from the :py:data:`WallGo.Gener

.. literalinclude:: ../../Models/Yukawa/yukawa.py
:language: py
:lines: 6-90
:lines: 6-84

The scalar potential is used both for determining the free energy of homogeneous phases and for the shape and width of the bubble wall. In principle the potentials determining these two phenomena are different, as the former is coarse grained all the way to infinite length scales, while the latter can only consistenly be coarse grained on length scales shorter than the bubble wall width. :footcite:p:`Langer:1974cpa` Nervertheless, at high temperatures and to leading order in powers of the coupling, these two potentials agree.

Expand All @@ -45,15 +45,15 @@ The implementation in WallGo is as follows: one defines a class, here called :py

.. literalinclude:: ../../Models/Yukawa/yukawa.py
:language: py
:lines: 93-152
:lines: 88-146

The initialisation of an :py:data:`WallGo.EffectivePotential` object takes the model parameters and the number of background scalar fields as arguments and stores them for use in evaluating the potential. It is possible to override other member functions when defining :py:data:`WallGo.EffectivePotentialYukawa`, such as the initialisation function, or to add additional member functions and variables, though we haven't done so in this simple example.

Once these two classes have been defined, we can now run WallGo to compute the bubble wall speed.

.. literalinclude:: ../../Models/Yukawa/yukawa.py
:language: py
:lines: 155-216
:lines: 149-210

**********
References
Expand Down
15 changes: 0 additions & 15 deletions src/WallGo/particle.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ def __init__(
index: int,
msqVacuum: typing.Callable[[Fields | FieldPoint], np.ndarray],
msqDerivative: typing.Callable[[Fields | FieldPoint], np.ndarray],
msqThermal: typing.Callable[[float], float],
statistics: str,
totalDOFs: int,
) -> None:
Expand All @@ -42,10 +41,6 @@ def __init__(
msqDerivative : function
Function :math:`d(m_0^2)/d(\phi)`, should take a Fields or FieldPoints
object and return an array of shape Fields.shape.
msqThermal : function
Function :math:`m^2_T(T)`, should take a float and return one. The
temperature dependent but background field independent part of the
effective mass squared.
statistics : {\"Fermion\", \"Boson\"}
Particle statistics.
totalDOFs : int
Expand All @@ -63,15 +58,13 @@ def __init__(
index,
msqVacuum,
msqDerivative,
msqThermal,
statistics,
totalDOFs,
)
self.name = name
self.index = index
self.msqVacuum = msqVacuum
self.msqDerivative = msqDerivative
self.msqThermal = msqThermal
self.statistics = statistics
self.totalDOFs = totalDOFs

Expand All @@ -81,7 +74,6 @@ def _validateInput( # pylint: disable=unused-argument
index: int,
msqVacuum: typing.Callable[[Fields], np.ndarray],
msqDerivative: typing.Callable[[Fields], np.ndarray],
msqThermal: typing.Callable[[float], float],
statistics: str,
totalDOFs: int,
) -> None:
Expand All @@ -92,13 +84,6 @@ def _validateInput( # pylint: disable=unused-argument
# assert isinstance(msqVacuum(fields), float), \
# f"msqVacuum({fields}) must return float"

# LN: comment mass check out to prevent errors at model creation time if no valid params have yet been passed
"""
temperature = 100
assert isinstance(
msqThermal(temperature), float
), f"msqThermal({temperature}) must return float"
"""
if statistics not in Particle.STATISTICS_OPTIONS:
raise ValueError(f"{statistics=} not in {Particle.STATISTICS_OPTIONS}")
assert isinstance(totalDOFs, int), "totalDOFs must be an integer"
Expand Down
1 change: 0 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ def particle() -> WallGo.Particle:
msqDerivative=lambda fields: np.transpose(
[fields.getField(0), 0 * fields.getField(1)]
),
msqThermal=lambda T: 0.1 * T**2,
statistics="Fermion",
totalDOFs=12,
)
Expand Down

0 comments on commit 0afaf6e

Please sign in to comment.