For flexibility and extensibility, OpenFOAM uses modules to provide additional functionality. There are a variety of different reasons for using modules:
- inclusion of a larger, independent code base
- improve isolation of third-party dependencies
- support more flexible build options
- staging functionality that may be later merged into OpenFOAM
Also see related information about git submodules in the modules/README.
OpenQBMM
OpenQBMM is a suite of solvers to simulate polydisperse multiphase flows using Quadrature-Based Moment Methods (QBMM) based on OpenFOAM.
Why a module?
- retain development, release timing that is independent of the OpenFOAM release schedule.
- ensure that development changes to OpenFOAM are propagated to OpenQBMM as soon as possible.
adios
The adios module provides a function object for checkpointing OpenFOAM using the ADIOS library.
Why a module?
- isolate library dependencies
- additional, non-core functionality
avalanche
The avalanche module provides libraries, solver and utilities for avalanche modelling using finiteArea.
Why a module?
- additional, non-core functionality
- retain independent development
cfmesh
The cfmesh module is a populate alternative mesher for OpenFOAM.
Why a module?
- integration of larger, existing code base
external-solver
The external solver module is primarily an OpenFOAM solver interface to the PETsc suite of linear solvers.
Why a module?
- isolate library dependencies
- development timing independent of the OpenFOAM release schedule
visualization
The visualization module is a collection of visualization interfaces for OpenFOAM, primarily VTK/ParaView based.
Note that the visualization module incorporates some elements which were previously part of the OpenFOAM source tree, but have since been relocated to module for the improved flexibility and to make the core OpenFOAM libraries independent of visualization.
Why a module?
- isolate library dependencies
- support multi-build. Eg, different VTK or ParaView versions, different rendering types etc.
More details...
Examples
A user example of using the visualization module to add an additional layer to an existing OpenFOAM installation (ubuntu docker build):
RUN mkdir -p /home/ofuser/src && \
git clone --depth=1 https://develop.openfoam.com/modules/visualization.git \
/home/ofuser/src/visualization && \
/usr/bin/openfoam2212 -DVTK_DIR=/usr/include/vtk-7.1 \
-c '/home/ofuser/src/visualization/Allwmake -prefix=openfoam' ;\
rm -rf /home/ofuser/src/visualization
Copyright (C) 2020-2022 OpenCFD Ltd.