aeolus1d 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aeolus1d-0.3.0/.gitignore +127 -0
- aeolus1d-0.3.0/AUTHORS.md +14 -0
- aeolus1d-0.3.0/CHANGELOG.md +39 -0
- aeolus1d-0.3.0/CITATION.cff +37 -0
- aeolus1d-0.3.0/CODE_OF_CONDUCT.md +46 -0
- aeolus1d-0.3.0/CONTRIBUTING.md +150 -0
- aeolus1d-0.3.0/LICENSE +21 -0
- aeolus1d-0.3.0/MAINTAINERS.md +21 -0
- aeolus1d-0.3.0/PKG-INFO +664 -0
- aeolus1d-0.3.0/README.md +598 -0
- aeolus1d-0.3.0/SECURITY.md +140 -0
- aeolus1d-0.3.0/SUPPORT.md +39 -0
- aeolus1d-0.3.0/THIRD_PARTY_NOTICES.md +77 -0
- aeolus1d-0.3.0/aeolus1d_gui/__init__.py +24 -0
- aeolus1d-0.3.0/aeolus1d_gui/__main__.py +91 -0
- aeolus1d-0.3.0/aeolus1d_gui/app.py +4043 -0
- aeolus1d-0.3.0/aeolus1d_gui/controller/__init__.py +9 -0
- aeolus1d-0.3.0/aeolus1d_gui/controller/mutations.py +185 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/__init__.py +6 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/canvas.py +2182 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/case_renderer.py +111 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/decorations.py +178 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/history.py +83 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/nodes.py +676 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/organize_layout.py +516 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/ports.py +53 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/rules.py +129 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/silhouettes.py +308 -0
- aeolus1d-0.3.0/aeolus1d_gui/editor/visual_style.py +407 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/__init__.py +10 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/autosave.py +183 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/case_io.py +1587 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/layout_heuristic.py +287 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/layout_io.py +190 -0
- aeolus1d-0.3.0/aeolus1d_gui/io/recent.py +69 -0
- aeolus1d-0.3.0/aeolus1d_gui/model.py +807 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/__init__.py +5 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/cfl_dock.py +218 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/h5_reader.py +524 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/initial_conditions.py +216 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/live_plot_dock.py +192 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/modes_dock.py +336 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/network_view.py +1588 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/optimize_dock.py +737 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/plot_dock.py +1509 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/schematic_style.py +408 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/sensitivity_dock.py +280 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/solver_internals_dock.py +538 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/toml_view_dock.py +327 -0
- aeolus1d-0.3.0/aeolus1d_gui/post/turbo_map_dock.py +262 -0
- aeolus1d-0.3.0/aeolus1d_gui/runners/__init__.py +30 -0
- aeolus1d-0.3.0/aeolus1d_gui/runners/qprocess_optimize_runner.py +230 -0
- aeolus1d-0.3.0/aeolus1d_gui/runners/qprocess_runner.py +187 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/__init__.py +1 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/auci_compare_dialog.py +480 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/brinkmeier_rate_widget.py +211 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/case_settings_dock.py +132 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/component_list.py +375 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/doc_viewer.py +873 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/engine_param_wizard.py +240 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/form_factory.py +2315 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/inspector.py +198 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/named_rate_widget.py +169 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/onboarding.py +452 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/palette.py +177 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/pid_tuning_playground.py +269 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/play_controls.py +286 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/runner_dock.py +1273 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/schedule_widget.py +678 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/settings.py +540 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/theme.py +805 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/time_format.py +193 -0
- aeolus1d-0.3.0/aeolus1d_gui/shell/validators.py +35 -0
- aeolus1d-0.3.0/aeolus1d_gui/vehicle_panel.py +642 -0
- aeolus1d-0.3.0/docs/adr/0001-operator-split-stiff-chemistry.md +61 -0
- aeolus1d-0.3.0/docs/adr/0002-direct-block-thomas-over-jfnk.md +55 -0
- aeolus1d-0.3.0/docs/adr/0003-canonical-extras-layout-invariant.md +63 -0
- aeolus1d-0.3.0/docs/adr/0004-implicit-upwind-qs-species-transport.md +50 -0
- aeolus1d-0.3.0/docs/adr/0005-semi-implicit-catalyst-energy-coupling.md +47 -0
- aeolus1d-0.3.0/docs/adr/0006-hllc-core-microopt-rejected.md +49 -0
- aeolus1d-0.3.0/docs/adr/0007-versioned-toml-case-format.md +94 -0
- aeolus1d-0.3.0/docs/adr/0008-cylinder-orifice-valve-coupling.md +102 -0
- aeolus1d-0.3.0/docs/adr/0009-inflow-ghost-species-conservation.md +82 -0
- aeolus1d-0.3.0/docs/adr/0010-verification-and-validation-strategy.md +136 -0
- aeolus1d-0.3.0/docs/adr/0011-non-positive-density-is-a-hard-error.md +131 -0
- aeolus1d-0.3.0/docs/adr/0012-plenum-port-reservoir-coupling.md +167 -0
- aeolus1d-0.3.0/docs/adr/0013-cross-component-boundaries-in-conserved-form.md +168 -0
- aeolus1d-0.3.0/docs/adr/0014-degenerate-composition-gamma-policy.md +104 -0
- aeolus1d-0.3.0/docs/adr/README.md +49 -0
- aeolus1d-0.3.0/docs/aftertreatment-thermal-reference.md +100 -0
- aeolus1d-0.3.0/docs/api/closures.md +61 -0
- aeolus1d-0.3.0/docs/api/driving.md +54 -0
- aeolus1d-0.3.0/docs/api/index.md +96 -0
- aeolus1d-0.3.0/docs/api/runtime.md +80 -0
- aeolus1d-0.3.0/docs/architecture-refactor-plan.md +497 -0
- aeolus1d-0.3.0/docs/architecture.md +412 -0
- aeolus1d-0.3.0/docs/benchmarks-baseline.md +128 -0
- aeolus1d-0.3.0/docs/changelog.md +3318 -0
- aeolus1d-0.3.0/docs/chemistry-file-formats.md +317 -0
- aeolus1d-0.3.0/docs/ci-runner-runbook.md +247 -0
- aeolus1d-0.3.0/docs/cli.md +515 -0
- aeolus1d-0.3.0/docs/closures-reference.md +230 -0
- aeolus1d-0.3.0/docs/closures.md +503 -0
- aeolus1d-0.3.0/docs/component-index.md +215 -0
- aeolus1d-0.3.0/docs/concepts.md +443 -0
- aeolus1d-0.3.0/docs/cylinder-reference.md +427 -0
- aeolus1d-0.3.0/docs/examples.md +178 -0
- aeolus1d-0.3.0/docs/gui.md +400 -0
- aeolus1d-0.3.0/docs/implicit-solver-plan.md +438 -0
- aeolus1d-0.3.0/docs/implicit-solver-reference.md +230 -0
- aeolus1d-0.3.0/docs/index.md +95 -0
- aeolus1d-0.3.0/docs/installation.md +142 -0
- aeolus1d-0.3.0/docs/interop.md +278 -0
- aeolus1d-0.3.0/docs/low-mach-at-plan.md +183 -0
- aeolus1d-0.3.0/docs/milestone-8-cruise-import-completeness.md +352 -0
- aeolus1d-0.3.0/docs/milestone-9-gt-suite-import-completeness.md +340 -0
- aeolus1d-0.3.0/docs/modes.md +327 -0
- aeolus1d-0.3.0/docs/numerics.md +300 -0
- aeolus1d-0.3.0/docs/perf-history.md +2299 -0
- aeolus1d-0.3.0/docs/phase-iy-picard.md +427 -0
- aeolus1d-0.3.0/docs/phase-log.md +4826 -0
- aeolus1d-0.3.0/docs/post-processing.md +521 -0
- aeolus1d-0.3.0/docs/pypi-registration.md +254 -0
- aeolus1d-0.3.0/docs/quickstart.md +143 -0
- aeolus1d-0.3.0/docs/release-readiness.md +277 -0
- aeolus1d-0.3.0/docs/release.md +430 -0
- aeolus1d-0.3.0/docs/roadmap.md +498 -0
- aeolus1d-0.3.0/docs/run-settings.md +321 -0
- aeolus1d-0.3.0/docs/schema-block-reference.md +280 -0
- aeolus1d-0.3.0/docs/scope-and-limitations.md +419 -0
- aeolus1d-0.3.0/docs/theory.md +1771 -0
- aeolus1d-0.3.0/docs/troubleshooting.md +487 -0
- aeolus1d-0.3.0/docs/turbo-map-format.md +258 -0
- aeolus1d-0.3.0/docs/tutorials/aftertreatment-chain.md +282 -0
- aeolus1d-0.3.0/docs/tutorials/chem-surrogate-training.md +237 -0
- aeolus1d-0.3.0/docs/tutorials/egr-feedback.md +184 -0
- aeolus1d-0.3.0/docs/tutorials/engine.md +404 -0
- aeolus1d-0.3.0/docs/tutorials/index.md +116 -0
- aeolus1d-0.3.0/docs/tutorials/networks.md +300 -0
- aeolus1d-0.3.0/docs/tutorials/post-processing.md +507 -0
- aeolus1d-0.3.0/docs/tutorials/sod.md +242 -0
- aeolus1d-0.3.0/docs/tutorials/throttle-controller.md +139 -0
- aeolus1d-0.3.0/docs/udf/friction.md +103 -0
- aeolus1d-0.3.0/docs/udf/heat.md +45 -0
- aeolus1d-0.3.0/docs/udf/index.md +133 -0
- aeolus1d-0.3.0/docs/udf/junction-bc.md +50 -0
- aeolus1d-0.3.0/docs/udf/porous.md +60 -0
- aeolus1d-0.3.0/docs/udf/reactions.md +36 -0
- aeolus1d-0.3.0/docs/validation-dossier.md +448 -0
- aeolus1d-0.3.0/docs/validation-report-v0.3.0.md +211 -0
- aeolus1d-0.3.0/docs/vehicle-system.md +189 -0
- aeolus1d-0.3.0/examples/01_single_pipe_sod.toml +41 -0
- aeolus1d-0.3.0/examples/02_cd_nozzle.toml +43 -0
- aeolus1d-0.3.0/examples/03_two_pipes_junction.toml +67 -0
- aeolus1d-0.3.0/examples/04_pulsed_intake.toml +41 -0
- aeolus1d-0.3.0/examples/05_catalyst_plug.toml +50 -0
- aeolus1d-0.3.0/examples/06_helmholtz_quasi2d.toml +57 -0
- aeolus1d-0.3.0/examples/07_catalyst_thermal_front.toml +58 -0
- aeolus1d-0.3.0/examples/08_reactive_pipe.toml +49 -0
- aeolus1d-0.3.0/examples/09_real_gas_shock_tube.toml +58 -0
- aeolus1d-0.3.0/examples/10_cp_junction_kloss.toml +82 -0
- aeolus1d-0.3.0/examples/11_neck_pipe_junction.toml +87 -0
- aeolus1d-0.3.0/examples/12_cp_junction.toml +81 -0
- aeolus1d-0.3.0/examples/13_ehr_helmholtz.toml +45 -0
- aeolus1d-0.3.0/examples/14_py_junction_bc.toml +48 -0
- aeolus1d-0.3.0/examples/15_strang_chemistry.toml +55 -0
- aeolus1d-0.3.0/examples/16_bs_chemistry.toml +56 -0
- aeolus1d-0.3.0/examples/17_real_gas_nozzle.toml +60 -0
- aeolus1d-0.3.0/examples/18_real_gas_catalyst.toml +65 -0
- aeolus1d-0.3.0/examples/19_real_gas_plenum.toml +80 -0
- aeolus1d-0.3.0/examples/20_multi_species.toml +53 -0
- aeolus1d-0.3.0/examples/21_multi_species_kinetics.toml +56 -0
- aeolus1d-0.3.0/examples/22_lodi_port.toml +55 -0
- aeolus1d-0.3.0/examples/23_mp5_sod.toml +69 -0
- aeolus1d-0.3.0/examples/24_hllc_lm_pulse.toml +61 -0
- aeolus1d-0.3.0/examples/25_valve_inlet.toml +55 -0
- aeolus1d-0.3.0/examples/26_valve_orifice.toml +54 -0
- aeolus1d-0.3.0/examples/27_compressor.toml +71 -0
- aeolus1d-0.3.0/examples/28_turbo_shaft.toml +126 -0
- aeolus1d-0.3.0/examples/29_learned_junction_bc.toml +83 -0
- aeolus1d-0.3.0/examples/30_learned_turbo_map.toml +74 -0
- aeolus1d-0.3.0/examples/31_cylinder.toml +104 -0
- aeolus1d-0.3.0/examples/35_mechanism_pipe.toml +56 -0
- aeolus1d-0.3.0/examples/38_engine_turbo_scr.toml +238 -0
- aeolus1d-0.3.0/examples/39_4cyl_engine_turbo_scr.toml +669 -0
- aeolus1d-0.3.0/examples/40_implicit_adaptive_pipe.toml +64 -0
- aeolus1d-0.3.0/examples/41_dpf_regen.toml +111 -0
- aeolus1d-0.3.0/examples/42_scr_urea_injector.toml +172 -0
- aeolus1d-0.3.0/examples/43_scrf.toml +217 -0
- aeolus1d-0.3.0/examples/44_egr_cooler.toml +56 -0
- aeolus1d-0.3.0/examples/45_two_stage_scr.toml +212 -0
- aeolus1d-0.3.0/examples/46_doc.toml +124 -0
- aeolus1d-0.3.0/examples/48_hnco_hydrolysis.toml +124 -0
- aeolus1d-0.3.0/examples/49_dpf_no_inhibition.toml +101 -0
- aeolus1d-0.3.0/examples/50_dpf_active_regen.toml +107 -0
- aeolus1d-0.3.0/examples/50_two_cyl_engine.toml +279 -0
- aeolus1d-0.3.0/examples/51_vgt_boost_ctrl.toml +135 -0
- aeolus1d-0.3.0/examples/52_knock_event.toml +127 -0
- aeolus1d-0.3.0/examples/53_dpf_heater_ctrl.toml +117 -0
- aeolus1d-0.3.0/examples/54_adaptive_picard_turbo.toml +159 -0
- aeolus1d-0.3.0/examples/55_dpf_regen_hrr.toml +100 -0
- aeolus1d-0.3.0/examples/55_vgt_3d_turbo.toml +154 -0
- aeolus1d-0.3.0/examples/56_dpf_regen_lowmach.toml +104 -0
- aeolus1d-0.3.0/examples/57_picard_stiffness_step.toml +189 -0
- aeolus1d-0.3.0/examples/58_tabulated_eos_implicit.toml +73 -0
- aeolus1d-0.3.0/examples/59_wastegate_boost_ctrl.toml +148 -0
- aeolus1d-0.3.0/examples/60_twin_sequential_turbo.toml +235 -0
- aeolus1d-0.3.0/examples/61_doc_sulfur_poisoning.toml +167 -0
- aeolus1d-0.3.0/examples/62_egr_valve_ctrl.toml +98 -0
- aeolus1d-0.3.0/examples/63_spark_timing_ctrl.toml +139 -0
- aeolus1d-0.3.0/examples/71_ktm_510_si.toml +256 -0
- aeolus1d-0.3.0/examples/72_throttle_demo.toml +76 -0
- aeolus1d-0.3.0/examples/74_twc.toml +226 -0
- aeolus1d-0.3.0/examples/75_coolant_pipe.toml +67 -0
- aeolus1d-0.3.0/examples/76_wltp_lite_dpf.toml +194 -0
- aeolus1d-0.3.0/examples/77_pipe_flow_heat.toml +57 -0
- aeolus1d-0.3.0/examples/78_pipe_bend_loss.toml +53 -0
- aeolus1d-0.3.0/examples/79_orifice_plate.toml +57 -0
- aeolus1d-0.3.0/examples/80_pipe_wall_warmup.toml +60 -0
- aeolus1d-0.3.0/examples/81_bend_geometric.toml +50 -0
- aeolus1d-0.3.0/examples/82_multilayer_wall.toml +72 -0
- aeolus1d-0.3.0/examples/83_turbo_robustness.toml +145 -0
- aeolus1d-0.3.0/examples/84_dpf_substrate_inertia.toml +80 -0
- aeolus1d-0.3.0/examples/85_vehicle_drive_cycle.toml +65 -0
- aeolus1d-0.3.0/examples/86_electrified_drive_cycle.toml +56 -0
- aeolus1d-0.3.0/examples/87_multicomponent_variable_gamma_shock_tube.toml +69 -0
- aeolus1d-0.3.0/examples/88_dd13_diesel.toml +115 -0
- aeolus1d-0.3.0/examples/89_epw_diesel.toml +1025 -0
- aeolus1d-0.3.0/examples/90_variable_cv_real_gas.toml +72 -0
- aeolus1d-0.3.0/examples/91_cylinder_species_transport.toml +232 -0
- aeolus1d-0.3.0/hatch_build.py +49 -0
- aeolus1d-0.3.0/mkdocs.yml +165 -0
- aeolus1d-0.3.0/pyproject.toml +385 -0
- aeolus1d-0.3.0/requirements-gui.lock +1054 -0
- aeolus1d-0.3.0/requirements.lock +270 -0
- aeolus1d-0.3.0/requirements.txt +50 -0
- aeolus1d-0.3.0/src/aeolus1d/__init__.py +43 -0
- aeolus1d-0.3.0/src/aeolus1d/_compat.py +94 -0
- aeolus1d-0.3.0/src/aeolus1d/_numba_flags.py +189 -0
- aeolus1d-0.3.0/src/aeolus1d/_resources.py +57 -0
- aeolus1d-0.3.0/src/aeolus1d/_tables.py +109 -0
- aeolus1d-0.3.0/src/aeolus1d/_types.py +103 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/__init__.py +61 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/acoustics.py +879 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/acoustics_tm.py +172 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/cfl_inspector.py +406 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/core_zone_probe.py +536 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/energy_audit.py +1123 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/engine_metrics.py +626 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/linearize.py +1364 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/nox_post.py +457 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/random_cycle.py +189 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/sensitivities.py +199 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/system_reports.py +433 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/turbo_map_viz.py +367 -0
- aeolus1d-0.3.0/src/aeolus1d/analysis/vehicle_tasks.py +200 -0
- aeolus1d-0.3.0/src/aeolus1d/audio.py +286 -0
- aeolus1d-0.3.0/src/aeolus1d/battery_ecm.py +164 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/__init__.py +103 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/base.py +197 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/egr_valve.py +211 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/mass_flow_inlet.py +134 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/nonreflecting.py +96 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/orifice_flow.py +209 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/pressure_outlet.py +103 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/stagnation_inlet.py +145 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/throttle.py +171 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/transient.py +272 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/valve.py +151 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/valve_orifice.py +230 -0
- aeolus1d-0.3.0/src/aeolus1d/bc/velocity_inlet.py +96 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/__init__.py +1 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/abgrall_interface.py +156 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/colebrook.py +89 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/helmholtz.py +148 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/helmholtz_quasi2d.py +161 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/helmholtz_resonator.py +108 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/lax.py +72 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/moody.py +94 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/nozzle.py +154 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/porous_plug.py +106 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/riemann_suite.py +255 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/shock_reflection.py +115 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/shu_osher.py +123 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/smooth_advection.py +257 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/sod.py +185 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/tjunction.py +111 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/tjunction_cp.py +89 -0
- aeolus1d-0.3.0/src/aeolus1d/bench/woodward_colella.py +98 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/__init__.py +19 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/burcat_db.py +214 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db.py +309 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/CH4.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/CO.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/CO2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/H.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/H2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/H2O.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/H2O2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/HO2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/N2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/N2_janaf_sample.dat +21 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/NH3.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/NO.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/O.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/O2.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/db_data/OH.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/equilibrium.py +211 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/fuel_stoichiometry.py +157 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/__init__.py +15 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/burcat.py +230 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/cantera_yaml.py +943 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/chemkin_mech.py +828 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/janaf.py +229 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/importers/nasa7.py +317 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/kinetics.py +1049 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/kinetics_njit.py +615 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/mech_db/ammonia_scr_demo.json +71 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/mech_db/h2_oxidation_demo.json +168 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/mech_db.py +221 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/mixture.py +725 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/reaction.py +276 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/species.py +180 -0
- aeolus1d-0.3.0/src/aeolus1d/chemistry/surface_kinetics.py +252 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/__init__.py +1 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/_shared.py +29 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/__init__.py +61 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/acoustics.py +137 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/analyze_cfl.py +44 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/auci_compare.py +54 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/audio.py +83 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/bench.py +59 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/cycle_settle.py +215 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/drive_cycle.py +130 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/examples.py +75 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/expand.py +74 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/export.py +36 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/export_fmu.py +31 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/extract.py +50 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/gui.py +66 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/import_.py +47 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/inspect_gtm.py +35 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/modes.py +174 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/optimize.py +88 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/parallel.py +63 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/run.py +967 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/sensitivity.py +116 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/thermo_db.py +76 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/turbo_map.py +99 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/commands/warmup.py +154 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/doctor.py +242 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/main.py +127 -0
- aeolus1d-0.3.0/src/aeolus1d/cli/registry.py +102 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/__init__.py +5 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/_extras_layout.py +81 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/bend_loss.py +86 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/catalyst.py +705 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/catalyst_eos.py +212 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/chem_linop.py +111 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/chem_surrogate.py +97 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/diesel_predictive_combustion.py +214 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/doc_sulfur.py +246 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/eos.py +529 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/eos_njit.py +791 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/eos_tabulated.py +275 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/eos_tabulated_njit.py +636 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/film_transfer.py +106 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/filter.py +1357 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/flame_geometry.py +92 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/friction.py +360 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/gas.py +63 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/hc_oxidation.py +300 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/heat.py +370 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/hnco_hydrolysis.py +136 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/incylinder_turbulence.py +65 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/isat_chem.py +141 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/laminar_flame_speed.py +101 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/learned_junction_bc.py +292 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/learned_models/junction_bc_resistive.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/learned_models/turbo_map_centrifugal.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/learned_turbo_map.py +378 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/mechanism.py +524 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/monolith.py +173 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/multi_stage_wiebe.py +404 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/pinn.py +211 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/pollutants.py +549 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/porous.py +509 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/reaction_demo.py +232 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/reaction_demo_njit.py +35 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/registry.py +198 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/scr_kinetics.py +449 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/scr_storage.py +388 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/si_turbulent_combustion.py +161 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/species_contract.py +186 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/thiele.py +225 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/transport.py +136 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/twc.py +433 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/twc_brinkmeier.py +1237 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/urea_decomposition.py +177 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/user_code.py +359 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/wall_coolant.py +165 -0
- aeolus1d-0.3.0/src/aeolus1d/closures/wall_thermal.py +411 -0
- aeolus1d-0.3.0/src/aeolus1d/components/__init__.py +90 -0
- aeolus1d-0.3.0/src/aeolus1d/components/coolant_pipe.py +207 -0
- aeolus1d-0.3.0/src/aeolus1d/components/cylinder.py +3374 -0
- aeolus1d-0.3.0/src/aeolus1d/components/helmholtz_resonator.py +231 -0
- aeolus1d-0.3.0/src/aeolus1d/components/junction.py +1219 -0
- aeolus1d-0.3.0/src/aeolus1d/components/junction_cp.py +519 -0
- aeolus1d-0.3.0/src/aeolus1d/components/junction_ehr.py +308 -0
- aeolus1d-0.3.0/src/aeolus1d/components/junction_passthrough.py +276 -0
- aeolus1d-0.3.0/src/aeolus1d/components/pipe.py +1024 -0
- aeolus1d-0.3.0/src/aeolus1d/components/protocols.py +124 -0
- aeolus1d-0.3.0/src/aeolus1d/components/species_coupling.py +390 -0
- aeolus1d-0.3.0/src/aeolus1d/components/turbo.py +1832 -0
- aeolus1d-0.3.0/src/aeolus1d/components/turbo_csv.py +185 -0
- aeolus1d-0.3.0/src/aeolus1d/components/turbo_data/example_centrifugal.csv +37 -0
- aeolus1d-0.3.0/src/aeolus1d/components/turbo_data/example_centrifugal.npz +0 -0
- aeolus1d-0.3.0/src/aeolus1d/components/valve_flow.py +187 -0
- aeolus1d-0.3.0/src/aeolus1d/components/volume.py +415 -0
- aeolus1d-0.3.0/src/aeolus1d/constants.py +9 -0
- aeolus1d-0.3.0/src/aeolus1d/control/__init__.py +79 -0
- aeolus1d-0.3.0/src/aeolus1d/control/boost_controller.py +89 -0
- aeolus1d-0.3.0/src/aeolus1d/control/dpf_heater_controller.py +100 -0
- aeolus1d-0.3.0/src/aeolus1d/control/egr_valve_controller.py +138 -0
- aeolus1d-0.3.0/src/aeolus1d/control/epw_closed_loop.py +282 -0
- aeolus1d-0.3.0/src/aeolus1d/control/fuel_injector_controller.py +176 -0
- aeolus1d-0.3.0/src/aeolus1d/control/pid_tune.py +228 -0
- aeolus1d-0.3.0/src/aeolus1d/control/signal_toolbox.py +327 -0
- aeolus1d-0.3.0/src/aeolus1d/control/spark_timing_controller.py +159 -0
- aeolus1d-0.3.0/src/aeolus1d/control/step_response.py +181 -0
- aeolus1d-0.3.0/src/aeolus1d/control/wastegate_controller.py +127 -0
- aeolus1d-0.3.0/src/aeolus1d/coolant.py +147 -0
- aeolus1d-0.3.0/src/aeolus1d/doe.py +223 -0
- aeolus1d-0.3.0/src/aeolus1d/drive_cycles.py +208 -0
- aeolus1d-0.3.0/src/aeolus1d/driveline.py +360 -0
- aeolus1d-0.3.0/src/aeolus1d/driver.py +200 -0
- aeolus1d-0.3.0/src/aeolus1d/emotor.py +179 -0
- aeolus1d-0.3.0/src/aeolus1d/energy_management.py +158 -0
- aeolus1d-0.3.0/src/aeolus1d/engine_oil.py +147 -0
- aeolus1d-0.3.0/src/aeolus1d/engine_post.py +492 -0
- aeolus1d-0.3.0/src/aeolus1d/fmi.py +325 -0
- aeolus1d-0.3.0/src/aeolus1d/fuel_map.py +80 -0
- aeolus1d-0.3.0/src/aeolus1d/fuels.py +107 -0
- aeolus1d-0.3.0/src/aeolus1d/homotopy.py +216 -0
- aeolus1d-0.3.0/src/aeolus1d/hybrid.py +313 -0
- aeolus1d-0.3.0/src/aeolus1d/io/__init__.py +47 -0
- aeolus1d-0.3.0/src/aeolus1d/io/_ignition_mode.py +104 -0
- aeolus1d-0.3.0/src/aeolus1d/io/_kind_codec.py +286 -0
- aeolus1d-0.3.0/src/aeolus1d/io/build.py +3451 -0
- aeolus1d-0.3.0/src/aeolus1d/io/case.py +939 -0
- aeolus1d-0.3.0/src/aeolus1d/io/case_upgrades.py +227 -0
- aeolus1d-0.3.0/src/aeolus1d/io/cgns_writer.py +296 -0
- aeolus1d-0.3.0/src/aeolus1d/io/expand_case.py +302 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/__init__.py +197 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/_xml_common.py +151 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_boost.py +140 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/__init__.py +107 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/_calibration.py +1405 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/_core.py +3937 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/_geometry.py +683 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/_porous.py +601 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/_urea.py +467 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/types.py +140 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m/units.py +212 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/avl_cruise_m_tune.py +1004 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/btc_turbo_map.py +767 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/extract.py +247 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/fmu.py +440 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/gt_maps.py +393 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/gt_params.py +207 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/gt_power.py +171 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/gt_suite_native.py +2319 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/openwam.py +336 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/schematic.py +795 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/species_db.py +237 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/ucp.py +434 -0
- aeolus1d-0.3.0/src/aeolus1d/io/interop/wave.py +145 -0
- aeolus1d-0.3.0/src/aeolus1d/io/manifest.py +152 -0
- aeolus1d-0.3.0/src/aeolus1d/io/parsers.py +1819 -0
- aeolus1d-0.3.0/src/aeolus1d/io/resume.py +749 -0
- aeolus1d-0.3.0/src/aeolus1d/io/schema.py +3468 -0
- aeolus1d-0.3.0/src/aeolus1d/io/schema_help.py +2636 -0
- aeolus1d-0.3.0/src/aeolus1d/io/schema_upgrades.py +166 -0
- aeolus1d-0.3.0/src/aeolus1d/io/snapshot.py +399 -0
- aeolus1d-0.3.0/src/aeolus1d/io/source_pos.py +202 -0
- aeolus1d-0.3.0/src/aeolus1d/io/tracer.py +509 -0
- aeolus1d-0.3.0/src/aeolus1d/io/validate.py +2443 -0
- aeolus1d-0.3.0/src/aeolus1d/io/vehicle_case.py +566 -0
- aeolus1d-0.3.0/src/aeolus1d/io/writer.py +552 -0
- aeolus1d-0.3.0/src/aeolus1d/io/xdmf.py +309 -0
- aeolus1d-0.3.0/src/aeolus1d/logging.py +193 -0
- aeolus1d-0.3.0/src/aeolus1d/modes/__init__.py +65 -0
- aeolus1d-0.3.0/src/aeolus1d/modes/assemble.py +130 -0
- aeolus1d-0.3.0/src/aeolus1d/modes/elements.py +168 -0
- aeolus1d-0.3.0/src/aeolus1d/modes/network.py +371 -0
- aeolus1d-0.3.0/src/aeolus1d/modes/solve.py +125 -0
- aeolus1d-0.3.0/src/aeolus1d/notebook.py +182 -0
- aeolus1d-0.3.0/src/aeolus1d/optimize.py +811 -0
- aeolus1d-0.3.0/src/aeolus1d/parallel.py +139 -0
- aeolus1d-0.3.0/src/aeolus1d/planetary.py +71 -0
- aeolus1d-0.3.0/src/aeolus1d/py.typed +0 -0
- aeolus1d-0.3.0/src/aeolus1d/regen.py +58 -0
- aeolus1d-0.3.0/src/aeolus1d/runtime/__init__.py +8 -0
- aeolus1d-0.3.0/src/aeolus1d/runtime/cfl_ramp.py +84 -0
- aeolus1d-0.3.0/src/aeolus1d/runtime/live_control.py +270 -0
- aeolus1d-0.3.0/src/aeolus1d/scaffold/__init__.py +20 -0
- aeolus1d-0.3.0/src/aeolus1d/scaffold/engine.py +302 -0
- aeolus1d-0.3.0/src/aeolus1d/scaffold/thermal_network.py +169 -0
- aeolus1d-0.3.0/src/aeolus1d/scaffold/turbo_sizing.py +253 -0
- aeolus1d-0.3.0/src/aeolus1d/scaffold/wizards.py +175 -0
- aeolus1d-0.3.0/src/aeolus1d/sensitivity.py +158 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/__init__.py +1 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/chem_bs_brinkmeier.py +946 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/chem_bs_jit.py +366 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/chem_diagnostics.py +252 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/chem_numbalsoda.py +360 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/hllc.py +154 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/hllc_eos.py +142 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/hllc_eos_njit.py +626 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/hllc_jac.py +1839 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/hllc_lm.py +135 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/implicit_euler.py +749 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/implicit_kernels.py +3901 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/implicit_network.py +1849 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/implicit_radau.py +396 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/kernels.py +645 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/kernels_mp5.py +491 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/loop_flow_steady.py +399 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/network_timeloop.py +3041 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/packed_pipes.py +342 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/physics_asserts.py +173 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/quasi_steady.py +720 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/quasi_steady_network.py +3356 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/reconstruct.py +148 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/rk.py +45 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/solver_ops.py +324 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/species_advection_njit.py +321 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/startup_banner.py +317 -0
- aeolus1d-0.3.0/src/aeolus1d/solver/timeloop.py +641 -0
- aeolus1d-0.3.0/src/aeolus1d/surrogates.py +123 -0
- aeolus1d-0.3.0/src/aeolus1d/transmission_shift.py +171 -0
- aeolus1d-0.3.0/src/aeolus1d/uq.py +149 -0
- aeolus1d-0.3.0/src/aeolus1d/validation.py +778 -0
- aeolus1d-0.3.0/src/aeolus1d/vehicle.py +202 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*.egg-info/
|
|
4
|
+
.eggs/
|
|
5
|
+
# Repo-root build/ + dist/ only — the PyInstaller spec lives at
|
|
6
|
+
# ``aeolus1d_gui/build/`` and is intentionally tracked.
|
|
7
|
+
/build/
|
|
8
|
+
/dist/
|
|
9
|
+
# mkdocs build output.
|
|
10
|
+
/site/
|
|
11
|
+
.venv/
|
|
12
|
+
venv/
|
|
13
|
+
.env
|
|
14
|
+
|
|
15
|
+
.pytest_cache/
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
.mypy_cache/
|
|
18
|
+
.coverage
|
|
19
|
+
htmlcov/
|
|
20
|
+
# CI caches ``.cache/pip`` INTO the build workspace (see .gitlab-ci.yml's
|
|
21
|
+
# ``cache.paths``). hatchling picks sdist contents from what git would track,
|
|
22
|
+
# so while this was unignored ``python -m build`` packaged the entire pip
|
|
23
|
+
# cache: the build-smoke artifact was 231.5 MB against 9.8 MB from a clean
|
|
24
|
+
# tree, and a 231 MB upload over a home link resets often enough that the job
|
|
25
|
+
# failed 4 of 5 attempts. That looked like flaky infrastructure for a whole
|
|
26
|
+
# day. It also meant a release would have shipped a pip cache to PyPI.
|
|
27
|
+
.cache/
|
|
28
|
+
|
|
29
|
+
.ipynb_checkpoints/
|
|
30
|
+
.idea/
|
|
31
|
+
.vscode/
|
|
32
|
+
*.swp
|
|
33
|
+
*~
|
|
34
|
+
|
|
35
|
+
run.h5
|
|
36
|
+
*.h5
|
|
37
|
+
!reference_data/*.npz
|
|
38
|
+
outputs/
|
|
39
|
+
|
|
40
|
+
# graphify outputs — knowledge-graph artifacts (HTML viz, raw
|
|
41
|
+
# graph.json, GRAPH_REPORT.md). Regenerated on every run; no
|
|
42
|
+
# value tracking.
|
|
43
|
+
graphify-out/
|
|
44
|
+
|
|
45
|
+
# Auto-generated TOML outputs from optimizer runs; intermediate
|
|
46
|
+
# artifacts of long-running fits, not source.
|
|
47
|
+
*.tuned.toml
|
|
48
|
+
|
|
49
|
+
# Third-party / vendor case files used as local interop fixtures.
|
|
50
|
+
# Cruise M / GT-Suite / GT-Power project files carry vendor IP and
|
|
51
|
+
# proprietary engine-program data; keep them out of the repo.
|
|
52
|
+
# Drop the file at the path below to enable the corresponding
|
|
53
|
+
# integration tests; the tests skip cleanly when the file is
|
|
54
|
+
# absent.
|
|
55
|
+
tests/fixtures/interop/*.proj
|
|
56
|
+
tests/fixtures/interop/*.gt.xml
|
|
57
|
+
tests/fixtures/interop/*.bws
|
|
58
|
+
tests/fixtures/interop/*.wvm
|
|
59
|
+
tests/fixtures/interop/*.gtm
|
|
60
|
+
tests/fixtures/interop/*.gtsub
|
|
61
|
+
# Umbrella folder for user-supplied vendor case files used as
|
|
62
|
+
# local interop fixtures. Stays untracked; the integration
|
|
63
|
+
# tests resolve their fixtures from
|
|
64
|
+
# ``local_cases/<vendor-subfolder>/`` and skip cleanly when
|
|
65
|
+
# absent.
|
|
66
|
+
/local_cases/
|
|
67
|
+
# Defensive root-level globs so vendor case files (Cruise M
|
|
68
|
+
# ``.proj`` archives, GT-Suite ``.gtm``/``.gtsub`` + their
|
|
69
|
+
# binary turbo-map / parameter-table siblings) never end up
|
|
70
|
+
# staged by accident, even if dropped at the repo root in their
|
|
71
|
+
# own folder.
|
|
72
|
+
*.proj
|
|
73
|
+
*.gtm
|
|
74
|
+
*.gtsub
|
|
75
|
+
*.cmp
|
|
76
|
+
*.trb
|
|
77
|
+
*.glx
|
|
78
|
+
*.rlt
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# screenshots from doc rendering issues
|
|
83
|
+
ss*.png
|
|
84
|
+
|
|
85
|
+
# Claude harness lock files
|
|
86
|
+
.claude/
|
|
87
|
+
|
|
88
|
+
# Numba JIT cache — primed by ``aeolus1d warmup`` (Phase 2). Bulky,
|
|
89
|
+
# host-specific, and regenerated on demand.
|
|
90
|
+
.numba_cache/
|
|
91
|
+
|
|
92
|
+
# Transient interop diagnostic dumps (e.g. GT-Suite InteropReport
|
|
93
|
+
# warnings). Captured per-session, not source.
|
|
94
|
+
warnings.txt
|
|
95
|
+
|
|
96
|
+
# Bundled-example plot artefacts — regenerated by ``plot_*.py``
|
|
97
|
+
# scripts; the scripts are tracked, the PNGs are not.
|
|
98
|
+
examples/plots/*.png
|
|
99
|
+
|
|
100
|
+
# Validation dataset archives — the CSV under ``data/`` is tracked,
|
|
101
|
+
# the upstream archive + HTML landing page from Mendeley / Ricardo /
|
|
102
|
+
# Argonne / UMich are not (each has its own DATA_LICENSE).
|
|
103
|
+
examples/validation/mendeley_ethanol_water/*.zip
|
|
104
|
+
examples/validation/mendeley_ethanol_water/*.html
|
|
105
|
+
examples/validation/ricardo_ktm/*.zip
|
|
106
|
+
examples/validation/argonne_d3/*.zip
|
|
107
|
+
examples/validation/umich_diesel/*.zip
|
|
108
|
+
|
|
109
|
+
# ML chemistry surrogate — generated datasets + trained models (regenerable)
|
|
110
|
+
ml_chemistry/data/
|
|
111
|
+
ml_chemistry/models/
|
|
112
|
+
|
|
113
|
+
# AVL comparison-plot aeolus1d-run cache (regenerable; written by
|
|
114
|
+
# scripts/plot_avl_validation_comparison.py to skip the re-solve on
|
|
115
|
+
# reference-only re-plots).
|
|
116
|
+
examples/validation/**/.aeolus_run_*.pkl
|
|
117
|
+
|
|
118
|
+
# Local scratch: ad-hoc diagnostics, audit notes, CI watchers, throwaway
|
|
119
|
+
# harnesses. Never source — kept out of the tree so `git add -A` can't sweep it.
|
|
120
|
+
.pipeline/
|
|
121
|
+
|
|
122
|
+
# Hypothesis' example database — a machine-local cache the plugin writes into
|
|
123
|
+
# the CWD. It is not source, and because it was never ignored, hatchling's
|
|
124
|
+
# default sdist swept 630 of its files into every published tarball. The
|
|
125
|
+
# allow-list in pyproject now keeps them out of the sdist regardless; this
|
|
126
|
+
# keeps them out of `git add -A` as well.
|
|
127
|
+
.hypothesis/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Authors
|
|
2
|
+
|
|
3
|
+
aeolus1d is developed and maintained by:
|
|
4
|
+
|
|
5
|
+
- **Niklas Nordin** <niklas.nordin@nequam.se>
|
|
6
|
+
- **Claude** (Anthropic) — pair-programming assistant
|
|
7
|
+
|
|
8
|
+
## Acknowledgements
|
|
9
|
+
|
|
10
|
+
Phase-by-phase contributions are recorded in the git log
|
|
11
|
+
(`git log --format='%h %s'`). The strict-mode arc (Phase 7g.3-burn-*),
|
|
12
|
+
the implicit-solver Picard / JFNK work (Phase I-Y / I-8), and the
|
|
13
|
+
AVL-inspired backlog sweep (Phase A1–H3, L1, E1–E4, F3, G2/G3, I2)
|
|
14
|
+
are all in-tree in `src/aeolus1d/`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
The full changelog lives at **[docs/changelog.md](docs/changelog.md)**
|
|
4
|
+
— this file is a pointer so community-health scanners, GitHub
|
|
5
|
+
release-notes auto-detection, and `pip show aeolus1d`-style tools
|
|
6
|
+
find a `CHANGELOG.md` at the repo root.
|
|
7
|
+
|
|
8
|
+
The `docs/` copy is the single source of truth; mirroring would
|
|
9
|
+
drift. Use the table-of-contents below to jump straight to a
|
|
10
|
+
version.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Releases
|
|
14
|
+
|
|
15
|
+
- **Unreleased** — [v0.3.0 (pre-release) in flight on `main`](docs/changelog.md#v030-pre-release--state-space-linearization--engine-warm-up-arc)
|
|
16
|
+
- **v0.2.0** (2026-05-17) — [standalone repo + validation closures + CI](docs/changelog.md#v020--standalone-repo--validation-closures--ci)
|
|
17
|
+
- **Milestones 1-6** — [docs/changelog.md](docs/changelog.md#milestone-1--pipe-network-core)
|
|
18
|
+
(pipe-network core → MP5 dispatch closes + optimization driver)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Per-phase technical detail
|
|
22
|
+
|
|
23
|
+
`docs/changelog.md` summarises each milestone at the
|
|
24
|
+
sentence-per-phase level. For the full blow-by-blow — every
|
|
25
|
+
``@register_closure``, every bench-line delta — see:
|
|
26
|
+
|
|
27
|
+
- **[docs/phase-log.md](docs/phase-log.md)** — detailed per-phase
|
|
28
|
+
technical history.
|
|
29
|
+
- **[docs/perf-history.md](docs/perf-history.md)** — Phase Perf-1
|
|
30
|
+
→ Perf-17 before / after numbers.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Convention
|
|
34
|
+
|
|
35
|
+
aeolus1d follows [Semantic Versioning](https://semver.org). Until
|
|
36
|
+
v1.0, breaking changes happen between minor versions; the entry
|
|
37
|
+
under each version in `docs/changelog.md` calls them out
|
|
38
|
+
explicitly. Phase numbering is internal to the project (~600
|
|
39
|
+
phases across 6 milestones at v0.2.0) and is not tied to SemVer.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use aeolus1d in academic work, please cite it as below."
|
|
3
|
+
title: "aeolus1d — a 1D compressible gas-dynamics pipe-network solver"
|
|
4
|
+
abstract: >-
|
|
5
|
+
aeolus1d is an open-source 1D compressible-Euler pipe-network solver
|
|
6
|
+
built for engine intake/exhaust simulation, aftertreatment chemistry,
|
|
7
|
+
and 1D wave-action workflows. Numba-JIT inner kernels run within
|
|
8
|
+
roughly 3× of hand-tuned Fortran; the solver ships HLLC + MUSCL/MP5,
|
|
9
|
+
implicit Euler / BDF2 / Radau IIA(3) with analytic Jacobians,
|
|
10
|
+
Strang-split chemistry, real-gas EOS, full engine + aftertreatment
|
|
11
|
+
component depth, a Qt/PyVista visual editor, and a validated TOML
|
|
12
|
+
case format.
|
|
13
|
+
type: software
|
|
14
|
+
authors:
|
|
15
|
+
- family-names: Nordin
|
|
16
|
+
given-names: Niklas
|
|
17
|
+
email: niklas.nordin@nequam.se
|
|
18
|
+
affiliation: nequam
|
|
19
|
+
- name: "Claude (Anthropic)"
|
|
20
|
+
affiliation: "Anthropic — pair-programming assistant"
|
|
21
|
+
version: "0.3.0"
|
|
22
|
+
date-released: "2026-08-16"
|
|
23
|
+
license: MIT
|
|
24
|
+
repository-code: "https://gitlab.com/niklas.nordin.swe/aeolus"
|
|
25
|
+
url: "https://gitlab.com/niklas.nordin.swe/aeolus"
|
|
26
|
+
keywords:
|
|
27
|
+
- cfd
|
|
28
|
+
- gas-dynamics
|
|
29
|
+
- engine-simulation
|
|
30
|
+
- aftertreatment
|
|
31
|
+
- 1d-wave-action
|
|
32
|
+
- numba
|
|
33
|
+
- compressible-euler
|
|
34
|
+
# DOI placeholder — populated when a Zenodo release is cut (Phase 9
|
|
35
|
+
# of the maturity remediation plan). Replace with the concrete DOI
|
|
36
|
+
# at that point.
|
|
37
|
+
# doi: 10.5281/zenodo.XXXXXXX
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
The aeolus1d project adopts the
|
|
4
|
+
[**Contributor Covenant, v2.1**](https://www.contributor-covenant.org/version/2/1/code_of_conduct/)
|
|
5
|
+
as its code of conduct. The full text — covering expected behaviour,
|
|
6
|
+
enforcement guidelines, and the four-tier consequences ladder — lives
|
|
7
|
+
at the URL above. Treat that document as authoritative; this file
|
|
8
|
+
just records the adoption and the local enforcement contact.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## In short
|
|
12
|
+
|
|
13
|
+
- Be respectful and constructive in issues, merge requests, code
|
|
14
|
+
review, and any other project space.
|
|
15
|
+
- Disagree on technical substance, not on people.
|
|
16
|
+
- Assume good faith. Ask clarifying questions before escalating.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
Applies to all project spaces — the GitLab repository (issues,
|
|
22
|
+
merge requests, code review threads, the wiki) and any official
|
|
23
|
+
channel (email, chat, video calls) where someone is representing
|
|
24
|
+
the project.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Enforcement
|
|
28
|
+
|
|
29
|
+
Report unacceptable behaviour to **niklas.nordin@nequam.se**.
|
|
30
|
+
|
|
31
|
+
Reports are handled confidentially. Expect an acknowledgement
|
|
32
|
+
within 72 hours and a substantive response within two weeks. The
|
|
33
|
+
project follows the Contributor Covenant enforcement ladder:
|
|
34
|
+
correction → warning → temporary ban → permanent ban, calibrated
|
|
35
|
+
to the severity and pattern of the incident.
|
|
36
|
+
|
|
37
|
+
Reporters acting in good faith will not face retaliation, even if
|
|
38
|
+
the report is ultimately not actionable.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## Attribution
|
|
42
|
+
|
|
43
|
+
This Code of Conduct is adapted from the
|
|
44
|
+
[Contributor Covenant](https://www.contributor-covenant.org),
|
|
45
|
+
version 2.1, available at the URL above. The Contributor Covenant
|
|
46
|
+
is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Contributing to aeolus1d
|
|
2
|
+
|
|
3
|
+
Thanks for picking up the repo. This file covers the practical mechanics
|
|
4
|
+
— how to install a dev environment, run the test gates, and shape a
|
|
5
|
+
merge request so it lands quickly.
|
|
6
|
+
|
|
7
|
+
For the wider community policy, see [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
|
|
8
|
+
For security disclosure, see [`SECURITY.md`](SECURITY.md).
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Getting set up
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
git clone https://gitlab.com/niklas.nordin.swe/aeolus
|
|
15
|
+
cd aeolus1d
|
|
16
|
+
python -m venv .venv && source .venv/bin/activate
|
|
17
|
+
pip install -e ".[dev]"
|
|
18
|
+
pre-commit install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Optional extras (`gui`, `real-gas`, `docs`, `build`, `chemistry-yaml`,
|
|
22
|
+
`interop`) are independently installable — see
|
|
23
|
+
[`docs/installation.md`](docs/installation.md).
|
|
24
|
+
|
|
25
|
+
Verify the install:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
make test # ~3 min parallel, skips @pytest.mark.slow
|
|
29
|
+
aeolus1d bench nozzle # quick smoke
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## The local gates
|
|
34
|
+
|
|
35
|
+
Every merge request has to clear these — they all run in CI but it's
|
|
36
|
+
faster to catch failures locally first.
|
|
37
|
+
|
|
38
|
+
| Gate | Command | What it checks |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Lint | `make lint` (or `pre-commit run --all-files`) | ruff style + auto-fixes |
|
|
41
|
+
| Types | `mypy --strict src/aeolus1d aeolus1d_gui` | strict typing, no Any-leaks |
|
|
42
|
+
| Tests (fast) | `make test` | full suite minus `@slow`; ~3 min |
|
|
43
|
+
| Tests (full) | `make test-all` | everything including benches |
|
|
44
|
+
| Docs | `make docs` | `mkdocs build --strict` |
|
|
45
|
+
|
|
46
|
+
`pre-commit install` wires the ruff hook so commits fail locally
|
|
47
|
+
before they reach CI. Bypass with `--no-verify` only when you really
|
|
48
|
+
know what you're doing.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Branching & merge requests
|
|
52
|
+
|
|
53
|
+
- **One concern per MR.** A bugfix and a feature in the same branch
|
|
54
|
+
invariably slows review and bisecting.
|
|
55
|
+
- **Branch naming.** `feat/<topic>`, `fix/<topic>`, `docs/<topic>`,
|
|
56
|
+
`perf/<topic>`, `hotfix/<topic>`. Topic in kebab-case.
|
|
57
|
+
- **Commit messages.** Imperative mood, one-line subject under 72
|
|
58
|
+
chars, optional body explaining *why*. Match the existing log
|
|
59
|
+
style — see `git log --oneline` for examples.
|
|
60
|
+
- **No `--amend` on pushed commits.** Create a new commit instead.
|
|
61
|
+
CI re-runs from scratch on push, so amending breaks bisect history.
|
|
62
|
+
- **No `--no-verify`.** If a hook fails, fix the cause.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## The phase-workflow rule (aeolus1d convention)
|
|
66
|
+
|
|
67
|
+
Substantial features land as **phases** — each phase touches the same
|
|
68
|
+
three surfaces together so the docs/examples never lag the code:
|
|
69
|
+
|
|
70
|
+
1. **Code** — `src/aeolus1d/...` change + tests.
|
|
71
|
+
2. **Example** — a bundled `examples/NN_<topic>.toml` (and matching
|
|
72
|
+
`plot_NN_<topic>.py` script under `examples/plots/` if useful)
|
|
73
|
+
that exercises the new feature end-to-end.
|
|
74
|
+
3. **Documentation** — `README.md` milestone section *and*
|
|
75
|
+
`docs/changelog.md` *and* one of `docs/theory.md` /
|
|
76
|
+
`docs/concepts.md` / `docs/closures-reference.md` as appropriate.
|
|
77
|
+
|
|
78
|
+
Commit the three pieces together in a single MR. If a phase is large,
|
|
79
|
+
split it into sub-phases (e.g. `Phase 8m-ctrl-3`) — each sub-phase
|
|
80
|
+
still ships the three surfaces.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## Validation discipline
|
|
84
|
+
|
|
85
|
+
Validation cases live under `examples/validation/<dataset>/` and have
|
|
86
|
+
their own `run_validation.py` + `pass_criteria.toml`. **Don't loosen
|
|
87
|
+
a passing tolerance to make a refactor green** — investigate the
|
|
88
|
+
divergence first. The KTM and Mendeley suites are currently the
|
|
89
|
+
quantitative truth-set; promoting them to gated CI tests is on the
|
|
90
|
+
roadmap (see [`docs/roadmap.md`](docs/roadmap.md)).
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Performance work
|
|
94
|
+
|
|
95
|
+
Numeric kernels are `@njit(cache=True, fastmath=FASTMATH)`, where
|
|
96
|
+
`FASTMATH` is the centralised flag in `aeolus1d._numba_flags` (overridable
|
|
97
|
+
with `AEOLUS_FASTMATH=0` for IEEE-strict numerics). Performance MRs need
|
|
98
|
+
a before/after measurement in the description (e.g.
|
|
99
|
+
`tests/benchmarks/test_baseline_regression.py` output, or a one-off
|
|
100
|
+
timer from a representative example). Hot-path changes that don't
|
|
101
|
+
include numbers will be sent back with a request to measure.
|
|
102
|
+
|
|
103
|
+
A hot-kernel change must also **preserve bit-identity** (the
|
|
104
|
+
`regression` golden net catches a "faster but different" kernel) or be
|
|
105
|
+
gated behind a numerics-changing flag with re-baselined snapshots — and
|
|
106
|
+
the dev box is not a reliable benchmark host (see
|
|
107
|
+
[ADR-0006](docs/adr/0006-hllc-core-microopt-rejected.md)).
|
|
108
|
+
|
|
109
|
+
The historical performance baselines live in
|
|
110
|
+
[`docs/perf-history.md`](docs/perf-history.md) and
|
|
111
|
+
[`docs/benchmarks-baseline.md`](docs/benchmarks-baseline.md). Update
|
|
112
|
+
the relevant table when you ship a win.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
## Architecture decisions (ADRs)
|
|
116
|
+
|
|
117
|
+
Load-bearing decisions — especially the ones where the interesting part
|
|
118
|
+
is the *rejected* alternative — are recorded as ADRs in
|
|
119
|
+
[`docs/adr/`](docs/adr/README.md). Before re-litigating a settled design
|
|
120
|
+
question (a different chemistry integrator, a matrix-free implicit solve,
|
|
121
|
+
a hot-kernel rewrite), check whether an ADR already covers it.
|
|
122
|
+
|
|
123
|
+
Write a new ADR when a change alters (or deliberately does *not* alter)
|
|
124
|
+
the architecture or numerics and the rationale isn't recoverable from the
|
|
125
|
+
code alone. Routine fixes and features don't need one — the changelog and
|
|
126
|
+
`docs/phase-log.md` cover those. Format + conventions are in the
|
|
127
|
+
[ADR overview](docs/adr/README.md).
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## Reporting bugs
|
|
131
|
+
|
|
132
|
+
Open an issue on the project tracker with:
|
|
133
|
+
|
|
134
|
+
1. A minimal TOML case that reproduces (the smaller the better — strip
|
|
135
|
+
to the offending pipe + closure).
|
|
136
|
+
2. The full `aeolus1d run <case>.toml` console output.
|
|
137
|
+
3. Your environment — run `aeolus1d doctor`, which bundles the aeolus1d
|
|
138
|
+
version, Python + platform, the core and optional dependency
|
|
139
|
+
versions, and the relevant `AEOLUS_*` / `NUMBA_*` env vars (add
|
|
140
|
+
`--json` for a machine-readable dump to attach to the report).
|
|
141
|
+
|
|
142
|
+
For numerical disagreements with published data, include the dataset
|
|
143
|
+
reference and the analytical or measured value you expected.
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## License of contributions
|
|
147
|
+
|
|
148
|
+
By contributing you agree that your contribution is licensed under
|
|
149
|
+
the project's MIT License (see [`LICENSE`](LICENSE)). No additional
|
|
150
|
+
CLA is required.
|
aeolus1d-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Niklas Nordin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Maintainers
|
|
2
|
+
|
|
3
|
+
aeolus1d is currently maintained by a single maintainer:
|
|
4
|
+
|
|
5
|
+
- **Niklas Nordin** — <niklas.nordin@nequam.se>
|
|
6
|
+
|
|
7
|
+
(Claude, Anthropic's AI assistant, is credited as a pair-programming
|
|
8
|
+
contributor in `CITATION.cff` / `pyproject.toml`; it is not a maintainer.)
|
|
9
|
+
|
|
10
|
+
## What this means for you
|
|
11
|
+
|
|
12
|
+
- **Bus factor is 1.** This is a known, documented risk rather than a hidden
|
|
13
|
+
one. Load-bearing design rationale is being migrated into in-repo
|
|
14
|
+
Architecture Decision Records (see the maturity roadmap) so the project's
|
|
15
|
+
reasoning survives independent of any single person.
|
|
16
|
+
- **Support is best-effort.** There is no guaranteed response-time SLA
|
|
17
|
+
pre-1.0 — see [SUPPORT.md](SUPPORT.md) and [SECURITY.md](SECURITY.md).
|
|
18
|
+
- **A second maintainer is actively welcome.** It is the single highest-value
|
|
19
|
+
contribution to the project's longevity. The path is the usual one: read
|
|
20
|
+
[CONTRIBUTING.md](CONTRIBUTING.md), pick up an issue, and land a few
|
|
21
|
+
well-scoped MRs; sustained, high-quality contribution earns commit rights.
|