Dimensionless and Dimensionful Parameters

We here focus on the low-energy theory which has scattering that can be entirely described by the scattering length. This offers a simplification; to tune a whole effective range expansion we would need to provide one parameter per shape parameter; in the leading-order case it’s common to just quote the binding energy instead.

We group the parameters into those valid in the thermodynamic (infinite volume) limit. To get a set of finite-volume we can start with a set of thermodynamic parameters and, given one finite-volume parameter, can construct a whole specification for the finite-volume parameters.

Dimensionless Parameters

There are three independent dimensionless parameters that stay finite in the infinite-volume limit.

tdg.parameters.Thermodynamic

class tdg.parameters.Thermodynamic(*, aspect_ratio=None, deBroglie_by_scattering_length=None, beta_binding_energy=None, beta_mu=None, log_z=None, z=None, beta_h=None, log_zh=None, zh=None, tolerance=1e-10)[source]

You may specify any combination of parameters as long as they give enough information. If you do not provide enough information, raises a ValueError.

In the parameters below, you must provide at least one of the first three, at least one of the second three, and at least one of the third three.

Because you can provide redundant information, consistency is enforced; two quantities that must match are checked for equality up to a specified tolerance. If any of these checks fail, raises a ValueError. No guarantee about which quantity ‘takes precedence’.

Parameters
  • aspect_ratio (torch.tensor) – \(\tilde{\beta}/\tilde{a}^2 = 1/4\pi^2 M a^2 T\)

  • deBroglie_by_scattering_length (torch.tensor) – \(\lambda_{dB}/a = \sqrt{2\pi / Ma^2 T}\)

  • beta_binding_energy (torch.tensor) – \(\beta \epsilon_B = - 1/Ma^2 T\); since \(a>0\), must be negative.

  • beta_mu (torch.tensor) – \(\beta \mu = \tilde{\beta} \tilde{\mu}\)

  • log_z (torch.tensor) – \(\log z = \beta \mu\)

  • z (torch.tensor) – \(z = \exp \beta \mu\).

  • beta_h (torch.tensor) – \(\beta \vec{h} = \tilde{\beta} \vec{\tilde{h}}\)

  • log_zh (torch.tensor) – \(\vec{\log z_h} = \beta \vec{h}\)

  • zh (torch.tensor) – \(z_h = \exp \beta \vec{h}\) elementwise

  • tolerance (float) – Strictness of consistency when redundant information is provided.

FiniteVolume(*, beta_tilde=None, a_tilde=None, mu_tilde=None, h_tilde=None, tolerance=1e-10)[source]

The point is that any of the “bare” tilded parameters require L and therefore in combination with the L-independent thermodynamic parameters totally fixes the finite-volume physics.

You can specify any single finite-volume parameter, or any combination, which will be checked for consistency up to the provided tolerance. If any consistency checks fail, raise a ValueError.

Parameters
  • beta_tilde (torch.tensor) – The dimensionless temperature \(\tilde{\beta} = \beta / ML^2\).

  • a_tilde (torch.tensor) – The dimensionless scattering ratio \(\tilde{a} = 2\pi a / L\).

  • mu_tilde (torch.tensor) – The dimensionless chemical potential \(\tilde{\mu} = ML^2 \mu\).

  • h_tilde (torch.tensor) – The dimensionless external field \(\tilde{h} = ML^2 h\).

  • tolerance (float) – Strictness of consistency when redundant information is provided.

Return type

tdg.parameters.FiniteVolume

To get a set of finite-volume parameters we need to provide one dimensionless quantity that knows about L.

tdg.parameters.FiniteVolume

class tdg.parameters.FiniteVolume(beta_tilde, a_tilde, mu_tilde, h_tilde)[source]

Bases: object

Parameters
  • beta_tilde (torch.tensor) – The dimensionless temperature \(\tilde{\beta} = \beta / ML^2\).

  • a_tilde (torch.tensor) – The dimensionless scattering ratio \(\tilde{a} = 2\pi a / L\).

  • mu_tilde (torch.tensor) – The dimensionless chemical potential \(\tilde{\mu} = ML^2 \mu\).

  • h_tilde (torch.tensor) – The dimensionless external field \(\tilde{h} = ML^2 h\).

Thermodynamic

A tdg.parameters.Thermodynamic object which has thermodynamic parameters corresponding to these finite-volume parameters.

Action(nt, lattice)[source]

Of course, this is the whole point! Given the finite-volume parameters and a specification of the discretization we have enough to construct a Action.

Parameters
  • nt (int) – Number of time slices.

  • lattice (tdg.Lattice) – The spatial discretization.

Return type

Action constructed from \(\tilde{\beta}\), \(\tilde{a}\), \(\tilde{\mu}\), and \(\tilde{h}\) and the provided discretization.

scale_L(scale)[source]

We can scale L without needing to know what it is. If we want to send \(L \rightarrow \texttt{scale} L\) then we can replace

\[\begin{split}\begin{align} \tilde{\beta} &\rightarrow \tilde{\beta} / \texttt{scale}^2 \\ \tilde{a} &\rightarrow \tilde{a} / \texttt{scale} \\ \tilde{\mu} &\rightarrow \tilde{\mu} * \texttt{scale}^2 \\ \tilde{h} &\rightarrow \tilde{h} * \texttt{scale}^2 \end{align}\end{split}\]
Parameters

scale (torch.tensor) – How to scale L

Return type

tdg.parameters.FiniteVolume with the rescaled parameters.

scale_beta(scale)[source]
Parameters

scale (torch.tensor) – How to scale \(\beta\)

Return type

tdg.parameters.FiniteVolume with the rescaled parameters.

scale_mu(scale)[source]
Parameters

scale (torch.tensor) – How to scale \(\mu\)

Return type

tdg.parameters.FiniteVolume with the rescaled parameters.

scale_h(scale)[source]
Parameters

scale (torch.tensor) – How to scale \(h\)

Return type

tdg.parameters.FiniteVolume with the rescaled parameters.

Dimensionful Parameters

Finally, laboratory experiments have “real units”, so to speak. A common choice of units is electronvolts, micrometrs, and nanokelvin, {eV, µm, nK}.

We provide a consistent set of units, converting everything to eV using \(1=c=\hbar=k_B\).

tdg.units.eV = tensor(1.)

1 electronvolt [per \(c^2=1\)]

tdg.units.μm = tensor(5.0677)

1 = ℏc = 0.1973269804593025 eV µm

tdg.units.micrometers = tensor(5.0677)

Alias for tdg.units.µm

tdg.units.nK = tensor(8.6173e-14)

1 = \(k_B\) = 8.617333262145177e-14 eV / nK

tdg.units.Mass = {'6Li': tensor(5.6031e+09)}

A dictionary of masses of select neutral atoms.

With these units in hand we can construct

class tdg.parameters.Dimensionful(M, T, mu, a, h=tensor([0., 0., 0.]))[source]

All of the parameters must be one consistent system of units. For example, we could do

from tdg.units import eV, µm, nK, Mass
Dimensionful(Mass["6Li"], 250*nK, -500*nK, 0.25*µm ).FiniteVolume(2*µm)
Parameters
  • M (torch.tensor) – Dimensionful mass.

  • T (torch.tensor) – Dimensionful temperature.

  • mu (torch.tensor) – Dimensionful chemical potential.

  • a (torch.tensor) – Dimensionful scattering length.

  • h (torch.tensor) – Dimensionful external field.

Thermodynamic()[source]

A tdg.parameters.Thermodynamic built from the dimensionful parameters.

FiniteVolume(L)[source]

A tdg.parameters.FiniteVolume built from the dimensionful parameters and the dimensionful L (in the same system of units).