astronomix.option_classes.simulation_config

Contents

astronomix.option_classes.simulation_config#

Static simulation configuration.

Defines SimulationConfig — the bundle of options that, unlike the simulation parameters, necessitate recompilation when changed — together with the integer-coded enumerations they reference (backends, solver/boundary/Riemann modes, positivity modes, …), the small geometry vector helpers, the sub-configs for gravity and positivity, and the finalize_config pass that fills in derived fields and validates the configuration.

Module Contents#

Classes#

StaticIntVector

A static (compile-time) per-axis integer triple (e.g. cells per axis).

StaticFloatVector

A static (compile-time) per-axis float triple (e.g. box size per axis).

SnapshotSettings

Settings for the snapshot output of the simulation.

BoundarySettings1D

The boundary-condition type at the left and right end of a single axis.

BoundarySettings

Per-axis boundary settings for the simulation.

GravityConfig

Self-gravity and external-potential configuration.

PositivityConfig

Density/pressure positivity-enforcement configuration.

SimulationConfig

Configuration object for the simulation. The simulation configuration are parameters defining the simulation where changes necessitate recompilation.

Functions#

gpu_compute_capability_at_least_80

Return whether every visible NVIDIA GPU has compute capability >= 8.0.

finalize_config

Fill in derived configuration fields and validate the configuration.

riemann_solver_to_string

Return the human-readable name of a Riemann-solver constant.

limiter_to_string

Return the human-readable name of a slope-limiter constant.

solver_mode_to_string

Return the short label ("FV" / "FD") of a solver-mode constant.

config_to_string

Return a compact one-line description of the solver configuration.

Data#

API#

astronomix.option_classes.simulation_config.NATIVE_JAX = 0#
astronomix.option_classes.simulation_config.PALLAS = 1#
astronomix.option_classes.simulation_config.OPTIMAL_BACKEND = 2#
astronomix.option_classes.simulation_config.POSITIVITY_NONE = 0#
astronomix.option_classes.simulation_config.POSITIVITY_HARD_FLOOR = 1#
astronomix.option_classes.simulation_config.POSITIVITY_REDISTRIBUTE = 2#
astronomix.option_classes.simulation_config.POSITIVITY_CONSERVATIVE = 3#
astronomix.option_classes.simulation_config.FINITE_VOLUME = 0#
astronomix.option_classes.simulation_config.FINITE_DIFFERENCE = 1#
astronomix.option_classes.simulation_config.FORWARDS = 0#
astronomix.option_classes.simulation_config.BACKWARDS = 1#
astronomix.option_classes.simulation_config.MINMOD = 0#
astronomix.option_classes.simulation_config.OSHER = 1#
astronomix.option_classes.simulation_config.DOUBLE_MINMOD = 2#
astronomix.option_classes.simulation_config.SUPERBEE = 3#
astronomix.option_classes.simulation_config.VAN_ALBADA = 4#
astronomix.option_classes.simulation_config.VAN_ALBADA_PP = 5#
astronomix.option_classes.simulation_config.UNSPLIT = 0#
astronomix.option_classes.simulation_config.SPLIT = 1#
astronomix.option_classes.simulation_config.HLL = 0#
astronomix.option_classes.simulation_config.HLLC = 1#
astronomix.option_classes.simulation_config.HLLC_LM = 2#
astronomix.option_classes.simulation_config.LAX_FRIEDRICHS = 3#
astronomix.option_classes.simulation_config.HYBRID_HLLC = 4#
astronomix.option_classes.simulation_config.AM_HLLC = 5#
astronomix.option_classes.simulation_config.RK2_SSP = 0#
astronomix.option_classes.simulation_config.MUSCL = 1#
astronomix.option_classes.simulation_config.RK4_SSP = 2#
astronomix.option_classes.simulation_config.RK4_LSRK = 3#
astronomix.option_classes.simulation_config.OPEN_BOUNDARY = 0#
astronomix.option_classes.simulation_config.REFLECTIVE_BOUNDARY = 1#
astronomix.option_classes.simulation_config.PERIODIC_BOUNDARY = 2#
astronomix.option_classes.simulation_config.FIXED_BOUNDARY = 3#
astronomix.option_classes.simulation_config.MHD_JET_BOUNDARY = 4#
astronomix.option_classes.simulation_config.FIXED_BOUNDARY_OPEN_MOMENTUM = 5#
astronomix.option_classes.simulation_config.PRIMITIVE_GAS_STATE = 0#
astronomix.option_classes.simulation_config.CONSERVATIVE_GAS_STATE = 1#
astronomix.option_classes.simulation_config.VELOCITY_ONLY = 2#
astronomix.option_classes.simulation_config.MAGNETIC_FIELD_ONLY = 3#
astronomix.option_classes.simulation_config.CARTESIAN = 0#
astronomix.option_classes.simulation_config.CYLINDRICAL = 1#
astronomix.option_classes.simulation_config.SPHERICAL = 2#
astronomix.option_classes.simulation_config.VARAXIS = 0#
astronomix.option_classes.simulation_config.XAXIS = 1#
astronomix.option_classes.simulation_config.YAXIS = 2#
astronomix.option_classes.simulation_config.ZAXIS = 3#
astronomix.option_classes.simulation_config.GHOST_CELLS = 0#
astronomix.option_classes.simulation_config.PERIODIC_ROLL = 1#
astronomix.option_classes.simulation_config.SIMPLE_SOURCE = 0#
astronomix.option_classes.simulation_config.SECOND_ORDER_CONSERVATIVE = 1#
astronomix.option_classes.simulation_config.FOURTH_ORDER_CONSERVATIVE = 2#
astronomix.option_classes.simulation_config.IMPLICIT_MIDPOINT = 0#
astronomix.option_classes.simulation_config.IMPLICIT_EULER = 1#
astronomix.option_classes.simulation_config.SINGLE_PRECISION = 0#
astronomix.option_classes.simulation_config.DOUBLE_PRECISION = 1#
astronomix.option_classes.simulation_config.KINEMATIC_VISCOSITY = 0#
astronomix.option_classes.simulation_config.DYNAMIC_VISCOSITY = 1#
astronomix.option_classes.simulation_config.IDEAL_GAS = 0#
astronomix.option_classes.simulation_config.ISOTHERMAL = 1#
astronomix.option_classes.simulation_config.ON_DEVICE = 0#
astronomix.option_classes.simulation_config.TO_DISK = 1#
class astronomix.option_classes.simulation_config.StaticIntVector[source]#

Bases: typing.NamedTuple

A static (compile-time) per-axis integer triple (e.g. cells per axis).

x: int = None#
y: int = None#
z: int = None#
class astronomix.option_classes.simulation_config.StaticFloatVector[source]#

Bases: typing.NamedTuple

A static (compile-time) per-axis float triple (e.g. box size per axis).

x: float = None#
y: float = None#
z: float = None#
__truediv__(other: astronomix.option_classes.simulation_config.StaticIntVector) astronomix.option_classes.simulation_config.StaticFloatVector[source]#

Divide component-wise by a StaticIntVector (e.g. box / cells).

astronomix.option_classes.simulation_config.STATE_TYPE = None#
astronomix.option_classes.simulation_config.STATE_TYPE_ALTERED = None#
astronomix.option_classes.simulation_config.FIELD_TYPE = None#
class astronomix.option_classes.simulation_config.SnapshotSettings[source]#

Bases: typing.NamedTuple

Settings for the snapshot output of the simulation.

return_states: bool = False#
return_final_state: bool = False#
return_total_mass: bool = False#
return_total_energy: bool = False#
return_internal_energy: bool = False#
return_kinetic_energy: bool = False#
return_gravitational_energy: bool = False#
return_radial_momentum: bool = False#
return_kinetic_energy_spectrum: bool = False#
return_magnetic_energy_spectrum: bool = False#
return_helicity_spectrum: bool = False#
return_magnetic_divergence: bool = False#
return_temperature_pdf: bool = False#
num_temperature_bins: int = 100#
temperature_pdf_min: float = 1e-10#
temperature_pdf_max: float = 10000000000.0#
class astronomix.option_classes.simulation_config.BoundarySettings1D[source]#

Bases: typing.NamedTuple

The boundary-condition type at the left and right end of a single axis.

left_boundary: int = None#
right_boundary: int = None#
class astronomix.option_classes.simulation_config.BoundarySettings[source]#

Bases: typing.NamedTuple

Per-axis boundary settings for the simulation.

x: astronomix.option_classes.simulation_config.BoundarySettings1D = 'BoundarySettings1D(...)'#
y: astronomix.option_classes.simulation_config.BoundarySettings1D = 'BoundarySettings1D(...)'#
z: astronomix.option_classes.simulation_config.BoundarySettings1D = 'BoundarySettings1D(...)'#
class astronomix.option_classes.simulation_config.GravityConfig[source]#

Bases: typing.NamedTuple

Self-gravity and external-potential configuration.

self_gravity: bool = False#
self_gravity_version: int = None#
external_potential: bool = False#
poisson_manual_open_boundaries: bool = False#
gravity: bool = False#
class astronomix.option_classes.simulation_config.PositivityConfig[source]#

Bases: typing.NamedTuple

Density/pressure positivity-enforcement configuration.

default_positivity_protection: bool = False#
per_stage_mode: int = None#
per_step_mode: int = None#
clamp_in_estimates: bool = True#
vacuum_rest: bool = False#
nan_safe: bool = False#
cons_coeff: float = 0.15#
cons_passes: int = 16#
cons_activate: float = 1.0#
deepvoid_blend: bool = False#
deepvoid_blend_factor: float = 8.0#
preserving_flux: bool = False#
class astronomix.option_classes.simulation_config.SimulationConfig[source]#

Bases: typing.NamedTuple

Configuration object for the simulation. The simulation configuration are parameters defining the simulation where changes necessitate recompilation.

backend: int = None#
pallas_block_shape: Tuple[int, int, int] = (4, 4, 8)#
pallas_use_triton: bool = True#
pallas_interpret: bool = False#
pallas_num_warps: int = 4#
pallas_ct: bool = False#
solver_mode: int = None#
numerical_precision: int = None#
runtime_debugging: bool = False#
donate_state: bool = False#
memory_analysis: bool = False#
host_helper_data: bool = False#
print_elapsed_time: bool = False#
progress_bar: bool = False#
dimensionality: int = 1#
state_struct: bool = False#
geometry: int = None#
random_seed: int = 42#
equation_of_state: int = None#
mhd: bool = False#
fv_magnetic_integrator: int = None#
positivity_config: astronomix.option_classes.simulation_config.PositivityConfig = 'PositivityConfig(...)'#
gravity_config: astronomix.option_classes.simulation_config.GravityConfig = 'GravityConfig(...)'#
diffusion: bool = False#
viscosity_type: int = None#
thermal_conduction: bool = False#
box_size: Union[float, astronomix.option_classes.simulation_config.StaticFloatVector] = 1.0#
num_cells: Union[int, astronomix.option_classes.simulation_config.StaticIntVector] = 400#
reconstruction_order: int = 1#
limiter: int = None#
riemann_solver: int = None#
split: int = None#
time_integrator: int = None#
num_ghost_cells: int = None#
grid_spacing: float = None#
boundary_handling: int = None#
boundary_settings: Union[types.NoneType, astronomix.option_classes.simulation_config.BoundarySettings1D, astronomix.option_classes.simulation_config.BoundarySettings] = None#
fixed_timestep: bool = False#
exact_end_time: bool = True#
source_term_aware_timestep: bool = False#
num_timesteps: int = 1000#
use_max_adaptive_timestep: bool = True#
differentiation_mode: int = None#
num_checkpoints: int = 100#
return_snapshots: bool = False#
snapshot_settings: astronomix.option_classes.simulation_config.SnapshotSettings = 'SnapshotSettings(...)'#
snapshot_storage_mode: int = None#
snapshot_storage_path: Union[str, types.NoneType] = None#
activate_snapshot_callback: bool = False#
use_specific_snapshot_timepoints: bool = False#
num_snapshots: int = 10#
first_order_fallback: bool = False#
turbulent_forcing_config: astronomix._modules._turbulent_forcing._turbulent_forcing_options.TurbulentForcingConfig = 'TurbulentForcingConfig(...)'#
wind_config: astronomix._modules._stellar_wind.stellar_wind_options.WindConfig = 'WindConfig(...)'#
cosmic_ray_config: astronomix._modules._cosmic_rays.cosmic_ray_options.CosmicRayConfig = 'CosmicRayConfig(...)'#
cooling_config: astronomix._modules._cooling.cooling_options.CoolingConfig = 'CoolingConfig(...)'#
frame_tracking: bool = False#
neural_net_force_config: astronomix._modules._neural_net_force._neural_net_force_options.NeuralNetForceConfig = 'NeuralNetForceConfig(...)'#
cnn_mhd_corrector_config: astronomix._modules._cnn_mhd_corrector._cnn_mhd_corrector_options.CNNMHDconfig = 'CNNMHDconfig(...)'#
astronomix.option_classes.simulation_config.gpu_compute_capability_at_least_80() bool[source]#

Return whether every visible NVIDIA GPU has compute capability >= 8.0.

Compute capability 8.0 (Ampere) is the floor for the Triton kernels the Pallas backend compiles to, so this is the predicate that decides whether OPTIMAL_BACKEND resolves to PALLAS. Any failure to query the GPUs — no nvidia-smi on the PATH (e.g. a CPU-only host) or the call erroring out — is treated as “not capable” so the safe NATIVE_JAX fallback is chosen.

Returns:

True if all visible NVIDIA GPUs report compute capability >= 8.0, False otherwise (including when no GPU could be queried).

astronomix.option_classes.simulation_config.finalize_config(config: astronomix.option_classes.simulation_config.SimulationConfig, state_shape) astronomix.option_classes.simulation_config.SimulationConfig[source]#

Fill in derived configuration fields and validate the configuration.

Resolves the values that depend on the actual state shape or on cross-field consistency: the positivity-protection defaults, the number of cells per axis, the grid spacing, the geometry- and solver-specific overrides, the master gravity switch, the boundary defaults, and the disk-snapshot requirements.

Args:

config: The user-supplied simulation configuration. state_shape: The shape of the (unpadded) primitive state array, used

to derive num_cells per axis.

Returns:

The finalized simulation configuration.

astronomix.option_classes.simulation_config.riemann_solver_to_string(riemann_solver: int) str[source]#

Return the human-readable name of a Riemann-solver constant.

astronomix.option_classes.simulation_config.limiter_to_string(limiter: int) str[source]#

Return the human-readable name of a slope-limiter constant.

astronomix.option_classes.simulation_config.solver_mode_to_string(solver_mode: int) str[source]#

Return the short label ("FV" / "FD") of a solver-mode constant.

astronomix.option_classes.simulation_config.config_to_string(config: astronomix.option_classes.simulation_config.SimulationConfig) str[source]#

Return a compact one-line description of the solver configuration.