aXqua 1.0.1__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.
- axqua-1.0.1/LICENSE +28 -0
- axqua-1.0.1/NOTICE +43 -0
- axqua-1.0.1/PKG-INFO +118 -0
- axqua-1.0.1/README.md +71 -0
- axqua-1.0.1/pyproject.toml +130 -0
- axqua-1.0.1/setup.cfg +4 -0
- axqua-1.0.1/src/aXqua.egg-info/PKG-INFO +118 -0
- axqua-1.0.1/src/aXqua.egg-info/SOURCES.txt +276 -0
- axqua-1.0.1/src/aXqua.egg-info/dependency_links.txt +1 -0
- axqua-1.0.1/src/aXqua.egg-info/entry_points.txt +7 -0
- axqua-1.0.1/src/aXqua.egg-info/requires.txt +21 -0
- axqua-1.0.1/src/aXqua.egg-info/top_level.txt +1 -0
- axqua-1.0.1/src/axqua/__init__.py +238 -0
- axqua-1.0.1/src/axqua/__main__.py +16 -0
- axqua-1.0.1/src/axqua/bayescal.py +714 -0
- axqua-1.0.1/src/axqua/boundary.py +19 -0
- axqua-1.0.1/src/axqua/calibration.py +464 -0
- axqua-1.0.1/src/axqua/campaigns.py +249 -0
- axqua-1.0.1/src/axqua/casecli.py +164 -0
- axqua-1.0.1/src/axqua/cleanup.py +668 -0
- axqua-1.0.1/src/axqua/cleanupcli.py +75 -0
- axqua-1.0.1/src/axqua/cli.py +816 -0
- axqua-1.0.1/src/axqua/config.py +2708 -0
- axqua-1.0.1/src/axqua/convergence.py +1368 -0
- axqua-1.0.1/src/axqua/core/__init__.py +31 -0
- axqua-1.0.1/src/axqua/core/boundaries.py +128 -0
- axqua-1.0.1/src/axqua/core/capabilities.py +399 -0
- axqua-1.0.1/src/axqua/core/casecheck.py +271 -0
- axqua-1.0.1/src/axqua/core/casefile.py +62 -0
- axqua-1.0.1/src/axqua/core/diagnostics.py +85 -0
- axqua-1.0.1/src/axqua/core/environment.py +512 -0
- axqua-1.0.1/src/axqua/core/errors.py +168 -0
- axqua-1.0.1/src/axqua/core/examples.py +343 -0
- axqua-1.0.1/src/axqua/core/geodata.py +463 -0
- axqua-1.0.1/src/axqua/core/machine.py +250 -0
- axqua-1.0.1/src/axqua/core/profile.py +858 -0
- axqua-1.0.1/src/axqua/core/raster.py +53 -0
- axqua-1.0.1/src/axqua/core/registry.py +373 -0
- axqua-1.0.1/src/axqua/core/schema.py +223 -0
- axqua-1.0.1/src/axqua/core/schema_meta.py +583 -0
- axqua-1.0.1/src/axqua/core/selafin.py +405 -0
- axqua-1.0.1/src/axqua/core/structures.py +604 -0
- axqua-1.0.1/src/axqua/core/surfaces.py +730 -0
- axqua-1.0.1/src/axqua/dem.py +341 -0
- axqua-1.0.1/src/axqua/docscli.py +208 -0
- axqua-1.0.1/src/axqua/env.py +240 -0
- axqua-1.0.1/src/axqua/examplecli.py +62 -0
- axqua-1.0.1/src/axqua/exportcli.py +183 -0
- axqua-1.0.1/src/axqua/flowtracker.py +366 -0
- axqua-1.0.1/src/axqua/flux_convergence.py +19 -0
- axqua-1.0.1/src/axqua/fortran.py +19 -0
- axqua-1.0.1/src/axqua/gainlose.py +19 -0
- axqua-1.0.1/src/axqua/georef.py +273 -0
- axqua-1.0.1/src/axqua/ground_truth.py +681 -0
- axqua-1.0.1/src/axqua/ground_truth_qa.py +239 -0
- axqua-1.0.1/src/axqua/gui/__init__.py +5 -0
- axqua-1.0.1/src/axqua/gui/app.py +914 -0
- axqua-1.0.1/src/axqua/gui/launch.py +30 -0
- axqua-1.0.1/src/axqua/hbc.py +319 -0
- axqua-1.0.1/src/axqua/hydraulics.py +209 -0
- axqua-1.0.1/src/axqua/install/__init__.py +12 -0
- axqua-1.0.1/src/axqua/install/host.py +144 -0
- axqua-1.0.1/src/axqua/install/recipes.py +1374 -0
- axqua-1.0.1/src/axqua/install/runner.py +637 -0
- axqua-1.0.1/src/axqua/install/telemac_examples.py +188 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/LICENSE +24 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/LICENSES/GPL-3.0-or-later.txt +674 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/README.md +47 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/THIRD_PARTY.md +20 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/VENDORED.md +14 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/cpp/olsenRatingCurve.H +343 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/docs/RATING_CURVE.md +34 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/docs/RECOVERY.md +144 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/docs/VISUALIZATION.md +40 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/examples/ratingCurveProperties +27 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/install.ps1 +61 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/install.py +6 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/README.md +13 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/Make/files +3 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/Make/options +18 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/UEqn.H +24 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/createFields.H +168 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/createPhiC.H +82 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/pEqn.H +50 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/sediDriftFoam.C +194 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam/sediDriftFoam1.C +218 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/Make/files +3 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/Make/options +29 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/UEqn.H +24 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/computevx.h +66 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/computevx1.h +36 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/computevx2.h +34 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/computevx3.h +53 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/computevx4.h +36 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/createFields.H +134 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/createPhiC.H +82 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/pEqn.H +50 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/olsen-sources/sediDriftFoam2/sediDriftFoam2.C +456 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/postprocess.py +144 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/__init__.py +1 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/core.py +269 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/installer.py +565 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/olsen_patch.py +156 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/olsen_sources.json +27 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/sediment_installer/visualization.py +170 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_archive_cache.py +184 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_core.py +533 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_olsen_bundle.py +56 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_olsen_patch.py +120 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_shell_env.py +336 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_smoke_rerun.py +79 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_upstream_environment.py +263 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/tests/test_visualization.py +172 -0
- axqua-1.0.1/src/axqua/install/vendor/OpenFOAM-installer/undo_installation.sh +8 -0
- axqua-1.0.1/src/axqua/installcli.py +325 -0
- axqua-1.0.1/src/axqua/jobcli.py +674 -0
- axqua-1.0.1/src/axqua/jobs/__init__.py +110 -0
- axqua-1.0.1/src/axqua/jobs/events.py +291 -0
- axqua-1.0.1/src/axqua/jobs/executor.py +535 -0
- axqua-1.0.1/src/axqua/jobs/ids.py +92 -0
- axqua-1.0.1/src/axqua/jobs/index.py +346 -0
- axqua-1.0.1/src/axqua/jobs/interaction.py +99 -0
- axqua-1.0.1/src/axqua/jobs/launcher.py +240 -0
- axqua-1.0.1/src/axqua/jobs/launchers/__init__.py +6 -0
- axqua-1.0.1/src/axqua/jobs/launchers/posix.py +135 -0
- axqua-1.0.1/src/axqua/jobs/launchers/systemd.py +183 -0
- axqua-1.0.1/src/axqua/jobs/launchers/windows.py +227 -0
- axqua-1.0.1/src/axqua/jobs/launchers/wsl.py +173 -0
- axqua-1.0.1/src/axqua/jobs/lock.py +185 -0
- axqua-1.0.1/src/axqua/jobs/logs.py +153 -0
- axqua-1.0.1/src/axqua/jobs/model.py +843 -0
- axqua-1.0.1/src/axqua/jobs/paths.py +295 -0
- axqua-1.0.1/src/axqua/jobs/procs.py +214 -0
- axqua-1.0.1/src/axqua/jobs/profiles.py +350 -0
- axqua-1.0.1/src/axqua/jobs/reaper.py +137 -0
- axqua-1.0.1/src/axqua/jobs/results.py +165 -0
- axqua-1.0.1/src/axqua/jobs/store.py +206 -0
- axqua-1.0.1/src/axqua/jobs/submit.py +271 -0
- axqua-1.0.1/src/axqua/jobs/workspace.py +237 -0
- axqua-1.0.1/src/axqua/labdata.py +294 -0
- axqua-1.0.1/src/axqua/logsetup.py +135 -0
- axqua-1.0.1/src/axqua/mesh.py +19 -0
- axqua-1.0.1/src/axqua/mesh_quality.py +19 -0
- axqua-1.0.1/src/axqua/mesh_validity.py +255 -0
- axqua-1.0.1/src/axqua/model_column.py +285 -0
- axqua-1.0.1/src/axqua/openfoam.py +24 -0
- axqua-1.0.1/src/axqua/pipeline.py +19 -0
- axqua-1.0.1/src/axqua/positional_error.py +161 -0
- axqua-1.0.1/src/axqua/postproc/__init__.py +57 -0
- axqua-1.0.1/src/axqua/postproc/dataset.py +65 -0
- axqua-1.0.1/src/axqua/postproc/profiles.py +173 -0
- axqua-1.0.1/src/axqua/postproc/render.py +179 -0
- axqua-1.0.1/src/axqua/postproc/scenes.py +156 -0
- axqua-1.0.1/src/axqua/postproc/selafin_vtk.py +420 -0
- axqua-1.0.1/src/axqua/postproc/visit.py +400 -0
- axqua-1.0.1/src/axqua/prerun.py +535 -0
- axqua-1.0.1/src/axqua/profilecli.py +157 -0
- axqua-1.0.1/src/axqua/progress.py +227 -0
- axqua-1.0.1/src/axqua/rating.py +472 -0
- axqua-1.0.1/src/axqua/sections.py +19 -0
- axqua-1.0.1/src/axqua/selafin.py +16 -0
- axqua-1.0.1/src/axqua/solvers/__init__.py +12 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/__init__.py +98 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/backend.py +511 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/calibration.py +991 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/case.py +539 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/convergence.py +171 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/dicts.py +931 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/fields.py +576 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/hotstart.py +468 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/layout.py +110 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/mesh.py +1313 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/planview.py +296 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/polymesh.py +401 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/potential.py +459 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/quality.py +446 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/report.py +730 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/runtime.py +294 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/sediment.py +1484 -0
- axqua-1.0.1/src/axqua/solvers/openfoam/spec.py +178 -0
- axqua-1.0.1/src/axqua/solvers/telemac/__init__.py +40 -0
- axqua-1.0.1/src/axqua/solvers/telemac/backend.py +565 -0
- axqua-1.0.1/src/axqua/solvers/telemac/boundary.py +680 -0
- axqua-1.0.1/src/axqua/solvers/telemac/flux_convergence.py +482 -0
- axqua-1.0.1/src/axqua/solvers/telemac/fortran.py +700 -0
- axqua-1.0.1/src/axqua/solvers/telemac/gainlose.py +176 -0
- axqua-1.0.1/src/axqua/solvers/telemac/mesh.py +946 -0
- axqua-1.0.1/src/axqua/solvers/telemac/mesh_quality.py +315 -0
- axqua-1.0.1/src/axqua/solvers/telemac/pipeline.py +297 -0
- axqua-1.0.1/src/axqua/solvers/telemac/sections.py +213 -0
- axqua-1.0.1/src/axqua/solvers/telemac/sortie.py +608 -0
- axqua-1.0.1/src/axqua/solvers/telemac/spec.py +192 -0
- axqua-1.0.1/src/axqua/solvers/telemac/steering.py +1421 -0
- axqua-1.0.1/src/axqua/solvers/telemac/threed.py +584 -0
- axqua-1.0.1/src/axqua/solvers/telemac/unsteady.py +315 -0
- axqua-1.0.1/src/axqua/solvers/telemac/watertable.py +303 -0
- axqua-1.0.1/src/axqua/solvers/telemac/wetting.py +443 -0
- axqua-1.0.1/src/axqua/sortie.py +19 -0
- axqua-1.0.1/src/axqua/steering.py +19 -0
- axqua-1.0.1/src/axqua/surface_stage.py +433 -0
- axqua-1.0.1/src/axqua/targets.py +820 -0
- axqua-1.0.1/src/axqua/threed.py +19 -0
- axqua-1.0.1/src/axqua/unsteady.py +19 -0
- axqua-1.0.1/src/axqua/validation.py +614 -0
- axqua-1.0.1/src/axqua/validationcli.py +103 -0
- axqua-1.0.1/src/axqua/vertical_convergence.py +460 -0
- axqua-1.0.1/src/axqua/watertable.py +19 -0
- axqua-1.0.1/src/axqua/wetting.py +19 -0
- axqua-1.0.1/src/axqua/workflow.py +457 -0
- axqua-1.0.1/tests/test_backends.py +337 -0
- axqua-1.0.1/tests/test_bayescal_staging.py +276 -0
- axqua-1.0.1/tests/test_boundary.py +364 -0
- axqua-1.0.1/tests/test_calibration_progress.py +114 -0
- axqua-1.0.1/tests/test_calibration_solver.py +67 -0
- axqua-1.0.1/tests/test_campaigns.py +79 -0
- axqua-1.0.1/tests/test_capabilities.py +461 -0
- axqua-1.0.1/tests/test_casecheck.py +347 -0
- axqua-1.0.1/tests/test_cleanup.py +444 -0
- axqua-1.0.1/tests/test_cli_jobs.py +464 -0
- axqua-1.0.1/tests/test_convergence.py +529 -0
- axqua-1.0.1/tests/test_docs_i18n.py +442 -0
- axqua-1.0.1/tests/test_docs_outline.py +254 -0
- axqua-1.0.1/tests/test_docscli.py +128 -0
- axqua-1.0.1/tests/test_dod.py +129 -0
- axqua-1.0.1/tests/test_env.py +110 -0
- axqua-1.0.1/tests/test_environment.py +382 -0
- axqua-1.0.1/tests/test_examples.py +364 -0
- axqua-1.0.1/tests/test_flowtracker.py +218 -0
- axqua-1.0.1/tests/test_flux_convergence.py +513 -0
- axqua-1.0.1/tests/test_gainlose.py +213 -0
- axqua-1.0.1/tests/test_geodata.py +278 -0
- axqua-1.0.1/tests/test_georef.py +243 -0
- axqua-1.0.1/tests/test_ground_truth_points.py +149 -0
- axqua-1.0.1/tests/test_install.py +1464 -0
- axqua-1.0.1/tests/test_integration.py +195 -0
- axqua-1.0.1/tests/test_jobs_events.py +302 -0
- axqua-1.0.1/tests/test_jobs_executor.py +483 -0
- axqua-1.0.1/tests/test_jobs_index.py +136 -0
- axqua-1.0.1/tests/test_jobs_launcher.py +302 -0
- axqua-1.0.1/tests/test_jobs_model.py +236 -0
- axqua-1.0.1/tests/test_jobs_store.py +250 -0
- axqua-1.0.1/tests/test_jobs_workspace.py +176 -0
- axqua-1.0.1/tests/test_labdata.py +264 -0
- axqua-1.0.1/tests/test_limit_stop.py +154 -0
- axqua-1.0.1/tests/test_logging.py +93 -0
- axqua-1.0.1/tests/test_machine.py +211 -0
- axqua-1.0.1/tests/test_mesh_quality.py +126 -0
- axqua-1.0.1/tests/test_mesh_validity.py +93 -0
- axqua-1.0.1/tests/test_mesh_zones.py +127 -0
- axqua-1.0.1/tests/test_openfoam.py +2240 -0
- axqua-1.0.1/tests/test_openfoam_calibration.py +853 -0
- axqua-1.0.1/tests/test_openfoam_convergence.py +377 -0
- axqua-1.0.1/tests/test_openfoam_rating_outlet.py +94 -0
- axqua-1.0.1/tests/test_positional_error.py +154 -0
- axqua-1.0.1/tests/test_postproc.py +408 -0
- axqua-1.0.1/tests/test_prerun.py +473 -0
- axqua-1.0.1/tests/test_prewet.py +526 -0
- axqua-1.0.1/tests/test_profile.py +897 -0
- axqua-1.0.1/tests/test_profile_rules.py +192 -0
- axqua-1.0.1/tests/test_progress.py +68 -0
- axqua-1.0.1/tests/test_rating.py +198 -0
- axqua-1.0.1/tests/test_rename_compat.py +244 -0
- axqua-1.0.1/tests/test_roughness.py +210 -0
- axqua-1.0.1/tests/test_schema.py +234 -0
- axqua-1.0.1/tests/test_sections.py +165 -0
- axqua-1.0.1/tests/test_sediment.py +1093 -0
- axqua-1.0.1/tests/test_selafin_vtk.py +428 -0
- axqua-1.0.1/tests/test_source_regions.py +484 -0
- axqua-1.0.1/tests/test_structures.py +617 -0
- axqua-1.0.1/tests/test_surface_stage.py +272 -0
- axqua-1.0.1/tests/test_surfaces.py +418 -0
- axqua-1.0.1/tests/test_targets.py +298 -0
- axqua-1.0.1/tests/test_threed.py +108 -0
- axqua-1.0.1/tests/test_unsteady.py +198 -0
- axqua-1.0.1/tests/test_validation.py +331 -0
- axqua-1.0.1/tests/test_vertical_convergence.py +106 -0
- axqua-1.0.1/tests/test_watertable.py +217 -0
- axqua-1.0.1/tests/test_wetting.py +282 -0
axqua-1.0.1/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Sebastian Schwindt
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
axqua-1.0.1/NOTICE
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
axqua
|
|
2
|
+
Copyright (c) 2026, Sebastian Schwindt
|
|
3
|
+
Licensed under the BSD 3-Clause License (see LICENSE).
|
|
4
|
+
|
|
5
|
+
--------------------------------------------------------------------------------
|
|
6
|
+
Third-party acknowledgements
|
|
7
|
+
--------------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
axqua.sortie / axqua.flux_convergence
|
|
10
|
+
---------------------------------------------
|
|
11
|
+
The TELEMAC listing (".sortie") reader and the boundary-flux convergence analysis
|
|
12
|
+
were adopted from the `pythomac` package (https://github.com/hydro-informatics/
|
|
13
|
+
pythomac), lead author Sebastian Schwindt, who is also the author of axqua and
|
|
14
|
+
authorized the adoption. The analysis reproduces pythomac's behavior and writes the
|
|
15
|
+
same four output files (extracted-fluxes.csv, flux-convergence.png,
|
|
16
|
+
convergence-rate.csv, convergence-rate.png).
|
|
17
|
+
|
|
18
|
+
The implementation here is an independent one written against TELEMAC's output
|
|
19
|
+
format, not a copy. That is deliberate: pythomac's own listing parser
|
|
20
|
+
(`parser_output.py`) and its `utils/files.py` / `utils/exceptions.py` are adapted
|
|
21
|
+
from TELEMAC-MASCARET's `HOMETEL/scripts/python3/postel` under the GNU GPL v3 and
|
|
22
|
+
carry the TELEMAC-MASCARET Consortium's copyright, which is not axqua's or
|
|
23
|
+
pythomac's to relicense. axqua therefore reimplements the parsing rather than
|
|
24
|
+
vendoring those files, and the GAIA / tracer mass-balance field lists in
|
|
25
|
+
axqua.sortie were re-derived from the FORTRAN FORMAT statements in TELEMAC
|
|
26
|
+
v9.1.1 (`sources/gaia/mass_balance.f`, `sources/telemac3d/bil3d.f`).
|
|
27
|
+
|
|
28
|
+
TELEMAC-MASCARET (http://www.opentelemac.org) is a separate program, invoked by
|
|
29
|
+
axqua as an external solver; none of its source is included or linked here.
|
|
30
|
+
|
|
31
|
+
docs/img/active-layer.jpg
|
|
32
|
+
-------------------------
|
|
33
|
+
The illustration of the active layer in the documentation is taken unchanged from the
|
|
34
|
+
eBook Hydro-Informatics (https://hydro-informatics.com, file
|
|
35
|
+
`img/telemac/active-layers-web.jpg`), author Sebastian Schwindt, who is also the author
|
|
36
|
+
of axqua and authorized its use here. The image carries a Creative Commons
|
|
37
|
+
BY-NC-ND mark and is NOT covered by the BSD 3-Clause License of this repository.
|
|
38
|
+
|
|
39
|
+
src/axqua/install/vendor/OpenFOAM-installer/
|
|
40
|
+
---------------------------------------------
|
|
41
|
+
A copy of the OpenFOAM installer of https://github.com/Ecohydraulics/numerical-software-installers (commit 12fcb7e, MIT License, see its LICENSE), with the changes listed in its VENDORED.md. It is NOT covered by the BSD 3-Clause License of this repository.
|
|
42
|
+
|
|
43
|
+
Its folder olsen-sources/ holds the source files of the sediment solvers sediDriftFoam and sediDriftFoam2 by Nils Reidar B. Olsen, unchanged, under the GNU General Public License version 3 or later (text in LICENSES/GPL-3.0-or-later.txt), as is cpp/olsenRatingCurve.H. They are shipped as an aggregate: aXqua neither links nor imports them, the installer compiles them into separate programs, and aXqua runs those programs as external solvers. The GPL therefore applies to these files and the programs built from them, not to aXqua.
|
axqua-1.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aXqua
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Automated setup, persistent execution and calibration of river models - TELEMAC-2D/3D with GAIA, and OpenFOAM interFoam - with a QGIS frontend.
|
|
5
|
+
Author: Sebastian Schwindt
|
|
6
|
+
License-Expression: BSD-3-Clause AND MIT AND GPL-3.0-or-later
|
|
7
|
+
Project-URL: Documentation, https://axqua.eu
|
|
8
|
+
Project-URL: Source, https://github.com/sschwindt/aXqua
|
|
9
|
+
Project-URL: Issues, https://github.com/sschwindt/aXqua/issues
|
|
10
|
+
Project-URL: Releases, https://github.com/sschwindt/aXqua/releases
|
|
11
|
+
Keywords: TELEMAC,OpenFOAM,river modeling,hydraulics,sediment transport,Bayesian calibration,QGIS,mesh generation
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Hydrology
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
License-File: NOTICE
|
|
26
|
+
License-File: src/axqua/install/vendor/OpenFOAM-installer/LICENSE
|
|
27
|
+
License-File: src/axqua/install/vendor/OpenFOAM-installer/LICENSES/GPL-3.0-or-later.txt
|
|
28
|
+
Requires-Dist: numpy
|
|
29
|
+
Requires-Dist: pandas
|
|
30
|
+
Requires-Dist: scipy
|
|
31
|
+
Requires-Dist: pyyaml
|
|
32
|
+
Requires-Dist: pyproj
|
|
33
|
+
Requires-Dist: shapely>=2.0
|
|
34
|
+
Requires-Dist: geopandas
|
|
35
|
+
Requires-Dist: rasterio
|
|
36
|
+
Requires-Dist: gmsh>=4.13
|
|
37
|
+
Requires-Dist: openpyxl>=3.1
|
|
38
|
+
Requires-Dist: matplotlib
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: pytest; extra == "dev"
|
|
41
|
+
Requires-Dist: ruff; extra == "dev"
|
|
42
|
+
Provides-Extra: gui
|
|
43
|
+
Requires-Dist: streamlit>=1.30; extra == "gui"
|
|
44
|
+
Provides-Extra: calibration
|
|
45
|
+
Requires-Dist: hydrobayescal>=1.8.1; extra == "calibration"
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
|
|
48
|
+
# aXqua
|
|
49
|
+
|
|
50
|
+
**Automated setup, persistent execution and calibration of models of free-surface water bodies: rivers, lakes, reservoirs and hydraulic structures.**
|
|
51
|
+
|
|
52
|
+
aXqua builds a **TELEMAC-2D/3D** case (optionally with **GAIA**) or an **OpenFOAM** free-surface case from geodata, runs it as a job that outlives the shell or QGIS that started it, and calibrates it with [HydroBayesCal](https://github.com/Ecohydraulics/hydrobayescal) (surrogate-assisted Bayesian calibration with quantified uncertainty). A **QGIS plugin** drives the whole workflow; everything also works from a terminal.
|
|
53
|
+
|
|
54
|
+
**Documentation:** [axqua.eu](https://axqua.eu) (English), [axqua.eu/de](https://axqua.eu/de/) (Deutsch), [axqua.eu/fr](https://axqua.eu/fr/) (Français), and [axqua.readthedocs.io](https://axqua.readthedocs.io) (English).
|
|
55
|
+
|
|
56
|
+
## Install
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pip install axqua # Python 3.10 or newer, best in an environment of its own
|
|
60
|
+
axqua profile init # find TELEMAC, OpenFOAM, ParaView, VisIt on this computer
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`pip install "axqua[calibration]"` adds HydroBayesCal for the Bayesian calibration. For development, install from a clone of this repository:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mamba env create -f environment.yml # the environment axqua-env
|
|
67
|
+
mamba activate axqua-env
|
|
68
|
+
pip install -e .
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The QGIS plugin (QGIS 3.44 or newer) is `qgis_plugin/axqua/`; for development link it into a QGIS profile, or start `scripts/qgis_dev.sh`, which uses a QGIS of its own. The installation of the plugin and of the simulation software is described in the [documentation](https://axqua.eu/installation/index.html).
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
axqua example get --folder ~/aXqua-examples # a small Isar case with its data (6 MB)
|
|
77
|
+
axqua submit <case-file> --kind preprocessing # build the TELEMAC model, as a job
|
|
78
|
+
axqua submit <case-file> --kind steady # the steady 2D run (waits for the build)
|
|
79
|
+
axqua list # the jobs, with state and progress
|
|
80
|
+
axqua cleanup <case-file> # what the case could do without (frees disk space)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The example case and its guide are in [`cases/example-isar/`](https://github.com/sschwindt/aXqua/blob/main/cases/example-isar/README.md). Every command is listed in the [terminal syntax](https://axqua.eu/automation/terminal-syntax.html).
|
|
84
|
+
|
|
85
|
+
## Repository
|
|
86
|
+
|
|
87
|
+
| Folder | Content |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `src/axqua/` | the library and the command `axqua` |
|
|
90
|
+
| `qgis_plugin/axqua/` | the QGIS plugin (GPL-2.0-or-later; it talks to `axqua` only through the command line) |
|
|
91
|
+
| `cases/` | the example cases and the template of a case; case data (`user-sources/`) and results (`axqua-case/`) are not tracked |
|
|
92
|
+
| `docs/` | the documentation (Sphinx); `docs/locale/` holds its German and French translations |
|
|
93
|
+
| `tests/`, `qgis_plugin/tests/` | the tests (`pytest tests qgis_plugin/tests`) |
|
|
94
|
+
| `scripts/` | tools: plugin archive, screenshots and UML diagrams of the documentation, data of the example case, backup of case data to Google Drive (`backup_cases_to_drive.sh`, rclone) |
|
|
95
|
+
| `deploy.sh` | publishes the documentation (below) |
|
|
96
|
+
|
|
97
|
+
## Documentation: build and publish
|
|
98
|
+
|
|
99
|
+
Build the English pages alone (Sphinx and the theme suffice; heavy dependencies are mocked):
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pip install -r docs/requirements-docs.txt
|
|
103
|
+
sphinx-build -W -b html docs docs/_build/html
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Build and publish all three languages on GitHub Pages:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
mamba env create -f docs/i18n/environment.yml # once: the environment axqua-docs (Sphinx + Argos Translate)
|
|
110
|
+
bash deploy.sh # build into docs/_build/site and copy it into the gh-pages worktree
|
|
111
|
+
bash deploy.sh --push # ... then push main and gh-pages: the site is live within a minute
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`deploy.sh` translates only the paragraphs that are new or changed since the last deploy (seconds; `--retranslate` translates everything again, about 4 minutes), commits the updated catalogs `docs/locale/**.po` on `main`, pushes `main` and then the branch `gh-pages`, which GitHub Pages serves at `https://axqua.eu`. It refuses to run with uncommitted changes. Read the Docs builds the English pages from `main` by itself. The glossaries of technical terms, corrections of a translation by hand and the other settings are described in [`docs/i18n/README.md`](https://github.com/sschwindt/aXqua/blob/main/docs/i18n/README.md).
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
aXqua is BSD-3-Clause; the QGIS plugin is GPL-2.0-or-later. The data of the example case are CC BY 4.0 (`cases/example-isar/LICENSE.md`). Coordinates are EPSG:25832 throughout; see `CLAUDE.md` for the notes of the developers.
|
axqua-1.0.1/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# aXqua
|
|
2
|
+
|
|
3
|
+
**Automated setup, persistent execution and calibration of models of free-surface water bodies: rivers, lakes, reservoirs and hydraulic structures.**
|
|
4
|
+
|
|
5
|
+
aXqua builds a **TELEMAC-2D/3D** case (optionally with **GAIA**) or an **OpenFOAM** free-surface case from geodata, runs it as a job that outlives the shell or QGIS that started it, and calibrates it with [HydroBayesCal](https://github.com/Ecohydraulics/hydrobayescal) (surrogate-assisted Bayesian calibration with quantified uncertainty). A **QGIS plugin** drives the whole workflow; everything also works from a terminal.
|
|
6
|
+
|
|
7
|
+
**Documentation:** [axqua.eu](https://axqua.eu) (English), [axqua.eu/de](https://axqua.eu/de/) (Deutsch), [axqua.eu/fr](https://axqua.eu/fr/) (Français), and [axqua.readthedocs.io](https://axqua.readthedocs.io) (English).
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install axqua # Python 3.10 or newer, best in an environment of its own
|
|
13
|
+
axqua profile init # find TELEMAC, OpenFOAM, ParaView, VisIt on this computer
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`pip install "axqua[calibration]"` adds HydroBayesCal for the Bayesian calibration. For development, install from a clone of this repository:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
mamba env create -f environment.yml # the environment axqua-env
|
|
20
|
+
mamba activate axqua-env
|
|
21
|
+
pip install -e .
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The QGIS plugin (QGIS 3.44 or newer) is `qgis_plugin/axqua/`; for development link it into a QGIS profile, or start `scripts/qgis_dev.sh`, which uses a QGIS of its own. The installation of the plugin and of the simulation software is described in the [documentation](https://axqua.eu/installation/index.html).
|
|
25
|
+
|
|
26
|
+
## Quick start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
axqua example get --folder ~/aXqua-examples # a small Isar case with its data (6 MB)
|
|
30
|
+
axqua submit <case-file> --kind preprocessing # build the TELEMAC model, as a job
|
|
31
|
+
axqua submit <case-file> --kind steady # the steady 2D run (waits for the build)
|
|
32
|
+
axqua list # the jobs, with state and progress
|
|
33
|
+
axqua cleanup <case-file> # what the case could do without (frees disk space)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The example case and its guide are in [`cases/example-isar/`](https://github.com/sschwindt/aXqua/blob/main/cases/example-isar/README.md). Every command is listed in the [terminal syntax](https://axqua.eu/automation/terminal-syntax.html).
|
|
37
|
+
|
|
38
|
+
## Repository
|
|
39
|
+
|
|
40
|
+
| Folder | Content |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `src/axqua/` | the library and the command `axqua` |
|
|
43
|
+
| `qgis_plugin/axqua/` | the QGIS plugin (GPL-2.0-or-later; it talks to `axqua` only through the command line) |
|
|
44
|
+
| `cases/` | the example cases and the template of a case; case data (`user-sources/`) and results (`axqua-case/`) are not tracked |
|
|
45
|
+
| `docs/` | the documentation (Sphinx); `docs/locale/` holds its German and French translations |
|
|
46
|
+
| `tests/`, `qgis_plugin/tests/` | the tests (`pytest tests qgis_plugin/tests`) |
|
|
47
|
+
| `scripts/` | tools: plugin archive, screenshots and UML diagrams of the documentation, data of the example case, backup of case data to Google Drive (`backup_cases_to_drive.sh`, rclone) |
|
|
48
|
+
| `deploy.sh` | publishes the documentation (below) |
|
|
49
|
+
|
|
50
|
+
## Documentation: build and publish
|
|
51
|
+
|
|
52
|
+
Build the English pages alone (Sphinx and the theme suffice; heavy dependencies are mocked):
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pip install -r docs/requirements-docs.txt
|
|
56
|
+
sphinx-build -W -b html docs docs/_build/html
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Build and publish all three languages on GitHub Pages:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
mamba env create -f docs/i18n/environment.yml # once: the environment axqua-docs (Sphinx + Argos Translate)
|
|
63
|
+
bash deploy.sh # build into docs/_build/site and copy it into the gh-pages worktree
|
|
64
|
+
bash deploy.sh --push # ... then push main and gh-pages: the site is live within a minute
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`deploy.sh` translates only the paragraphs that are new or changed since the last deploy (seconds; `--retranslate` translates everything again, about 4 minutes), commits the updated catalogs `docs/locale/**.po` on `main`, pushes `main` and then the branch `gh-pages`, which GitHub Pages serves at `https://axqua.eu`. It refuses to run with uncommitted changes. Read the Docs builds the English pages from `main` by itself. The glossaries of technical terms, corrections of a translation by hand and the other settings are described in [`docs/i18n/README.md`](https://github.com/sschwindt/aXqua/blob/main/docs/i18n/README.md).
|
|
68
|
+
|
|
69
|
+
## License
|
|
70
|
+
|
|
71
|
+
aXqua is BSD-3-Clause; the QGIS plugin is GPL-2.0-or-later. The data of the example case are CC BY 4.0 (`cases/example-isar/LICENSE.md`). Coordinates are EPSG:25832 throughout; see `CLAUDE.md` for the notes of the developers.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
# 77: the license expression and license-files of PEP 639.
|
|
3
|
+
requires = ["setuptools>=77", "wheel"]
|
|
4
|
+
build-backend = "setuptools.build_meta"
|
|
5
|
+
|
|
6
|
+
[project]
|
|
7
|
+
# Branded on PyPI; the import package is plain lowercase `axqua`, because a mixed-case
|
|
8
|
+
# module name resolves differently on case-insensitive filesystems. PyPI normalizes the
|
|
9
|
+
# two to the same project, so `pip install aXqua` and `pip install axqua` both work.
|
|
10
|
+
name = "aXqua"
|
|
11
|
+
version = "1.0.1"
|
|
12
|
+
description = "Automated setup, persistent execution and calibration of river models - TELEMAC-2D/3D with GAIA, and OpenFOAM interFoam - with a QGIS frontend."
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
requires-python = ">=3.10"
|
|
15
|
+
# aXqua is BSD-3-Clause. The wheel also carries the vendored OpenFOAM installer (MIT) and
|
|
16
|
+
# Olsen's solver sources (GPL-3.0-or-later), which aXqua runs as separate programs and
|
|
17
|
+
# never imports or links (NOTICE); PyPI shows this expression, so it names all three.
|
|
18
|
+
license = "BSD-3-Clause AND MIT AND GPL-3.0-or-later"
|
|
19
|
+
license-files = [
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"NOTICE",
|
|
22
|
+
"src/axqua/install/vendor/OpenFOAM-installer/LICENSE",
|
|
23
|
+
"src/axqua/install/vendor/OpenFOAM-installer/LICENSES/*",
|
|
24
|
+
]
|
|
25
|
+
authors = [{ name = "Sebastian Schwindt" }]
|
|
26
|
+
keywords = ["TELEMAC", "OpenFOAM", "river modeling", "hydraulics", "sediment transport",
|
|
27
|
+
"Bayesian calibration", "QGIS", "mesh generation"]
|
|
28
|
+
classifiers = [
|
|
29
|
+
"Development Status :: 5 - Production/Stable",
|
|
30
|
+
"Intended Audience :: Science/Research",
|
|
31
|
+
"Topic :: Scientific/Engineering :: Hydrology",
|
|
32
|
+
"Topic :: Scientific/Engineering :: GIS",
|
|
33
|
+
"Operating System :: POSIX :: Linux",
|
|
34
|
+
"Programming Language :: Python :: 3",
|
|
35
|
+
"Programming Language :: Python :: 3.10",
|
|
36
|
+
"Programming Language :: Python :: 3.11",
|
|
37
|
+
"Programming Language :: Python :: 3.12",
|
|
38
|
+
"Programming Language :: Python :: 3.13",
|
|
39
|
+
]
|
|
40
|
+
dependencies = [
|
|
41
|
+
"numpy",
|
|
42
|
+
"pandas",
|
|
43
|
+
"scipy",
|
|
44
|
+
"pyyaml",
|
|
45
|
+
"pyproj",
|
|
46
|
+
"shapely>=2.0",
|
|
47
|
+
"geopandas",
|
|
48
|
+
"rasterio",
|
|
49
|
+
"gmsh>=4.13",
|
|
50
|
+
"openpyxl>=3.1",
|
|
51
|
+
# flux-convergence + cross-section plots and the P1 triangle interpolation
|
|
52
|
+
# (axqua.flux_convergence, axqua.sections); previously pulled in
|
|
53
|
+
# transitively by pythomac, which the flux analysis no longer uses.
|
|
54
|
+
"matplotlib",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[project.urls]
|
|
58
|
+
Documentation = "https://axqua.eu"
|
|
59
|
+
Source = "https://github.com/sschwindt/aXqua"
|
|
60
|
+
Issues = "https://github.com/sschwindt/aXqua/issues"
|
|
61
|
+
Releases = "https://github.com/sschwindt/aXqua/releases"
|
|
62
|
+
|
|
63
|
+
[project.optional-dependencies]
|
|
64
|
+
dev = ["pytest", "ruff"]
|
|
65
|
+
gui = ["streamlit>=1.30"]
|
|
66
|
+
# Surrogate-assisted Bayesian calibration (axqua.bayescal / axqua.calibration).
|
|
67
|
+
# An EXTRA rather than a core dependency: it pulls in bayesvalidrox, gpytorch and
|
|
68
|
+
# scikit-learn, none of which is needed to build or run a TELEMAC case, which is what
|
|
69
|
+
# most of axqua does.
|
|
70
|
+
#
|
|
71
|
+
# VERSION POLICY: a floor, never a ceiling. HydroBayesCal is developed alongside
|
|
72
|
+
# axqua by the same group, and its releases are bugfixes plus ADDITIVE features -
|
|
73
|
+
# nothing is removed. So the newest release is always the one to want, and an upper
|
|
74
|
+
# bound would only stop a user getting a fix. `pip install 'axqua[calibration]'`
|
|
75
|
+
# therefore resolves to the latest, and that is intended, not an oversight.
|
|
76
|
+
#
|
|
77
|
+
# The floor is the oldest release carrying a capability axqua actually uses, so a
|
|
78
|
+
# too-old install fails at install time rather than halfway through a calibration.
|
|
79
|
+
# What each step added, for the record:
|
|
80
|
+
# 1.4.2 ships the calibration drivers WITH the package (hydroBayesCal.copy_driver);
|
|
81
|
+
# before it they lived only in a source checkout that axqua had to be told
|
|
82
|
+
# the location of, which broke whenever it moved.
|
|
83
|
+
# 1.4.3 hoists save_calibration_data into HydroSimulations, fixing the "truth
|
|
84
|
+
# value of an array is ambiguous" crash on BAL's first iteration once for
|
|
85
|
+
# every binding, and writing the restart CSV that --resume relies on.
|
|
86
|
+
# 1.4.4 makes the MULTI-FLOW driver honor the config's `extraction` block;
|
|
87
|
+
# before it, multi-flow silently averaged the last frames while single-flow
|
|
88
|
+
# on the same config did not, so the two were fitted to different data.
|
|
89
|
+
#
|
|
90
|
+
# Beyond the floor, axqua does NOT check versions: `hbc.require_hbc` tests for the
|
|
91
|
+
# capability it needs (hasattr(hydroBayesCal, "copy_driver")). On an additive-only
|
|
92
|
+
# upstream that is the right test - a version comparison would need editing on every
|
|
93
|
+
# release, and would reject a valid newer one the moment the scheme changed.
|
|
94
|
+
calibration = ["hydrobayescal>=1.8.1"]
|
|
95
|
+
|
|
96
|
+
[project.scripts]
|
|
97
|
+
axqua = "axqua.cli:main"
|
|
98
|
+
axqua-gui = "axqua.gui.launch:main"
|
|
99
|
+
|
|
100
|
+
# Solver backends are discovered through this group, so a third solver is a
|
|
101
|
+
# `pip install axqua-<name>` rather than a fork. The built-ins register through the
|
|
102
|
+
# same mechanism they document, with a hard-coded fallback in core/registry.py for a
|
|
103
|
+
# source checkout that has not been re-installed.
|
|
104
|
+
[project.entry-points."axqua.solvers"]
|
|
105
|
+
telemac = "axqua.solvers.telemac.spec:SPEC"
|
|
106
|
+
openfoam = "axqua.solvers.openfoam.spec:SPEC"
|
|
107
|
+
|
|
108
|
+
[tool.setuptools.packages.find]
|
|
109
|
+
where = ["src"]
|
|
110
|
+
|
|
111
|
+
[tool.setuptools.package-data]
|
|
112
|
+
axqua = ["install/vendor/**/*"]
|
|
113
|
+
|
|
114
|
+
# The vendor glob above takes everything, also the bytecode a run of the installer's own
|
|
115
|
+
# tests leaves in a working tree. A wheel built from such a tree must not carry it.
|
|
116
|
+
[tool.setuptools.exclude-package-data]
|
|
117
|
+
axqua = ["**/__pycache__/*", "*.pyc"]
|
|
118
|
+
|
|
119
|
+
[tool.ruff]
|
|
120
|
+
line-length = 100
|
|
121
|
+
# A copy of another project, kept as close to its original as possible (VENDORED.md).
|
|
122
|
+
extend-exclude = ["src/axqua/install/vendor"]
|
|
123
|
+
|
|
124
|
+
[tool.ruff.lint]
|
|
125
|
+
# Pinned EXPLICITLY rather than left to ruff's defaults: those defaults widened in
|
|
126
|
+
# ruff 0.16, so the same `ruff check src/` went from clean to 88 findings purely by
|
|
127
|
+
# upgrading ruff on one machine (all of them style nits - intentional multi-line
|
|
128
|
+
# prose flagged as ISC004, deliberate `except Exception` reporting as BLE001).
|
|
129
|
+
# Naming the rule set makes the lint contract the same on every machine and in CI.
|
|
130
|
+
select = ["E4", "E7", "E9", "F"]
|
axqua-1.0.1/setup.cfg
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aXqua
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Automated setup, persistent execution and calibration of river models - TELEMAC-2D/3D with GAIA, and OpenFOAM interFoam - with a QGIS frontend.
|
|
5
|
+
Author: Sebastian Schwindt
|
|
6
|
+
License-Expression: BSD-3-Clause AND MIT AND GPL-3.0-or-later
|
|
7
|
+
Project-URL: Documentation, https://axqua.eu
|
|
8
|
+
Project-URL: Source, https://github.com/sschwindt/aXqua
|
|
9
|
+
Project-URL: Issues, https://github.com/sschwindt/aXqua/issues
|
|
10
|
+
Project-URL: Releases, https://github.com/sschwindt/aXqua/releases
|
|
11
|
+
Keywords: TELEMAC,OpenFOAM,river modeling,hydraulics,sediment transport,Bayesian calibration,QGIS,mesh generation
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Hydrology
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
License-File: NOTICE
|
|
26
|
+
License-File: src/axqua/install/vendor/OpenFOAM-installer/LICENSE
|
|
27
|
+
License-File: src/axqua/install/vendor/OpenFOAM-installer/LICENSES/GPL-3.0-or-later.txt
|
|
28
|
+
Requires-Dist: numpy
|
|
29
|
+
Requires-Dist: pandas
|
|
30
|
+
Requires-Dist: scipy
|
|
31
|
+
Requires-Dist: pyyaml
|
|
32
|
+
Requires-Dist: pyproj
|
|
33
|
+
Requires-Dist: shapely>=2.0
|
|
34
|
+
Requires-Dist: geopandas
|
|
35
|
+
Requires-Dist: rasterio
|
|
36
|
+
Requires-Dist: gmsh>=4.13
|
|
37
|
+
Requires-Dist: openpyxl>=3.1
|
|
38
|
+
Requires-Dist: matplotlib
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: pytest; extra == "dev"
|
|
41
|
+
Requires-Dist: ruff; extra == "dev"
|
|
42
|
+
Provides-Extra: gui
|
|
43
|
+
Requires-Dist: streamlit>=1.30; extra == "gui"
|
|
44
|
+
Provides-Extra: calibration
|
|
45
|
+
Requires-Dist: hydrobayescal>=1.8.1; extra == "calibration"
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
|
|
48
|
+
# aXqua
|
|
49
|
+
|
|
50
|
+
**Automated setup, persistent execution and calibration of models of free-surface water bodies: rivers, lakes, reservoirs and hydraulic structures.**
|
|
51
|
+
|
|
52
|
+
aXqua builds a **TELEMAC-2D/3D** case (optionally with **GAIA**) or an **OpenFOAM** free-surface case from geodata, runs it as a job that outlives the shell or QGIS that started it, and calibrates it with [HydroBayesCal](https://github.com/Ecohydraulics/hydrobayescal) (surrogate-assisted Bayesian calibration with quantified uncertainty). A **QGIS plugin** drives the whole workflow; everything also works from a terminal.
|
|
53
|
+
|
|
54
|
+
**Documentation:** [axqua.eu](https://axqua.eu) (English), [axqua.eu/de](https://axqua.eu/de/) (Deutsch), [axqua.eu/fr](https://axqua.eu/fr/) (Français), and [axqua.readthedocs.io](https://axqua.readthedocs.io) (English).
|
|
55
|
+
|
|
56
|
+
## Install
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pip install axqua # Python 3.10 or newer, best in an environment of its own
|
|
60
|
+
axqua profile init # find TELEMAC, OpenFOAM, ParaView, VisIt on this computer
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`pip install "axqua[calibration]"` adds HydroBayesCal for the Bayesian calibration. For development, install from a clone of this repository:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
mamba env create -f environment.yml # the environment axqua-env
|
|
67
|
+
mamba activate axqua-env
|
|
68
|
+
pip install -e .
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The QGIS plugin (QGIS 3.44 or newer) is `qgis_plugin/axqua/`; for development link it into a QGIS profile, or start `scripts/qgis_dev.sh`, which uses a QGIS of its own. The installation of the plugin and of the simulation software is described in the [documentation](https://axqua.eu/installation/index.html).
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
axqua example get --folder ~/aXqua-examples # a small Isar case with its data (6 MB)
|
|
77
|
+
axqua submit <case-file> --kind preprocessing # build the TELEMAC model, as a job
|
|
78
|
+
axqua submit <case-file> --kind steady # the steady 2D run (waits for the build)
|
|
79
|
+
axqua list # the jobs, with state and progress
|
|
80
|
+
axqua cleanup <case-file> # what the case could do without (frees disk space)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The example case and its guide are in [`cases/example-isar/`](https://github.com/sschwindt/aXqua/blob/main/cases/example-isar/README.md). Every command is listed in the [terminal syntax](https://axqua.eu/automation/terminal-syntax.html).
|
|
84
|
+
|
|
85
|
+
## Repository
|
|
86
|
+
|
|
87
|
+
| Folder | Content |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `src/axqua/` | the library and the command `axqua` |
|
|
90
|
+
| `qgis_plugin/axqua/` | the QGIS plugin (GPL-2.0-or-later; it talks to `axqua` only through the command line) |
|
|
91
|
+
| `cases/` | the example cases and the template of a case; case data (`user-sources/`) and results (`axqua-case/`) are not tracked |
|
|
92
|
+
| `docs/` | the documentation (Sphinx); `docs/locale/` holds its German and French translations |
|
|
93
|
+
| `tests/`, `qgis_plugin/tests/` | the tests (`pytest tests qgis_plugin/tests`) |
|
|
94
|
+
| `scripts/` | tools: plugin archive, screenshots and UML diagrams of the documentation, data of the example case, backup of case data to Google Drive (`backup_cases_to_drive.sh`, rclone) |
|
|
95
|
+
| `deploy.sh` | publishes the documentation (below) |
|
|
96
|
+
|
|
97
|
+
## Documentation: build and publish
|
|
98
|
+
|
|
99
|
+
Build the English pages alone (Sphinx and the theme suffice; heavy dependencies are mocked):
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pip install -r docs/requirements-docs.txt
|
|
103
|
+
sphinx-build -W -b html docs docs/_build/html
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Build and publish all three languages on GitHub Pages:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
mamba env create -f docs/i18n/environment.yml # once: the environment axqua-docs (Sphinx + Argos Translate)
|
|
110
|
+
bash deploy.sh # build into docs/_build/site and copy it into the gh-pages worktree
|
|
111
|
+
bash deploy.sh --push # ... then push main and gh-pages: the site is live within a minute
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`deploy.sh` translates only the paragraphs that are new or changed since the last deploy (seconds; `--retranslate` translates everything again, about 4 minutes), commits the updated catalogs `docs/locale/**.po` on `main`, pushes `main` and then the branch `gh-pages`, which GitHub Pages serves at `https://axqua.eu`. It refuses to run with uncommitted changes. Read the Docs builds the English pages from `main` by itself. The glossaries of technical terms, corrections of a translation by hand and the other settings are described in [`docs/i18n/README.md`](https://github.com/sschwindt/aXqua/blob/main/docs/i18n/README.md).
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
aXqua is BSD-3-Clause; the QGIS plugin is GPL-2.0-or-later. The data of the example case are CC BY 4.0 (`cases/example-isar/LICENSE.md`). Coordinates are EPSG:25832 throughout; see `CLAUDE.md` for the notes of the developers.
|