Glacium
Glacium is a lightweight command line tool to manage small
simulation workflows. Projects are created inside the runs/
directory of the current working directory and consist of a global configuration, a set of jobs and
rendered templates. The focus lies on easily defining new recipes and
executing jobs in dependency order.
Programmatic control is available through a high level pipeline API; see docs/high_level_api/intro.rst for an overview.
Installation
Install the package with pip (Python 3.12 or newer is required):
pip install .
Warning: make sure the old pyfpdf package is not installed alongside
fpdf2. The two libraries conflict and can lead to runtime errors. If you see a
warning about PyFPDF, run:
pip uninstall --yes pyfpdf
This exposes a glacium command via the console script entry point.
The DejaVuSans.ttf font used for PDF reports ships with the package.
Usage
Below is a quick tour through the most important CLI commands. Each
command provides --help for additional options.
Create a project
# create a new project from the default recipe
glacium new MyWing
The multishot recipe runs ten solver cycles by default. Override the count with
--multishots:
glacium new MyWing --multishots 5
The command prints the generated project UID. All projects live below
./runs/<UID> in the current working directory. glacium new and glacium init parse case.yaml and write global_config.yaml automatically.
When running multishot jobs the template files for each shot are generated
automatically. After editing case.yaml you can run glacium update to
regenerate the configuration. Set CASE_MULTISHOT in case.yaml to a list
of icing times for each shot.
Case sweep
glacium case-sweep --param CASE_AOA=0,4 --param CASE_VELOCITY=50,100
Use --multishots to change the number of solver cycles per project
(defaults to 10):
glacium case-sweep --param CASE_AOA=0,4 --multishots 20
One project is created for each parameter combination and
global_config.yaml is generated from the project's case.yaml.
The command prints the generated UIDs.
Pipeline
Run a grid convergence study and spawn follow-up projects::
glacium pipeline --level 1 --level 2 --multishot "[10,300,300]"
The call executes the grid-convergence pipeline layout which
creates one project per grid level using the grid_dep recipe,
selects the mesh with the lowest drag and then generates and runs a
single-shot project and optional MULTISHOT case with the chosen grid.
Multishot projects use the multishot recipe. Use --layout to select
another workflow and --pdf to merge all report PDFs into a single
summary file.
List projects
glacium projects
Select a project
# select by number from `glacium projects`
glacium select 1
The selected UID is stored in ~/.glacium_current and used by other
commands.
Run jobs
# run all pending jobs in the current project
glacium run
You can run specific jobs by name as well:
glacium run XFOIL_REFINE XFOIL_POLAR
Show job status
glacium list
The table now includes an index column so you can refer to jobs by number.
Manage individual jobs
# reset a job to PENDING
glacium job reset XFOIL_POLAR
glacium job reset 1 # via index
You can list all available job types with numbers:
glacium job --list
Select a job of the current project by its index:
glacium job select 1
Jobs can also be added or removed via their index:
glacium job add 1
glacium job remove 1
Sync projects with recipes
# refresh the job list of the current project
glacium sync
Update configuration
# rebuild global_config.yaml from case.yaml
glacium update
Display project info
glacium info
Print the case.yaml parameters and a few values from
global_config.yaml for the current project.
Remove projects
# delete the selected project
glacium remove
Use --all to remove every project under runs in the current working directory.
External executables
Paths to third party programs can be configured in
runs/<UID>/_cfg/global_config.yaml inside the current working directory. Important keys include
POINTWISE_BIN, FENSAP_BIN and the newly added
FLUENT2FENSAP_EXE pointing to fluent2fensap.exe on Windows.
Logging
Set GLACIUM_LOG_LEVEL to control the verbosity of the CLI. For example::
export GLACIUM_LOG_LEVEL=DEBUG
Development
All tests can be run with:
pytest
To enable automatic version management install the plugin once:
poetry self add "poetry-dynamic-versioning[plugin]"
poetry install will pull setuptools_scm as specified in pyproject.toml.
Versions are taken from Git tags, e.g.:
git tag v1.2.0 -m "release"
Metadata
Release files for glacium 0.1.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| glacium-0.1.10.tar.gz | 479.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| glacium-0.1.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / glacium-0.1.10.tar.gz
| Download URL | glacium-0.1.10.tar.gz |
|---|---|
| Size | 479.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab77ca51e25f81ba48e21a9ee74cee850a65520e8bf222d83772bf2c987587ee
|
|
BLAKE2b-256 checksum How to use checksums |
e8216886d792afbbd61a606cba6b25316add880a22b3c48e114c049ed70eb665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 17, 2025.
Transparency logRelease files / glacium-0.1.10-py3-none-any.whl
| Download URL | glacium-0.1.10-py3-none-any.whl |
|---|---|
| Size | 534.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
27d061141187061d1b9ff9b742ddb577fefd3f86a39dcb09f3c0aeb51746a25b
|
|
BLAKE2b-256 checksum How to use checksums |
9976d3a761be1855e6a544aa7148ee1965d54e484a630d80dda0ecd035cd20e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 17, 2025.
Transparency log