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#
A static (compile-time) per-axis integer triple (e.g. cells per axis). |
|
A static (compile-time) per-axis float triple (e.g. box size per axis). |
|
Settings for the snapshot output of the simulation. |
|
The boundary-condition type at the left and right end of a single axis. |
|
Per-axis boundary settings for the simulation. |
|
Self-gravity and external-potential configuration. |
|
Density/pressure positivity-enforcement configuration. |
|
Configuration object for the simulation. The simulation configuration are parameters defining the simulation where changes necessitate recompilation. |
Functions#
Return whether every visible NVIDIA GPU has compute capability >= 8.0. |
|
Fill in derived configuration fields and validate the configuration. |
|
Return the human-readable name of a Riemann-solver constant. |
|
Return the human-readable name of a slope-limiter constant. |
|
Return the short label ( |
|
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.NamedTupleA 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.NamedTupleA 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.NamedTupleSettings 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.NamedTupleThe 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.NamedTuplePer-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.NamedTupleSelf-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.NamedTupleDensity/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.NamedTupleConfiguration 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-smion 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_cellsper 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.