jaxrts.models.BornMermin

class jaxrts.models.BornMermin(no_of_freq: int | None = None, RPA_rewrite: bool = True, KKT: bool = False, E_cutoff_min: ~pint.registry.Quantity = <Quantity(-1.0, 'electron_volt')>, E_cutoff_max: ~pint.registry.Quantity = <Quantity(-1.0, 'electron_volt')>)[source]

Model for the free-free scattering, based on the Born Mermin Approximation ([Mermin, 1970]). Uses the Chapman interpolation which allows for a faster computation of the free-free scattering compared to BornMermin_Full, by sampling the probing frequency at no_of_freq points and interpolating between them, after.

The number of frequencies defaults to 20 if KKT is False, and to 100 otherwise. To change it, just change the attribute of this model after initializing it. i.e.

>>> state["free-free scattering"] = jaxrts.models.BornMermin()
>>> state["free-free scattering"].no_of_freq = 10

The boundaries for this interpolation can be given as arguments E_cutoff_min and E_cutoff_max. They should be set to sane defaults for most use cases; however, it is recommended to revisit this setting carefully. As a minimal good practice, the defaults should be adjusted to the setup used. This can be done with the /set_guessed_E_cutoffs() method:

>>> state["free-free scattering"].set_guessed_E_cutoffs(state, setup)

Has the optional argument RPA_rewrite, which defaults to True. If True, we solve the RPA integral as formulated by [Chapman, 2015] Otherwise, use the formulas that are found, e.g., in [Schörner et al., 2023]. The former implementation yields more stable results, most of the time.

The model has the optional attribute KKT, defaulting to False, using jaxrts.free_free.KramersKronigTransform(), for the imaginary part of the collision frequency, rather than solving the integral for the imaginary part, as well. We found for edge cases this behavior was beneficial to avoid numerical spikes.

Requires a ‘chemical potential’ model (defaults to IchimaruChemPotential). Requires a ‘BM V_eiS’ model (defaults to FiniteWavelength_BM_V).

See also

jaxrts.free_free.S0_ee_BMA_chapman_interp

Function used to calculate the dynamic structure factor

Methods

__init__([no_of_freq, RPA_rewrite, KKT, ...])

check(plasma_state)

Test if the model is applicable to the PlasmaState.

citation([style, comment])

Return bibliographic information for the Model used.

evaluate(plasma_state, setup, *args, **kwargs)

If sample_points is not None, generate a low-resulution :py:class`~.setup.Setup`.

evaluate_raw(plasma_state, setup, *args, ...)

guess_E_cutoffs(plasma_state[, setup, E_max])

Guess and set cutoff energies for the collision frequency interpolation, based on the plasma_state and setup evaluated.

prepare(plasma_state, key)

Modify the plasma_state in place.

sample_grid(setup)

Define the sample-grid if sample_points is not None.

set_guessed_E_cutoffs(plasma_state[, setup, ...])

Guess and set cutoff energies for the collision frequency interpolation, based on the plasma_state and setup evaluated.

susceptibility(plasma_state, setup, E, ...)

Attributes

allowed_keys

A list of keywords where this model is adequate for

cite_keys

Built-in mutable sequence.

sample_points

The number of points for re-sampeling the model.

Examples using jaxrts.models.BornMermin

Number of interpolation in the Born Mermin Chapman Interpolation

Number of interpolation in the Born Mermin Chapman Interpolation