otter.PlasmaWorkflowConfig

class otter.PlasmaWorkflowConfig(temperature_ev: float, rho_g_cc: float, formula: str | None = None, elements: list[int | str] | tuple[int | str, ...] | None = None, counts: list[float] | tuple[float, ...] | None = None, number_fraction: list[float] | tuple[float, ...] | None = None, ion_temperature_ev: float | None = None, electronic_model: str = 'qm', xc_model: str = 'dirac', gga_core_mode: str = 'finite', gga_core_zr: float = 0.05, aa_overrides: dict[str, ~typing.Any] = <factory>, species_overrides: dict[str, dict[str, ~typing.Any]] = <factory>, run_mode: str = 'full+ext', mu_e_tol: float = 0.0001, root_tol: float = 0.0001, root_maxfev: int = 20, root_brent_maxiter: int = 16, root_threshold_b3_surrogate_mode: str = 'a_only_when_full_unresolved', root_threshold_refine_retry: bool = True, allow_unconverged_root: bool = False, allow_unconverged_aa: bool = False, volume_weights_init: list[float] | tuple[float, ...] | None = None, species_parallel_jobs: int | None = None, species_parallel_backend: str = 'thread', show_progress: bool = True, show_mu_progress: bool = False, debug: bool = False, verbose: bool = False, save_data: bool = False, save_output_dir: str | ~pathlib.Path = 'outputs', save_suffix: str = '', save_state_npz: bool = False, save_state_path: str | ~pathlib.Path | None = None, state_r_max_bohr: float = 20.0, state_k_max_bohr_inv: float = 20.0, save_common_linear_grid: bool = True, save_linear_n_points: int = 4096, qoz_linear_n_points: int = 4096, qoz_pad_factor: float = 2.0, qoz_renormalize_nscr_to_zbar: bool = True, qoz_screening_charge_rel_tol: float = 0.05, qoz_zbar_mode: str = 'pseudoatom_partition', qoz_response_chi0_model: str = 'lindhard_fd', qoz_response_lfc_model: str = 'chabrier1990', qoz_high_k_taper_start_frac: float | None = 0.9, hnc_mix: float = 0.03, hnc_tol: float = 0.0001, hnc_closure_transform_tol: float | None = None, hnc_max_iter: int = 160, hnc_mixing_scheme: str = 'auto', hnc_tail_points: int = 32, hnc_nodal_clip: float = 0.0, hnc_s_projection_mode: str = 'none', hnc_fallback_mixing_scheme: str | None = 'newton_krylov', hnc_newton_max_iter: int = 60, hnc_adaptive_continuation: bool = True, hnc_min_scale_step: float = 0.002, hnc_max_stage_attempts: int = 32, hnc_require_converged: bool = True, hnc_enforce_nodal_tail_zero: bool = False, hnc_potential_scales: tuple[float, ...] = (0.05, 0.15, 0.35, 0.6, 0.8, 1.0), hnc_bridge_model: str = 'none', vmhnc_points_per_diameter: int = 256, vmhnc_eta_bounds: tuple[float, float] = (0.05, 0.49), vmhnc_eta_tol: float = 0.0001)[source]

Bases: CitationMixin

Unified high-level plasma workflow configuration.

Parameters:
  • formula (str | None) – Optional chemical formula such as Al, CH2, or C10H8O4.

  • elements – Preferred explicit composition input. For example, elements=[“C”, “H”], counts=[1, 2] represents CH2. When elements contains exactly one species, counts may be omitted.

  • counts – Preferred explicit composition input. For example, elements=[“C”, “H”], counts=[1, 2] represents CH2. When elements contains exactly one species, counts may be omitted.

  • number_fraction (list[float] | tuple[float, ...] | None) – Optional alternative explicit composition input for non-integer mixtures. Only one of counts or number_fraction may be provided.

  • temperature_ev (float) – Electron temperature in eV.

  • rho_g_cc (float) – Mass density in g/cc.

  • ion_temperature_ev (float | None) – Optional ion temperature in eV. When provided, the workflow continues from AA/full+ext to the QOZ/HNC ion-structure stage.

  • aa_overrides (dict[str, Any]) – Optional single-AA controls. These are forwarded unchanged; the workflow does not modify AA defaults unless the user explicitly requests it here.

  • species_overrides (dict[str, dict[str, Any]]) – Optional per-species AA overrides for mixture runs.

  • species_parallel_jobs (int | None) – Number of species AA solves evaluated concurrently. None selects one worker per species; use 1 for ordered diagnostic output.

  • allow_unconverged_root (bool) – Permit explicit diagnostic best-effort mixture output. By default an unconverged common-mu state is rejected before QOZ/HNC.

  • allow_unconverged_aa (bool) – Permit explicit diagnostic ion-structure continuation from a failed final full or external AA stage. The production default rejects it.

  • qoz_screening_charge_rel_tol (float) – Maximum relative mismatch between the raw finite-box screening charge and the pseudoatom partition before QOZ/HNC. Scalar QOZ renormalization cannot repair a badly shaped screening cloud.

  • hnc_bridge_model (str) – Optional one-component ionic closure. "none" is ordinary HNC; "rosenfeld_ashcroft" selects variational modified HNC with a hard-sphere Percus–Yevick bridge.

  • show_progress (bool) – Print the compact workflow report and SCF d_n/d_v trace.

  • debug (bool) – Add charge, continuum, tail, mixer, and timing diagnostics to the compact report.

  • save_state_npz (bool) – Save the converged electronic, pseudoatom, response, potential, and QOZ/HNC arrays as a portable NPZ state.

Methods

__init__(temperature_ev, rho_g_cc[, ...])

citation([style, comment])

Return references for this configured model.

solve()

Run this configuration through solve_plasma_workflow().

Attributes

  • allow_unconverged_aa

  • allow_unconverged_root

  • citation_keys

  • counts

  • debug

  • electronic_model

  • elements

  • formula

  • gga_core_mode

  • gga_core_zr

  • hnc_adaptive_continuation

  • hnc_bridge_model

  • hnc_closure_transform_tol

  • hnc_enforce_nodal_tail_zero

  • hnc_fallback_mixing_scheme

  • hnc_max_iter

  • hnc_max_stage_attempts

  • hnc_min_scale_step

  • hnc_mix

  • hnc_mixing_scheme

  • hnc_newton_max_iter

  • hnc_nodal_clip

  • hnc_potential_scales

  • hnc_require_converged

  • hnc_s_projection_mode

  • hnc_tail_points

  • hnc_tol

  • ion_temperature_ev

  • mu_e_tol

  • number_fraction

  • qoz_high_k_taper_start_frac

  • qoz_linear_n_points

  • qoz_pad_factor

  • qoz_renormalize_nscr_to_zbar

  • qoz_response_chi0_model

  • qoz_response_lfc_model

  • qoz_screening_charge_rel_tol

  • qoz_zbar_mode

  • root_brent_maxiter

  • root_maxfev

  • root_threshold_b3_surrogate_mode

  • root_threshold_refine_retry

  • root_tol

  • run_mode

  • save_common_linear_grid

  • save_data

  • save_linear_n_points

  • save_output_dir

  • save_state_npz

  • save_state_path

  • save_suffix

  • show_mu_progress

  • show_progress

  • species_parallel_backend

  • species_parallel_jobs

  • state_k_max_bohr_inv

  • state_r_max_bohr

  • verbose

  • vmhnc_eta_bounds

  • vmhnc_eta_tol

  • vmhnc_points_per_diameter

  • volume_weights_init

  • xc_model

  • temperature_ev

  • rho_g_cc

  • aa_overrides

  • species_overrides

Examples using PlasmaWorkflowConfig

Carbon structure factors: Otter PA-HNC and DFT-MD

Carbon structure factors: Otter PA-HNC and DFT-MD

Ion-structure literature library

Ion-structure literature library

Two-temperature aluminium: Johnson et al. (2025)

Two-temperature aluminium: Johnson et al. (2025)

Equilibrium aluminium structure factors: Schörner et al. (2022)

Equilibrium aluminium structure factors: Schörner et al. (2022)

Starrett et al. CH1.36 mixture pair distributions

Starrett et al. CH1.36 mixture pair distributions

Starrett–Saumon electronic levels and ionization

Starrett--Saumon electronic levels and ionization

Single-species Starrett–Saumon ion-structure benchmarks

Single-species Starrett--Saumon ion-structure benchmarks

Al: complete electronic-to-ionic workflow

Al: complete electronic-to-ionic workflow

Experimental IS/SC feedback for aluminium

Experimental IS/SC feedback for aluminium

Aluminium KS-DFT and Thomas–Fermi comparison

Aluminium KS-DFT and Thomas--Fermi comparison

Al: elastic Rayleigh weight versus density

Al: elastic Rayleigh weight versus density

Carbon: local-field-correction sensitivity

Carbon: local-field-correction sensitivity

CH1.36: multicomponent electronic-to-ionic workflow

CH1.36: multicomponent electronic-to-ionic workflow