Development Modules - DLR-AMR/t8code GitHub Wiki

Development Modules

We split the code into different development modules that are maintained by a module maintainer.

A development module is a part of the code that is independent of the other parts and interacts with these via interfaces.

We see this definition as the ideal. Some of the modules below may not be strictly separated via interfaces, but it should be our long-term goal to achieve full module separation.

Module maintainers

Each module has a designated module maintainer. The role of the module maintainer is to be a person of contact for anybody working on parts of the module.

The overall aim should be to organize development and to minimize duplicate work.

Tasks

The module maintainer:

  • Has an overview of the module's functionality.
  • Has an overview of current and planned developments that concern the module.
  • Knows the future perspective of the module and takes it into account when planning new additions.
  • Coordinates feature development in regards to the module.
  • Consults developers when they develop features that affect the module.

Every developer is responsible for contacting the affected module maintainer as early as possible in the development process of new features.

The modules

The following is a list of all modules that we currently defined in t8code.

Module Description Module maintainer
Cmesh All cmesh functionalities that are not covered by individual modules tbd.
Forest All forest functionalities that are not covered by individual module tbd.
Benchmarks The benchmarks in benchmarks tbd.
C Interface The interface to the C programming language tbd.
CAD All CAD related functions @sandro-elsweijer
CI Our CI system, including local scripts and github and other settings tbd.
Documentation The documentation system tbd.
Eclass and Shape The eclass and element shape implementations (Two separate systems). tbd.
Example The examples from the https://github.com/DLR-AMR/t8code/tree/c6ce49798b8c52573212ab04b0d80914208f5158/example folder. tbd.
Fortran Interface The interface to the Fortran programming language tbd.
Geometries Geometry handling. @sandro-elsweijer
Ghost Ghost handling tbd. (@sandro-elsweijer?)
Julia Interface The interface to the Julia programming language, see https://github.com/DLR-AMR/T8code.jl tbd.
Mesh handle The mesh interface @lenaploetzke
Mesh reader Gmsh reader input tbd.
Netcdf Output Output to netcdf files tbd. (@Niklas997?)
Python Interface The interface to the Python programming language tbd.
Schemes The scheme CRTP class and its implementations tbd.
Save and load Cmesh and forest storing and loading for checkpointing tbd.
Search The forest search routing tbd.
data containers All data containers and handlers, see https://github.com/DLR-AMR/t8code/tree/c6ce49798b8c52573212ab04b0d80914208f5158/src/t8_data tbd.
types The strong types in t8code tbd.
Test system Our test system, helper files for tests, etc. tbd.
Tutorials The tutorials in https://github.com/DLR-AMR/t8code/tree/c6ce49798b8c52573212ab04b0d80914208f5158/tutorials and in the Wiki tbd.
Vertex Connectivity The cmesh vertex connectivity module tbd.
VTK Input/Output Vtk writer and reader @Davknapp