jaxrts.models.BornMermin_Fit

class jaxrts.models.BornMermin_Fit(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]). Identical to BornMermin, but uses the Dandrea fit ([Dandrea et al., 1986]), rather than numerically calculating the un-damped RPA. However, the damped RPA is still evaluated using the adequate integral.

The number of frequencies for the Chapman interpolation 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_Fit()
>>> state["free-free scattering"].no_of_freq = 10

The boundaries for the 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_interpFit

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_Fit

f-sum rule for the dynamic stucture factor

f-sum rule for the dynamic stucture factor