A C++ framework containing balance equation terms and their Jacobians
- Documentation (
main
branch): https://aea.re-pages.lanl.gov/stub-repositories/tardigrade-balance-equations/ - Wiki: https://re-git.lanl.gov/aea/stub-repositories/tardigrade-balance-equations/-/wikis/home
- Nathan Miller: [email protected]
NOTE
The repository setup has moved out of the README and into the HTML documentation. You can find the Gitlab project setup guide here: https://aea.re-pages.lanl.gov/stub-repositories/tardigrade-balance-equations/gitlab_setup.html
For convenience, the minimal Conda environment requirements for project development are included in environment.txt
.
A minimal anaconda environment for building the documentation can be created from an existing anaconda installation with
the following commands.
$ conda create --name tardigrade-balance-equations-env --file environment.txt --channel file:///projects/aea_compute/aea-conda
If there is difficulty with installing some of the dependencies, a reduced environment is provided that will attempt to build some of the repositories from source. This can be invoked using
$ conda create --name tardigrade-balance-equations-env --file reduced_environment.txt --channel conda-forge
You can learn more about Anaconda Python environment creation and management in the Anaconda Documentation.
The build, test, and run time requirements are subsets of the development environment requirements found in
environment.txt
. This project builds and deploys as a Conda package to the AEA Conda channel. The Conda recipe
and build, test, run time requirements are found in the recipe/
directory.
This project is built with CMake and uses Sphinx to build the documentation with Doxygen + Breathe for the c++ API.
This project's CMake configuration accepts two build type strings: 'Release' and 'conda-test'. The first is used
during the Gitlab-CI fast-test
job to ensure that the project uses installed libraries correctly. The latter is used
during the Gitlab-CI conda-build
job to limit the test phase to the as-installed project files.
The build type can be set with the -DCMAKE_BUILD_TYPE=<build type string>
during project configuration. Both build
types will require the upstream dependent libraries
to be installed and found in the user's environment. If the build type string doesn't match those previously listed, the CMake project will build missing upstream libraries with the CMake fetch_content feature. The 'conda-test' build type excludes the project libraries from the build configuration and will attempt to find the project libraries in the user's environment to perform the project unit and integration tests against the as-installed project files.
HEALTH WARNING
The sphinx API docs are a work-in-progress. The doxygen API is much more useful.
- Documentation (
main
branch): https://aea.re-pages.lanl.gov/stub-repositories/tardigrade-balance-equations/doxygen
To build just the documentation pick up the steps here:
Create the build directory and move there
$ pwd /path/to/tardigrade-balance-equations/ $ mkdir build/ $ cd build/
Run cmake configuration
$ pwd /path/to/tardigrade-balance-equations/build/ $ cmake ..
Build the docs
$ cmake --build . --target Sphinx
Documentation builds to:
tardigrade-balance-equations/build/docs/sphinx/html/index.html
Display docs
$ pwd /path/to/tardigrade-balance-equations/build/ $ firefox docs/sphinx/html/index.html &
While the Sphinx API is still a WIP, try the doxygen API
$ pwd /path/to/tardigrade-balance-equations/build/ $ firefox docs/doxygen/html/index.html &
Build the entire before performing the installation.
Build the entire project
$ pwd /path/to/tardigrade-balance-equations/build $ cmake --build .
Install the library
$ pwd /path/to/tardigrade-balance-equations/build $ cmake --install . --prefix path/to/root/install # Example local user (non-admin) Linux install $ cmake --install . --prefix /home/$USER/.local # Example install to conda environment $ conda activate my_env $ cmake --install . --prefix ${CONDA_PREFIX}
Begin Git commit messages with one of the following headings:
- BUG: bug fix
- DOC: documentation
- FEAT: feature
- MAINT: maintenance
- TST: tests
- REL: release
- WIP: work-in-progress
For example:
git commit -m "DOC: adds documentation for feature"
When creating branches use one of the following naming conventions. When in
doubt use feature/<description>
.
bugfix/\<description>
feature/\<description>
release/\<description>
Sphinx reads in docstrings and other special portions of the code as reStructured text. Developers should follow styles in this Sphinx style guide.
This project does not yet have a full style guide. Generally, wherever a style can't be inferred from surrounding code this project falls back to PEP-8-like styles. There are two notable exceptions to the notional PEP-8 fall back:
- Doxygen style docstrings are required for automated, API from source documentation.
- This project prefers expansive whitespace surrounding parentheses, braces, and
brackets.
- No leading space between a function and the argument list.
- One space following an open paranthesis
(
, brace{
, or bracket[
- One space leading a close paranthesis
)
, brace}
, or bracket]
An example of the whitespace style:
my_function( arg1, { arg2, arg3 }, arg4 );
The following sed
commands may be useful for updating white space, but must
be used with care. The developer is recommended to use a unique git commit
between each command with a corresponding review of the changes and a unit test
run.
Trailing space for open paren/brace/bracket
sed -i 's/\([({[]\)\([^ ]\)/\1 \2/g' <list of files to update>
Leading space for close paren/brace/bracket
sed -i 's/\([^ ]\)\([)}\]]\)/\1 \2/g' <list of files to update>
White space between adjacent paren/brace/bracket
sed -i 's/\([)}\]]\)\([)}\]]\)/\1 \2/g' <list of files to update>