jaxrts.models.BornMermin_Fortmann
- class jaxrts.models.BornMermin_Fortmann(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 same assumptions as
BornMermin_Fit(including the [Dandrea et al., 1986] fit for the un-damped RPA), but uses a rigorous implementation of the local field correction, proposed by [Fortmann et al., 2010].The number of frequencies for the Champan interpolation defaults to 20 if
KKTisFalse, 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_Fortmann() >>> state["free-free scattering"].no_of_freq = 10
The boundaries for the interpolation can be given as arguments
E_cutoff_minandE_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 toTrue. IfTrue, 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 toFalse, usingjaxrts.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 toFiniteWavelength_BM_V).See also
jaxrts.free_free.S0_ee_BMA_FortmannFunction used to calculate the dynamic structure factor
jaxrts.free_free.susceptibility_BMA_FortmannFunction used to calculate the susceptibility
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_pointsis notNone, 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_pointsis notNone.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
A list of keywords where this model is adequate for
Built-in mutable sequence.
The number of points for re-sampeling the model.