Developer Documentation

Since the source code for all of FOQUS is publicly available, the more adventurous user may wish to look at the inner-workings of FOQUS to get a better understand how it works, contribute a fix to a bug, or add new features to the source tree. Other members of our CCSI partnership (national laboratories, industry and academic institutions) may be more actively involved in the development of FOQUS.

This chapter describes at a high level how any such person can set themselves up for getting, building, running, testing, documenting and contributing to FOQUS development.

Development Tools, Technology and Process

FOQUS is primarily written in Python. We use the following software development tools, technologies and processes:

Developer Setup

Working as a developer is similar to how a user would work with FOQUS with the exception that they will need a copy of the source to work with. Here is rough set of steps to get setup:

  • Download and install Anaconda.

  • In a terminal create a conda env in which to work:

    conda create --name ccsi-foqus -c conda-forge python=3.10 pywin32=306
    conda activate ccsi-foqus
  • In a terminal, get the FOQUS source:

    conda activate ccsi-foqus
    cd CCSI-Toolset  # Or a dir of your choice
    git clone  # Note: clone the FOQUS repo if you expect to contribute
    cd FOQUS
  • Build and Install FOQUS as a developer:

    pip install -r requirements-dev.txt  # This will pick up both user and developer required packages.
    foqus  # Start the app

Run Tests

From top level of foqus repo:

python -s test/system_test/

Building the Docs locally

To build a local copy of the documentation:

cd FOQUS/docs
make clean
make html

Then open the file FOQUS/docs/build/html/index.html to view the results.

Contact and Support

There are multiple ways to contact the development team, get support, file a bug, make a feature request and even contribute code changes to FOQUS:

  • Send a private email to for contacting an internal set of developers.

  • Subscribe to and send an email to our public discussion forum to ask a question of the existing user base.

  • Use any of the public GitHub features:

    • Read or start a new Discussion

    • Open a new Issue if you believe you’ve found a bug (please include detailed steps on how to reproduce the error, including if possible, screenshots and log files.) This is also where you can make feature requests.

    • Contribute changes to the FOQUS project by opening a Pull Request

General information about the Carbon Capture Simulation for Industry Impact (CCSI2) project, of which FOQUS is a part, can be found on the web site.