5
modules
Mark Olesen edited this page 2022-12-22 13:31:59 +01:00

home build repos

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.

[[TOC]]

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.