An open API service indexing awesome lists of open source software.

https://github.com/lanl/artemis

Astrophysical multifluid radiation hydrodynamics code
https://github.com/lanl/artemis

Last synced: about 1 year ago
JSON representation

Astrophysical multifluid radiation hydrodynamics code

Awesome Lists containing this project

README

          

# Artemis

Contributors: Adam Dempsey, Shengtai Li, Alex Long, Patrick Mullen, Ben Ryan, Ryan
Wollaeger

Software release number O4811

# Documentation

The latest documentation is hosted [here](https://lanl.github.io/artemis/index.html)

To build the documentation locally,

cd artemis/doc/
make html

If you encounter errors you may need to install additional python packages:

pip install sphinx pyyaml sphinx_rtd_theme

Once the documentation is built, if you have built the docs on a remote server (e.g. darwin), to view
the documentation in your browser on your local machine, from a terminal on your local machine:

ssh -L 8080:localhost:8080 brryan@darwin-fe.lanl.gov
cd /path/to/artemis/doc/_build/html
python3 -m http.server 8080

Then again on your local machine navigate your browser to

http://localhost:8080

and the documentation should display.

# Required dependencies

* CMake 3.13 or greater
* C++ compiler (C++17 support)
* MPI
* OpenMP
* HDF5
* Parthenon
* singularity-eos

# Environment

On deployed platforms, the environment with required dependencies can be set up via

source env/bash

Currently supported computers/partitions are:

## Darwin

skylake-gold
volta-x86 (gpu)

## Chicoma

cpu
gpu

## Venado

gg (cpu)
gh (gpu)

# Installation

git submodule update --init --recursive
mkdir build
cd build
cmake ../
make -j install

## Submodules

The most reliable way to update submodule versions is to simply remove the `external`
folder:

rm -rf external/

and re-initialize the submodules

git submodule update --init --recursive

## Formatting the software

Any contributions to the Artemis software must be compliant with the C++ clang formatter and
the Python black formatter. Linting contributions can be done via an automated formatting
script:
`CFM=clang-format-12 ./style/format.sh`

## Testing

There is a suite of tests in the `tst/` directory. Tests are run with the included `run_tests.py`
script. This script can be run in three ways:

1. With default arguments, where the current version of the source will be built. The resulting
executable can be saved for reuse with `--save_build`, and if saved can be reused in subsequent test
runs with `--reuse_build`. Note that `--save_build` must continue to be supplied as well to avoid
the reused build being deleted after the tests are run.
2. If the `run_tests.py` script is called from a directory with a valid `artemis` executable, that
executable will be used for testing and will not be cleaned up afterwards.
3. If the path to an `artemis` executable is provided to the `--exe` option of `run_tests.py`, that
executable will be used for testing and will not be cleaned up afterwards.

In all cases, the tests will be run from a `tst` directory created in the same folder as the
executable being used. Figures will be created in `artemis/tst/figs` and the log file in
`artemis/tst`.

To run the full regression suite, do

python3 run_tests.py regression.suite

You can also pass a list of individual tests to the script, or create your own suite file.

## CI

We use the github CI for regression testing. The CI will not run if the PR is marked "Draft:" or
"WIP:". Removing these labels from the title will not automatically launch the CI. To launch the CI
with an empty commit, do

git commit --allow-empty -m "trigger pipeline" && git push

A portion of the CI is run on LANL's internal Darwin platform. To launch this CI job, someone with
Darwin access (usually a LANL employee) must first create a Github Personal Access Token, like so:

- `github.com` profile -> `Settings` -> `Developer Settings` -> `Personal Access Tokens` -> `Tokens (classic)`
- Click the `Generate New Token` button -> `Generate New Token (classic)`
- Name it something like `artemis_token` in the `Note` box
- Click the `workflow` checkbox (which will also check the `repo` boxes)
- `Generate token`
- You only get to see the token once, so immediately copy it.

Store the token securely in your own environment as `ARTEMIS_GITHUB_TOKEN`, e.g. in your Darwin `~/.bashrc`:

export ARTEMIS_GITHUB_TOKEN=[token]

and then, again from Darwin, manually launch the CI runner:

cd artemis
./tst/launch_ci_runner.py [Number of the github PR]

Note that `launch_ci_runner.py` will create a temporary checkout of the current state of the branch associated
with this PR according to the `origin` remote, so you don't need to worry about the state of your local checkout
of `artemis`.

## Release

Artemis is released under the BSD 3-Clause License. For more details see the LICENSE.md
file.