celeri
is a Python-based package designed to image earthquake cycle activity, including spatial slip deficit/fault coupling across geometrically complex fault systems at large scales. It features:
- Friendly Jupyter notebook examples
- GUI model building with
celeri_ui
- Graphical comparisons of model results with
result_manager
- 3D visualization of model results with
parsli
- Fast and automated block closure on the sphere
- Small memory footprint (via distance weighted eigenmodes)
- Blazingly fast elastic calculations (via Ben Thompson's cutde)
- Easy IO with standard file types (
.csv
,.json
,.hdf5
,.pkl
)
To set up a development conda environment, install pixi and run the following command in the celeri
folder.
pixi shell
Alternatively, run the following commands in the celeri
folder.
conda config --prepend channels conda-forge
conda env create
conda activate celeri
pip install --no-use-pep517 -e .
From here, you can launch model runs with celeri_solve
.
To run notebooks from VSCode:
- cd to the
celeri
folder. - Use
code .
to start VSCode from the command line. - Navigate to the notebook you'd like to run.
- Click on the Python environment selector near the upper right-hand corner of the VSCode window.
- Select the "default" shell.
- Run notebook.
A large number of input files can be involved in a model run. We assume that a project is arranged using the following folder structure:
project_name/
├── README.md
├── notebooks/
│ ├── block_model.ipynb
│ ├── visualize_results.ipynb
│ └── resolution_tests.ipynb
├── data/
| ├── config/
│ | └── *config.json
│ ├── segment/
│ │ └── *segment.csv
│ ├── block/
│ │ └── *block.csv
│ ├── station/
│ │ └── *station.csv
│ ├── mesh/
│ | ├── *mesh.json
│ | └── *.msh
| └── operators/
│ └── *.hdf5
└── runs/
└── 0000000001/
├── 0000000001.log
├── output.pkl
├── elastic_operators.hdf5
├── model_segment.csv
├── model_block.csv
└── model_station.csv
If you wish to submit a PR then please run pre-commit install
to install the pre-commit hooks.
We think celeri is pretty great, but there are other alternatives worth considering: