Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove thermal mass #352

Merged
merged 7 commits into from
Nov 7, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions Models/InertDoubletModel/inertDoubletModel.py
Original file line number Diff line number Diff line change
@@ -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,
)
@@ -144,7 +140,6 @@ def topMsqThermal(T: float) -> float:
index=1,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
@@ -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,
)
@@ -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,
)
4 changes: 0 additions & 4 deletions Models/ManySinglets/manySinglets.py
Original file line number Diff line number Diff line change
@@ -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,
)
8 changes: 0 additions & 8 deletions Models/SingletStandardModel_Z2/singletStandardModelZ2.py
Original file line number Diff line number Diff line change
@@ -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,
)
@@ -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,
)
9 changes: 0 additions & 9 deletions Models/StandardModel/standardModel.py
Original file line number Diff line number Diff line change
@@ -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,
)
@@ -138,7 +134,6 @@ def topMsqThermal(T: float) -> float:
index=1,
msqVacuum=topMsqVacuum,
msqDerivative=topMsqDerivative,
msqThermal=topMsqThermal,
statistics="Fermion",
totalDOFs=6,
)
@@ -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,
)
6 changes: 0 additions & 6 deletions Models/Yukawa/yukawa.py
Original file line number Diff line number Diff line change
@@ -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,
)
@@ -82,7 +77,6 @@ def psiMsqThermal(T: float) -> float:
index=2,
msqVacuum=psiMsqVacuum,
msqDerivative=psiMsqDerivative,
msqThermal=psiMsqThermal,
statistics="Fermion",
totalDOFs=2,
)
5 changes: 0 additions & 5 deletions docs/source/faqs.rst
Original file line number Diff line number Diff line change
@@ -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.
6 changes: 3 additions & 3 deletions docs/source/firstExample.rst
Original file line number Diff line number Diff line change
@@ -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.

@@ -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
15 changes: 0 additions & 15 deletions src/WallGo/particle.py
Original file line number Diff line number Diff line change
@@ -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:
@@ -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
@@ -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

@@ -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:
@@ -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"
1 change: 0 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
@@ -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,
)