ratel-runner


Nameratel-runner JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryUtilities for building and running the Ratel finite element library
upload_time2025-07-19 00:47:12
maintainerNone
docs_urlNone
authorZach Atkins
requires_python<4.0,>=3.9
licenseNone
keywords ratel finite elements scientific computing hpc material point method mpm
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Ratel Runner

CLI tools for building and running [Ratel](https://gitlab.com/micromorph/ratel) experiments.

Questions, comments, or concerns? Contact Zach Atkins or leave an issue.

## Installation

### UV (Recommended)

First, install [uv](https://github.com/astral-sh/uv), an open-source Python package manager written in Rust.
Installing `uv` does not require root privileges and takes only a few seconds.

Then, you can either run `ratel-runner` without installing or install it using `uv`:
```bash
uvx --from git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git ratel-runner
uv tool install git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git ratel-runner
```

If you want to run iMPM experiments, specify the `[mpm]` optional dependency:
```bash
uvx --from git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git[mpm] ratel-runner
uv tool install git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git[mpm] ratel-runner
```

### Virtual Environment
If building on Tioga or Tuolumne, ensure you have a new enough Python version:
```bash
ml +cray-python
```

To install the python package, run:
```bash
pip install --user --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git
```

On Lassen, you should first make a virtual environment and ensure new enough compilers are set for building `numpy`:
```bash
ml +python/3.11.5
ml +base-gcc/11.2.1

# create virtual environment
python -m virtualenv .venv
# activate virtual environment
. .venv/bin/activate
# install ratel-runner
CC=gcc CXX=g++ pip install --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git
```

If you want to run implicit MPM experiments, you will need to use the `--with gmsh` flag to ensure the dependency is installed:
```bash
pip install --with gmsh --user --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git
```
Note, the `gmsh` package is unavailable on Lassen.


## Building Ratel
### Supported Machines

This package supports automatically building Ratel and its dependencies with optimal configurations on:
- [Tioga](https://hpc.llnl.gov/hardware/compute-platforms/tioga)
- [Tuolumne](https://hpc.llnl.gov/hardware/compute-platforms/tuolumne)
- [Lassen](https://hpc.llnl.gov/hardware/compute-platforms/lassen)

If building on Tioga or Tuolumne, ensure you have a new enough Python version:
```bash
ml +cray-python
```
For Lassen, instead use
```bash
ml +python/3.11.5
```

#### Tioga
If you are building on Tioga, add these commands to your `~/.bashrc` or `~/.zshrc` file and ensure they are run before building or acquiring a debug node:
```bash
if [[ "$(hostname)" == "tioga"* ]]; then
	module reset
	ml +rocmcc/6.4.0-cce-19.0.0d-magic
	ml +rocm/6.4.0
	ml +craype-accel-amd-gfx90a
	ml +cray-python
	ml +cray-libsci_acc
	ml +cray-hdf5-parallel/1.14.3.5
	ml +flux_wrappers
	ml +cray-mpich/8.1.32
	export HSA_XNACK=1
	export MPICH_GPU_SUPPORT_ENABLED=1
fi
```

**ALWAYS** build on a debug node. For Tioga, you can get such a node with the command:
```bash
flux alloc --queue=pdebug --setattr=thp=always -x -N1 -n1 -t 1h
```

For Tioga, the scratch directory defaults to the `lustre2` parallel filesystem:
```
/p/lustre2/$USER/ratel-scratch
```

#### Tuolumne
If you are building on Tuolumne, add these commands to your `~/.bashrc` or `~/.zshrc` file and ensure they are run before building or acquiring a debug node:
```bash
if [[ "$(hostname)" == "tuolumne"* ]]; then
	module reset
	ml +rocmcc/6.4.0-cce-19.0.0d-magic
	ml +rocm/6.4.0
	ml +craype-accel-amd-gfx942
	ml +cray-python
	ml +cray-libsci_acc
	ml +cray-hdf5-parallel/1.14.3.5
	ml +flux_wrappers
	ml +cray-mpich/8.1.32
	export HSA_XNACK=1
	export MPICH_GPU_SUPPORT_ENABLED=1
	export MPICH_SMP_SINGLE_COPY_MODE=XPMEM
fi
```

**ALWAYS** build on a debug node. For Tuolumne, you can get such a node with the command:
```bash
flux alloc --queue=pdebug --setattr=thp=always --setattr=hugepages=512GB -x -N1 -n1 -t 1h
```

For Tuolumne, the scratch directory defaults to the `lustre5` parallel filesystem:
```
/p/lustre5/$USER/ratel-scratch
```

#### Lassen
```bash
if [[ "$(hostname)" == "lassen"* ]]; then
	ml +clang/ibm-18.1.8-cuda-11.8.0-gcc-11.2.1
	ml +cuda/11.8.0
	ml +base-gcc/11.2.1
	ml +essl
	ml +lapack
	ml +python/3.11.5
fi
```

**ALWAYS** build on a debug node. For Lassen, you can get such a node with the command:
```bash
lalloc 1
```

For Lassen, the scratch directory defaults to the `gpfs1` parallel filesystem:
```
/p/gpfs1/$USER/ratel-scratch
```


### General Build instructions

Set an appropriate `SCRATCH_DIR` and `OUTPUT_DIR`, e.g.
```bash
# on supported machines, defaults to /parallel/filesystem/path/$USER/ratel-scratch
ratel-runner config set SCRATCH_DIR /p/lustre5/$USER/ratel-scratch
# typically defaults to the directory where commands are run
ratel-runner config set OUTPUT_DIR /usr/workspace/$USER/ratel-runner
```
If you are running on a supported machine, these configuration variables are *optional*.
If you are building on an unsupported machine, you must also set `PETSC_CONFIG` to the path to a Python PETSc configuration script:
```bash
ratel-runner config set PETSC_CONFIG /path/to/reconfigure.py
```
Examples can be found in the [PETSc repository](https://gitlab.com/petsc/petsc/-/tree/main/config/examples).

If you are building on a machine with job scheduling, you should now acquire an interactive allocation, see [Supported Machines](#supported-machines) for examples.

Then, Ratel and its dependencies can be built via:
```bash
ratel-runner build ratel
```

#### Configuration Variables
The following configuration variables are used to build Ratel and run experiments.
The preferred way to set configuration variables is through the `ratel-runner config` command.
```console
> ratel-runner config --help

 Usage: ratel-runner config [OPTIONS] COMMAND [ARGS]...

 Read/write values in the application configuration file.

╭─ Options ─────────────────────────────────────────────────────────────╮
│ --machine        [tuolumne|tioga|default]  [default: None]            │
│ --help                                     Show this message and      │
│                                            exit.                      │
╰───────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────╮
│ unset   Remove a key from the configuration file.                     │
│ set     Set a key-value pair in the configuration file.               │
│ get     Get the value of a key in the configuration file.             │
│ list    List all keys and values in the configuration file.           │
│ copy    Copy all configuration variables from one machine to another. │
╰───────────────────────────────────────────────────────────────────────╯
```
Alternatively, you can set the variables as environmental variables.

The list of relevant variables is given below.

| Variable      | Description   | Default |
| ------------- | ------------- | ------- |
| `SCRATCH_DIR` | Location to clone and build repositories, store output files from experiments, etc. This should be on a parallel filesystem for most supercomputers. | See [Supported Machines](#supported-machines) |
| `OUTPUT_DIR`  | Location in which symbolic links to experiment result directories will be created. | Current runtime directory. |
| `PETSC_DIR`   | Location of cloned PETSc repository. This can be an existing repository, or PETSc will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/petsc` |
| `PETSC_ARCH`   | PETSc arch/build to use. | Machine-dependent |
| `PETSC_CONFIG`   | Python configuration file to use when building PETSc.  | Machine-dependent |
| `LIBCEED_DIR` | Location of cloned libCEED repository. This can be an existing repository, or libCEED will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/libCEED` |
| `RATEL_DIR`   | Location of cloned Ratel repository. This can be an existing repository, or Ratel will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/ratel` |


## Running Implicit Material Point Method (iMPM) Experiments

Experiments are run through the `ratel-runner press` command, use the help flag for a list of options.
```bash
ratel-runner mpm press --help
```

### Press - Sticky Air
The "sticky-air" experiment models voids as a soft, perfectly compressible solid.
The experiment requires the path to the voxel data file, the characteristic length (in mm), and the desired load fraction.
See the help pages for the `run` and `flux-run` subcommands for other options:
```bash
ratel-runner mpm press sticky-air run --help
ratel-runner mpm press sticky-air flux-run --help
```

Note: The `flux-run` subcommand will only launch a batch job *after* the background mesh is generated.
The background mesh generation may be quite expensive for characteristic lengths below `0.02`, so you should first acquire an interactive allocation, generate the background mesh with a dry run, then finally submit the job from a login node.
For example, to run an experiment with CL 0.02 and load fraction 0.4:
```bash
# Get allocation
flux alloc --queue=pdebug --setattr=thp=always --setattr=hugepages=512GB -x -N1 -n1 -t 1h
# Pre-generate mesh (only use 1 process, since we aren't launching the job)
ratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 1 --dry-run
# Return allocation
exit

# Submit job to queue using generated mesh (note, use 16 processes)
ratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 16
```

Alternate material properties can be provided as additional flags to the `flux-run` command.
For example, to change the fracture toughness of the `binder` material, you could run
```bash
ratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 1 --mpm_binder_fracture_toughness 1e2
```
Note: an extra `-` is required when compared to executing Ratel directly.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ratel-runner",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "Ratel, finite elements, scientific computing, HPC, material point method, mpm",
    "author": "Zach Atkins",
    "author_email": "Zach Atkins <zach.atkins@colorado.edu>",
    "download_url": "https://files.pythonhosted.org/packages/45/08/b8c79a655255102346202f7a31ec99f37be02933140c016f64aa93b2cc31/ratel_runner-0.2.1.tar.gz",
    "platform": null,
    "description": "# Ratel Runner\n\nCLI tools for building and running [Ratel](https://gitlab.com/micromorph/ratel) experiments.\n\nQuestions, comments, or concerns? Contact Zach Atkins or leave an issue.\n\n## Installation\n\n### UV (Recommended)\n\nFirst, install [uv](https://github.com/astral-sh/uv), an open-source Python package manager written in Rust.\nInstalling `uv` does not require root privileges and takes only a few seconds.\n\nThen, you can either run `ratel-runner` without installing or install it using `uv`:\n```bash\nuvx --from git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git ratel-runner\nuv tool install git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git ratel-runner\n```\n\nIf you want to run iMPM experiments, specify the `[mpm]` optional dependency:\n```bash\nuvx --from git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git[mpm] ratel-runner\nuv tool install git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git[mpm] ratel-runner\n```\n\n### Virtual Environment\nIf building on Tioga or Tuolumne, ensure you have a new enough Python version:\n```bash\nml +cray-python\n```\n\nTo install the python package, run:\n```bash\npip install --user --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git\n```\n\nOn Lassen, you should first make a virtual environment and ensure new enough compilers are set for building `numpy`:\n```bash\nml +python/3.11.5\nml +base-gcc/11.2.1\n\n# create virtual environment\npython -m virtualenv .venv\n# activate virtual environment\n. .venv/bin/activate\n# install ratel-runner\nCC=gcc CXX=g++ pip install --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git\n```\n\nIf you want to run implicit MPM experiments, you will need to use the `--with gmsh` flag to ensure the dependency is installed:\n```bash\npip install --with gmsh --user --upgrade git+https://github.com/zatkins-dev/Ratel-iMPM-Press.git\n```\nNote, the `gmsh` package is unavailable on Lassen.\n\n\n## Building Ratel\n### Supported Machines\n\nThis package supports automatically building Ratel and its dependencies with optimal configurations on:\n- [Tioga](https://hpc.llnl.gov/hardware/compute-platforms/tioga)\n- [Tuolumne](https://hpc.llnl.gov/hardware/compute-platforms/tuolumne)\n- [Lassen](https://hpc.llnl.gov/hardware/compute-platforms/lassen)\n\nIf building on Tioga or Tuolumne, ensure you have a new enough Python version:\n```bash\nml +cray-python\n```\nFor Lassen, instead use\n```bash\nml +python/3.11.5\n```\n\n#### Tioga\nIf you are building on Tioga, add these commands to your `~/.bashrc` or `~/.zshrc` file and ensure they are run before building or acquiring a debug node:\n```bash\nif [[ \"$(hostname)\" == \"tioga\"* ]]; then\n\tmodule reset\n\tml +rocmcc/6.4.0-cce-19.0.0d-magic\n\tml +rocm/6.4.0\n\tml +craype-accel-amd-gfx90a\n\tml +cray-python\n\tml +cray-libsci_acc\n\tml +cray-hdf5-parallel/1.14.3.5\n\tml +flux_wrappers\n\tml +cray-mpich/8.1.32\n\texport HSA_XNACK=1\n\texport MPICH_GPU_SUPPORT_ENABLED=1\nfi\n```\n\n**ALWAYS** build on a debug node. For Tioga, you can get such a node with the command:\n```bash\nflux alloc --queue=pdebug --setattr=thp=always -x -N1 -n1 -t 1h\n```\n\nFor Tioga, the scratch directory defaults to the `lustre2` parallel filesystem:\n```\n/p/lustre2/$USER/ratel-scratch\n```\n\n#### Tuolumne\nIf you are building on Tuolumne, add these commands to your `~/.bashrc` or `~/.zshrc` file and ensure they are run before building or acquiring a debug node:\n```bash\nif [[ \"$(hostname)\" == \"tuolumne\"* ]]; then\n\tmodule reset\n\tml +rocmcc/6.4.0-cce-19.0.0d-magic\n\tml +rocm/6.4.0\n\tml +craype-accel-amd-gfx942\n\tml +cray-python\n\tml +cray-libsci_acc\n\tml +cray-hdf5-parallel/1.14.3.5\n\tml +flux_wrappers\n\tml +cray-mpich/8.1.32\n\texport HSA_XNACK=1\n\texport MPICH_GPU_SUPPORT_ENABLED=1\n\texport MPICH_SMP_SINGLE_COPY_MODE=XPMEM\nfi\n```\n\n**ALWAYS** build on a debug node. For Tuolumne, you can get such a node with the command:\n```bash\nflux alloc --queue=pdebug --setattr=thp=always --setattr=hugepages=512GB -x -N1 -n1 -t 1h\n```\n\nFor Tuolumne, the scratch directory defaults to the `lustre5` parallel filesystem:\n```\n/p/lustre5/$USER/ratel-scratch\n```\n\n#### Lassen\n```bash\nif [[ \"$(hostname)\" == \"lassen\"* ]]; then\n\tml +clang/ibm-18.1.8-cuda-11.8.0-gcc-11.2.1\n\tml +cuda/11.8.0\n\tml +base-gcc/11.2.1\n\tml +essl\n\tml +lapack\n\tml +python/3.11.5\nfi\n```\n\n**ALWAYS** build on a debug node. For Lassen, you can get such a node with the command:\n```bash\nlalloc 1\n```\n\nFor Lassen, the scratch directory defaults to the `gpfs1` parallel filesystem:\n```\n/p/gpfs1/$USER/ratel-scratch\n```\n\n\n### General Build instructions\n\nSet an appropriate `SCRATCH_DIR` and `OUTPUT_DIR`, e.g.\n```bash\n# on supported machines, defaults to /parallel/filesystem/path/$USER/ratel-scratch\nratel-runner config set SCRATCH_DIR /p/lustre5/$USER/ratel-scratch\n# typically defaults to the directory where commands are run\nratel-runner config set OUTPUT_DIR /usr/workspace/$USER/ratel-runner\n```\nIf you are running on a supported machine, these configuration variables are *optional*.\nIf you are building on an unsupported machine, you must also set `PETSC_CONFIG` to the path to a Python PETSc configuration script:\n```bash\nratel-runner config set PETSC_CONFIG /path/to/reconfigure.py\n```\nExamples can be found in the [PETSc repository](https://gitlab.com/petsc/petsc/-/tree/main/config/examples).\n\nIf you are building on a machine with job scheduling, you should now acquire an interactive allocation, see [Supported Machines](#supported-machines) for examples.\n\nThen, Ratel and its dependencies can be built via:\n```bash\nratel-runner build ratel\n```\n\n#### Configuration Variables\nThe following configuration variables are used to build Ratel and run experiments.\nThe preferred way to set configuration variables is through the `ratel-runner config` command.\n```console\n> ratel-runner config --help\n\n Usage: ratel-runner config [OPTIONS] COMMAND [ARGS]...\n\n Read/write values in the application configuration file.\n\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --machine        [tuolumne|tioga|default]  [default: None]            \u2502\n\u2502 --help                                     Show this message and      \u2502\n\u2502                                            exit.                      \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Commands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 unset   Remove a key from the configuration file.                     \u2502\n\u2502 set     Set a key-value pair in the configuration file.               \u2502\n\u2502 get     Get the value of a key in the configuration file.             \u2502\n\u2502 list    List all keys and values in the configuration file.           \u2502\n\u2502 copy    Copy all configuration variables from one machine to another. \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\nAlternatively, you can set the variables as environmental variables.\n\nThe list of relevant variables is given below.\n\n| Variable      | Description   | Default |\n| ------------- | ------------- | ------- |\n| `SCRATCH_DIR` | Location to clone and build repositories, store output files from experiments, etc. This should be on a parallel filesystem for most supercomputers. | See [Supported Machines](#supported-machines) |\n| `OUTPUT_DIR`  | Location in which symbolic links to experiment result directories will be created. | Current runtime directory. |\n| `PETSC_DIR`   | Location of cloned PETSc repository. This can be an existing repository, or PETSc will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/petsc` |\n| `PETSC_ARCH`   | PETSc arch/build to use. | Machine-dependent |\n| `PETSC_CONFIG`   | Python configuration file to use when building PETSc.  | Machine-dependent |\n| `LIBCEED_DIR` | Location of cloned libCEED repository. This can be an existing repository, or libCEED will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/libCEED` |\n| `RATEL_DIR`   | Location of cloned Ratel repository. This can be an existing repository, or Ratel will be cloned to this directory if it does not exist. | `$SCRATCH_DIR/build/ratel` |\n\n\n## Running Implicit Material Point Method (iMPM) Experiments\n\nExperiments are run through the `ratel-runner press` command, use the help flag for a list of options.\n```bash\nratel-runner mpm press --help\n```\n\n### Press - Sticky Air\nThe \"sticky-air\" experiment models voids as a soft, perfectly compressible solid.\nThe experiment requires the path to the voxel data file, the characteristic length (in mm), and the desired load fraction.\nSee the help pages for the `run` and `flux-run` subcommands for other options:\n```bash\nratel-runner mpm press sticky-air run --help\nratel-runner mpm press sticky-air flux-run --help\n```\n\nNote: The `flux-run` subcommand will only launch a batch job *after* the background mesh is generated.\nThe background mesh generation may be quite expensive for characteristic lengths below `0.02`, so you should first acquire an interactive allocation, generate the background mesh with a dry run, then finally submit the job from a login node.\nFor example, to run an experiment with CL 0.02 and load fraction 0.4:\n```bash\n# Get allocation\nflux alloc --queue=pdebug --setattr=thp=always --setattr=hugepages=512GB -x -N1 -n1 -t 1h\n# Pre-generate mesh (only use 1 process, since we aren't launching the job)\nratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 1 --dry-run\n# Return allocation\nexit\n\n# Submit job to queue using generated mesh (note, use 16 processes)\nratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 16\n```\n\nAlternate material properties can be provided as additional flags to the `flux-run` command.\nFor example, to change the fracture toughness of the `binder` material, you could run\n```bash\nratel-runner mpm press sticky-air flux-run /path/to/voxel/data 0.02 0.4 -n 1 --mpm_binder_fracture_toughness 1e2\n```\nNote: an extra `-` is required when compared to executing Ratel directly.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Utilities for building and running the Ratel finite element library",
    "version": "0.2.1",
    "project_urls": {
        "Issues": "https://github.com/zatkins-dev/ratel-runner/issues",
        "Repository": "https://github.com/zatkins-dev/ratel-runner"
    },
    "split_keywords": [
        "ratel",
        " finite elements",
        " scientific computing",
        " hpc",
        " material point method",
        " mpm"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4bbcef234e7f35a1b23d91eb3c67d31b67dc2ae26128afbe95d49082b79be411",
                "md5": "81d9c4e7a0675b2faacc55b5885d7d5f",
                "sha256": "d8d57208ee0623a0b2c6286c0462e65a00ed01393448dd6209e36cc71f43813f"
            },
            "downloads": -1,
            "filename": "ratel_runner-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "81d9c4e7a0675b2faacc55b5885d7d5f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 39604,
            "upload_time": "2025-07-19T00:47:10",
            "upload_time_iso_8601": "2025-07-19T00:47:10.768504Z",
            "url": "https://files.pythonhosted.org/packages/4b/bc/ef234e7f35a1b23d91eb3c67d31b67dc2ae26128afbe95d49082b79be411/ratel_runner-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4508b8c79a655255102346202f7a31ec99f37be02933140c016f64aa93b2cc31",
                "md5": "b4ff60922add151d61523df1782b85e0",
                "sha256": "162517fb80daa5a8835c20ef261dcf44d781f175f8c5b98aeefb98ea2bd33640"
            },
            "downloads": -1,
            "filename": "ratel_runner-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "b4ff60922add151d61523df1782b85e0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 24937,
            "upload_time": "2025-07-19T00:47:12",
            "upload_time_iso_8601": "2025-07-19T00:47:12.228414Z",
            "url": "https://files.pythonhosted.org/packages/45/08/b8c79a655255102346202f7a31ec99f37be02933140c016f64aa93b2cc31/ratel_runner-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-19 00:47:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zatkins-dev",
    "github_project": "ratel-runner",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "ratel-runner"
}
        
Elapsed time: 0.95691s