Developer Guide

The developer guide is intended to be for people who come in more close contact with PICLas, i.e., code developers and performance analysts as well as people who are tasked with working or extending the documentation of PICLas.

This guide is organized to guide the first implementation steps as well as provide a complete overview of the simulation code’s features from a developer’s point of view.

  • The first Chapter GitLab Workflow shall give an overview over the development workflow within the Gitlab environment, and the necessary steps to create a release, deploy updates to the Collaborative Numerics Group and GitHub.

  • The second Chapter Style Guide describes the rules and guidelines regarding code development such as how the header of functions and subroutines look like.

  • Chapter Documentation describes how to build the html/pdf files locally before committing changes to the repository and pointers on writing documentation.

  • Chapter Code Extension describes how to extend standardized code blocks, e.g. add a new variable to the output.

  • Chapter Useful Functions contains a summary of useful functions and subroutines that might be re-used in the future.

  • Chapter MPI Implementation describes how PICLas subroutines and functions are parallelized.

  • Chapter Regression Testing summarizes the PICLas’ continuous integration through regression testing.

  • Chapter Unit tests shows which unit tests are used to test individual key components of the source code.

  • Chapter Compiler Options gives an overview of compiler options that are used in PICLas and their purpose.

  • Chapter Developer Tools gives an overview over the tools and scripts for developers.

  • Chapter Performance Analysis describes different tools that can be utilized for measuring the computational performance

  • Chapter Building the AppImage Executable described how an AppImage executable of HOPR is created.

  • Chapter Markdown Examples gives a short overview of how to include code, equations, figures, tables etc. in the user and developer guides in Markdown.