Skip to content

A collection of balance equations and the associated Jacobians for use in variationally-based PDE solution

License

Notifications You must be signed in to change notification settings

UCBoulder/tardigrade_balance_equations

Repository files navigation

Tardigrade Balance Equations

Project Description

A C++ framework containing balance equation terms and their Jacobians

Information

Developers

Gitlab CI/CD

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

Dependencies

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.

Build and Test

This project is built with CMake and uses Sphinx to build the documentation with Doxygen + Breathe for the c++ API.

Environment variables

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.

Building the documentation

HEALTH WARNING

The sphinx API docs are a work-in-progress. The doxygen API is much more useful.

To build just the documentation pick up the steps here:

  1. Create the build directory and move there

    $ pwd
    /path/to/tardigrade-balance-equations/
    $ mkdir build/
    $ cd build/
  2. Run cmake configuration

    $ pwd
    /path/to/tardigrade-balance-equations/build/
    $ cmake ..
  3. Build the docs

    $ cmake --build . --target Sphinx
  4. Documentation builds to:

    tardigrade-balance-equations/build/docs/sphinx/html/index.html
  5. Display docs

    $ pwd
    /path/to/tardigrade-balance-equations/build/
    $ firefox docs/sphinx/html/index.html &
  6. 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 &

Install the library

Build the entire before performing the installation.

  1. Build the entire project

    $ pwd
    /path/to/tardigrade-balance-equations/build
    $ cmake --build .
  2. 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}

Contribution Guidelines

Git Commit Message

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"

Git Branch Names

When creating branches use one of the following naming conventions. When in doubt use feature/<description>.

  • bugfix/\<description>
  • feature/\<description>
  • release/\<description>

reStructured Text

Sphinx reads in docstrings and other special portions of the code as reStructured text. Developers should follow styles in this Sphinx style guide.

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:

  1. Doxygen style docstrings are required for automated, API from source documentation.
  2. 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>

About

A collection of balance equations and the associated Jacobians for use in variationally-based PDE solution

Resources

License

Stars

Watchers

Forks

Packages

No packages published