# List of Changes for Multiphase Code Repository by HZDR

## [Latest Release]

### Bugfix

- Improve logic for modifying setups to run only a single time step

### Documentation

- Update slurm batch script templates w.r.t. Sprint Cycle Version

### OpenFOAM

- Sprint Cycle Upgrade 13-s.1

### Physical Modelling

- Add particle removal (decontamination) model by Fuchs (1955)

---

## [12-s.1-hzdr.2] - 2025-10-20

### Bugfix

- parallel execution of addonFilmSurfaceVelocity BC
- Correct calls to mpyshrun in Allrun scripts
- Add addon* prefix to caseDicts which are duplicates of the release
- Declare explicit data types and allow single precision builds
- Make inducedTurbulence fvModel insensitive to phase order
- Add missing exec command to entrypoint script

### Contribution

- Removed pressure gradient and surface tension forces from low phase-fraction balance

### Deployment

- Fix issue with entryscript and buildah
- Allow Allwclean to succeed if platform directory is not present
- Replace custom default user in docker image by 'ubuntu' default user

### Documentation

- Let file links in documentation refer to main branch
- Improved information on error handling in etc/template/hemera/hemeraParaViewServer
- Correct default value for BFric
- Improve comments in template Allrun/Allclean scripts
- Remove any hint to arm64 image due to build problems
- Improve instructions for container registry login

### Misc

- Follow-up of "Generalize naming of Slurm job script templates"
- Generalize naming of Slurm job script templates
- Re-add unintentionally removed controlDict template
- Replace Megalinter with pre-commit hooks
- Updating to copier template version 1.2.0
- make interfaceCompression entry optional
- Apply the cell-based momentum/pressure algorithm in tutorials and tests since it provides sufficiently smooth solutions. The usage of face-based algorithm is therefore deprecated.
- prevent dangling references
- Re-implemented induced turbulence as fvModel

### MultiMorph Model

- adding continuousBuoyancy and interfaceParallelBuoyancy to...
- Allow spatial restriction of accumulationToContinuous
- Extend accumulationToContinuous to multiple disperse phases
- Make iteration parameters for cluster tracking controllable
- Add option to accumulationToContinuous to require a minimal amount of continuous material
- Add film morphology
- add underResolution and drag modelling acc. to Coste (2013)
- Option to stabilise low phase fraction scenarios
- add "none" phase transfer model

### Physical Modelling

- Add Zhao solid-solid drag model
- Syamlal solid-solid drag model
- add momentumTransport model considering kinetic theory
- new phase transfer model for decontamination

### Population Balance

- Corrected treatment of drift

### Post-Processing

- Use pvserver default port in etc/template/hemera/hemeraParaViewServer slurm job template
- Suggest use of pure CPU nodes for etc/template/hemera/hemeraParaViewServer slurm script
- Updated Slurm batch script for starting a pvserver (ParaView server) in an Apptainer container
- remove Fourier transform python scripts in favour of mpypost fft function

### Test

- Let reference data update script also check probes directory
- update vertical channel test case
- Add a read-me to the constant attachment model test
- Establish test for HZDR Baseline closures
- Fix testAddon/solvers/phaseTransfer/entrainment/MaTestCasePolydisperse

### Tutorial

- Added phasePressure model to the particulate phase for titaniaSynthesis cases

---

## [12-s.1-hzdr.1] - 2024-11-29

### Bugfix

- Make potential force insensitive against phase order
- Fix name of linked addon fvModel library
- Make oversizedToContinuous robust against phase order

### Deployment

- Restructure stages to get user environment also in dev image
- Enforce use of Python virtual environment to install additional pip packages in Docker & Apptainer containers
- Make image compatible with Singularity

### Documentation

- Fix sprint cycle version in INSTALLATION.md
- Fix sprint cycle version in hemera sample sbatch scripts
- Point to installation instructions of multiphasepy rather than repeating the commands here
- update INSTALLATION.md
- Move files to copier template in infrastructure project

### Misc

- Correct spaces in test case according to pre-commit rules
- Enable code style checks with pre-commit hooks
- Add heuristic to reference update script

### MultiMorph Model

- Volume fraction filtering procedure for over-resolved scenarios
- remove deprecated detrainment phase transfer model

### OpenFOAM

- Sprint Cycle Upgrade 12-s.1

### Physical Modelling

- Implementation of turbulent dispersion force revised

### Test

- Added single-cell test case for simulating desorption with a population balance model
- add shockTube case for addonMultiphaseEuler with compressibilty

---

## [11-s.1-hzdr.1] - 2024-08-22

### Bugfix

- Suppress warning for not declared variables from hadolint
- Separate docker build for current sprint cycle release and dev release
- Specify positional dummy argument for runCommand

### Deployment

- Remove env files and update sprint cycle instructions
- Rename docker images according to docker naming conventions
- Update release procedure
- Use a default python venv to install multiphasepy

### Documentation

- Fix image path in section on using Apptainer
- Update release template and docker build arguments
- Source tutorial run functions -> Source run functions
- Fix wrong order for applying patches
- Fix sprint cycle version in INSTALLATION.md
- Add information on installing and using Apptainer

### MultiMorph Model

- Raise compactness requirements for cluster tracking

### OpenFOAM

- foamDictionary is now able to edit files in-place with new output option
- Sprint Cycle Upgrade 11-s.1

### Post-Processing

- Generally turn on ./createGraphs in all tutorials and test cases to test post-processing also in single timestep mode
- remove whitespace from variable in phaseStucture functionObjects
- Generally use Gnuplot terminal pngcairo for proper handling of postscript symbols and enhanced text
- remove converToCSV and reformatHeader, use mpyconv from multiphasepy package instead
- Move tool to multiphasepy package

---

## [multiphase-code-repository-by-hzdr-10-s.2-hzdr.3] - 2024-07-16

### Baseline

- Introduce upper limiter for EoH in Hessenkemper lift model

### Bugfix

- Remove conflicting python packages installed via pip

### Deployment

- Update to Ubuntu 24.04 and backport of configuration file changes from OpenFOAM-dev
- Fix unbound variable error in runParallel.sh
- Refactor runParallel RunFunction w.r.t. handling of option array
- Add all tests and tutorials to release

### Misc

- add instant and refresh options to progressBar

### Post-Processing

- Move foamTimeAverageData to multiphasepy python package

### Test

- Added test for assessing performance of containerized MPI on foreign HPC systems

---

## [multiphase-code-repository-by-hzdr-10-s.2-hzdr.2] - 2024-06-14

### Baseline

- Optional clipping of lift coefficient for Hessenkemper

### Bugfix

- Remove chown for files in home directory from entrypoint
- Fix log file output logic with respect to cluster tracking
- Ensure correct configuration and for home directory in docker image
- Restore .env-dev for OpenFOAM-dev builds
- fix wrong results due to optimisation level with g++11
- make constantAttachment work independent from phase order
- make disintegrationToDisperse work independent from phase order
- funcName --> name

### Deployment

- Use PMI2 interface only for multi-node simulations
- Remove UCX communication middleware
- Rely on UCX as communication middleware for Open MPI
- Make runParallel RunFunction compatible with Singularity
- Make the sprint cycle version the default in Dockerfile instead of dev
- Avoid unbound variable warnings when using new runParallel function for Apptainer in bash strict mode, e.g. within a workflow
- Fix unbound variable error when running Snakemake workflow with Apptainer containers
- Adjusted RunFunctions to allow for running distributed MPI Jobs with Apptainer and Slurm on the basis of a fully containerized MPI implementation using the runParallel function
- Merge NVIDIAGL image into our docker image
- Remove docker compose and user management in docker images
- Force pseudo-termional allocation in runParallelApptainer function
- Added specialized run function for starting OpenFOAM MPI jobs with Apptainer
- Merge Nvidia and Linux Docker images
- Add bsdmainutils package to Debian package dependencies
- Revise handling for ccache in docker image
- Enable caching and slim down dockerfile
- Moved Python dependencies to new Python repository which provides a the multiphasepy package that is installed in the final stage of the Docker build process
- Fix application of sprint patches for Hemera cluster installation
- Lift scipy version 1.9.0 required by testAddon/postProcessing/foamFourierTransform
- Snakemake 7.25 requires toposort>=1.10
- Upgrade Docker images to Ubuntu 22.04 LTS Jammy Jellyfish
- Add new stage for multiphase python module and add compile options to scotch library
- Remove ThirdParty from docker images
- Fix bug for kaniko with major version detection
- Fix Paraview variables and build args for linuxArm64
- Use hard-coded environment variables for OpenFOAM in docker image
- Update numpy and scipy version
- Fix bug in path to foamExec
- Use foamExec as entry point for docker image
- Remove arm64 from codemeta as it crashed debian build

### Documentation

- Improved documentation on setting Apptainer as default module upon login on HPC cluster
- Mark OpenFOAM directories for git as safe directories
- Add image specification examples to hemeraApptainer template batch script
- Add mpy prefix to tools from multiphasepy package
- Minor follow-up for generalized source code header
- Introduce FILES.md to specify new, modified and copied files from OpenFOAM Foundation Software
- Introduce new generalized source code header
- Sorting command with duplicates removal for configuration files
- Revise some minor left overs from renaming of the repository

### Misc

- Use RunFunctions from $WM_PROJECT_SITE for compatibility with Apptainer
- Add docker as recommended VS Code extension
- Add live-server as recommended VS Code extension
- Add model to control integral mass of selected phases
- Fix etc/vscode/settings.json with respect to error squiggles
- Create a default user in docker image
- Add option to launch jupyter lab server in docker image with foamDockerRun.sh
- Backport OpenFOAM-dev commit eb8e221f
- Singularity is now Apptainer
- Remove setCaseNumberOrDefault from casesFunctions.sh following new convention that default case should be set in a case-level `caseSettings.orig` file
- Update VS Code tasks to absolute path
- Allow foamDockerRun.sh to mount single files
- Addon code is now compiled into $WM_PROJECT_SITE/$WM_PROJECT_VERSION for all installation options
- Fix ending of patch file enabling the HZDR header
- Add helper scripts to reformat dat files and update reference data
- setCaseNumberOrDefault for templated cases
- Fix ssh setting in docker-compose for Mac OS
- Add writeAtFile FO to allow result writing during running simulations
- use writeTime() rather than deprecated outputTime()

### MultiMorph Model

- Optimize oversizedToContinuous logic for serial processing of multiple cluster tracking pairs
- Number-conservative conversion of large disperse fluid particles to resolved state
- Allow continuous phase with actual diameter model

### OpenFOAM

- Fix HZDR banner for case files

### Physical Modelling

- add phaseTransferModel BhutaniBritoParada

### Population Balance

- There is no need for the phaseChange driftModel to read the specie-specific mass transfer rate from the InterfaceCompositionPhaseChangePhaseSystem as the entire mass transfer rate is what drives drift
- Allow for specie-specific mass transfer between velocity groups triggered e.g. by absorption or desorption processes

### Post-Processing

- add filmThickness functionObject
- Plot script for Courant number and time step size
- Introduce new collection for bash functions in cases repository

### Test

- Add test for new runParallel RunFunction to use OpenFOAM with Apptainer in distributed parallel runs
- `tutorials/Allrun` now checks success of Gnuplot scripts executed as part of OpenFOAM job scripts
- Add another heuristic to reference data update script
- Remove redundant fieldAverage caseDict from repo which was only used to allow single time-step tests of cases with field-averaging, but is not necessary anymore due to improvements of the Alltest script in commit 2042998044aa1e78cd07e739b0b545f79e429c70
- Remove naming of temporary controlDict file within Alltest script
- Temporarily deactivate selected LES model tests (wrong results if addon is compiled with g++-11, which is the default in Ubuntu 22.04)
- Use mktemp instead of tempfile for creating temporary controlDict file, since tempfile is deprecated
- Enhance robustness of Alltest
- Expand controlDict and set timeStart to zero

---

## [Multiphase-Code-Repository-10-s.2-hzdr.1] - 2023-06-02

### Bugfix

- Remove unneccessary char

### Deployment

- Remove arm64 from codemeta as it crashed debian build
- Fix a issue with OpenMPI and shared memory
- Enable ARM64 images and separate Paraview into own docker stage
- Build customized OpenMPI and libfabric
- Enable ccache for clang compiler
- Update REGISTRY variable in .env
- Merge cuda and nvidia images

### Documentation

- Rename to Multiphase Code Repository by HZDR for OpenFOAM Foundation Software
- Minor fix to INSTALLATION.md
- More straigtforward commands for release management

### Misc

- Further generalization to facilitate maintenance of other addon code repositories
- Adjust Alltest for cases with time-averaging starting later than time zero
- Add debugging options to pvserver SLURM script
- Update list of partitions in SLURM script templates
- Several modifications and bugfixes

### OpenFOAM

- Sprint Cycle Upgrade 10-s.2

### Post-Processing

- write blending fields, fG, fS, f1D2 and f2D1, on debug
- Update ParaView server SLURM script
- ParaView server SLURM script
- Use pngcairo instead of png terminal for plotting with Gnuplot to enable dashed lines
- Made profiling functionality use standard C++ such that it can be used outside of OpenFOAM

---

## [HZDR-Multiphase-Addon-10-s.1-hzdr.3] - 2023-03-21

### Bugfix

- Sort out QT dependencies for addon and Paraview
- fix post processing of dropletEntrainmentByShear test case
- Fix path to online repository for Doxygen
- alphaMax moved to phaseProperties for flotation tutorials
- Allow control dict update when using HZDRCourantNo

### Deployment

- Fix GitLab instance URL in docker-compose.override.yml sample
- Simplify some header and descriptions for easier sync with RCS
- Install rsync in Docker container images
- Simplify dockerfile and reduce layers
- Make ssh for container deployment optional
- Free deploy job for OpenFOAM installations on hemera from deploying site directory
- Fix application of sprint patches to cluster installation for OpenFOAM-versions > 9

### Documentation

- Update QT dependencies
- More descriptive merge request template for releases
- Installation instructions for Mac OS
- Modify command for running megalinter locally such that container is removed upon exit
- Update domain to GitLab instance
- beautify shortcut table

### Misc

- Remove configuration files for flotation cases and switch to SchillerNaumann drag model
- Replaced prefix "HZDR" for libraries and exucutables by the more general "addon"
- Make display support for docker images optional
- Correct sprint cycle bash script to make linter happy
- Fixed formatting of blockMeshDictCylinder template
- Update Snakemake version for new workflow design
- Adapt VS Code instructions
- Provide VS Code settings as files and add instructions to CONTRIBUTING.md
- Remove checkbox for template repository

### MultiMorph Model

- Rename OpenFOAM-Hybrid to MultiMorph Model

### OpenFOAM

- Remove foamyHexMesh

### OpenFOAM-Hybrid

- add description of addon specific changes to header of ...
- write shear based under-resolution indicator at start time

### Physical Modelling

- Added drag models of Tomiyama et al. (1998) for pure and slightly contaminated systems
- Entrainment model revision
- Remove not working freeSurface mesh motion solver
- Make degassingPhases fvModel compatible with blending framework

### Population Balance

- Added GPU-accelerated version of the coalescence model of Lehr et al. (2002) that works with the GPU-accelerated source term assembly
- Enabled runtime selection of GPU-accelerated binary breakup models in combination with CUDApopulationBalance
- Enabled runtime selection of GPU-accelerated coalescence models in combination with CUDApopulationBalance
- Introduced automatic assignment of MPI ranks to one or more GPU devices
- Added GPU-accelerated source term assembly for breakup, binary breakup and drift
- Some improvements to GPU-accelerated coalescence source term assembly
- Add test cases for (binary)Breakup and drift for testing the GPU-accelerated source term assembly
- First working GPU-accelerated coalescence source term assembly
- Added basic code structure for implementing the GPU-acceleration of the source term assembly using NVIDIA CUDA

### Post-Processing

- add caseDict volAverage

### Test

- revise Ma entrainment test case to be more standard OF-Hybrid
- Added HZDR header to Alltest script to mark it as an extension of the original script supplied by OpenFOAM
- Add -configure option to Alltest that only prepares setups to run a single time step but skips execution

### Tutorial

- sync hybrid cases among repositories

---

## [HZDR-Multiphase-Addon-10-s.1-hzdr.2] - 2022-10-19

### Documentation

- Clarify that Debian, Docker and compiling from sources are exclusive installation options
- Add references to README.md

---

## [HZDR-Multiphase-Addon-10-s.1-hzdr.1] - 2022-10-14

### Bugfix

- use unquoted value to allow for proper command line argumens generation
- functionObject deviation now properly writes out deviation as field as well as in log file
- wrong apt command in dockerfile
- define arguments of foamShellRunner with '--' preventing abbreviations
- for degassingPhases fvModel add sink terms for transported variables
- qt5-default package is not available in Ubuntu 21 and newer

### Deployment

- remove unnecessary patch tgz files from OpenFOAM directory
- Do not commit changes to etc/bashrc or etc/cshrc if there aren't any
- Adjust regular expressions for detecting sprint cycles to match also beyond one digit, i.e. 10-s.10
- Check for existence of patch files before applying them
- Changes to WM_PROJECT_VERSION, _COMPILER and _COMPILE_OPTION in basic are now committed to git
- Fix updateSprintCycle.sh to also consider the WM_PROJECT_VERSION entry in codemeta.json
- Add patches for OpenFOAM installation to code publication
- bin directory in WM_PROJECT_USER_DIR has highest priority in docker images
- Add Paraview to debian package

### Documentation

- Make sure to remove all hyphens from docker compose commands
- Source OpenFOAM environment before applying sprint cycle patches
- Fix typo in installation instructions
- Re-structure file headers with better information about copyright
- Modified header with improved copyright
- Refer to nightly build addon Debian package in installation instructions
- correct latex formulas and remove problematic extra package to fix Doxygen formula rendering
- Automatically generate changelog file based on git commits
- align keywords in Gitlab, Rodare, codemeta.json  and HIFIS Software Spotlight
- Correct Email address of Mazen Draw in codemeta.json
- add position information to contact details
- Add milestone information to support request issue template
- New issue template for internal and external support requests
- Fix broken links in doxygen
- correct typo in installation instruction
- add information to installation instructions that adding the local ssh key to the gitlab account is required for cloning the repository
- Correct non-compliant file headers
- Correct statement on supported Ubuntu versions
- Add Tingting Zhang as contributor

### Misc

- Add words to spell checker list
- Refine gitignore rules with respect to postProcessing folders
- Refine gitignore rules related to postProcessing folders
- Enable various models and utilities for release
- Adapt VS Code configuration script to meet linter requirements
- Include recommended VS Code extensions in configuration script
- Fix typo in VS Code settings
- Let VS Code classify C and H files as C++ independently from any extension
- update VS Code settings to disable recommendations and clean-up
- Do not hide .git* in VS Code file explorer (.git folder is hidden anyway)
- Remove tar.gz and tgz from gitignore
- minor corrections in createVSCodeProject.sh
- writeCellCoords functionObject to print the cell-centre coodinates for a given cell id
- Removed duplicate category from .gitignore
- allow tracking of folders with leading digits, only ignore names consisting exclusively of digits and decimal points

### OpenFOAM

- Sprint Cycle Upgrade 10-s.1

### OpenFOAM-Hybrid

- protect dominant continuous phase from disintegration
- simplify user access to curvature
- prevent disintegration of dominant continuous phase

### Physical Modelling

- add kOmegaSSTSatoIt turbulence model
- Implement droplet entrainment model
- Add low-Re correction to Shi wallLubrication model
- Write mass rate only once for master

### Post-Processing

- Added multiphaseEulerFoam-specific functionObject for extracting dimensionless numbers

### Test

- Counter-current test for resolved interface drag
- Correct exit code of foamShellRunner.py upon failure
- add test and demo case for disintegrationToDisperse morphology transfer
- Simplified commands for obtaining directory basename in Allrun scripts
- Refactor functionObject deviation

---

## [HZDR-Multiphase-Addon-9-s.1-hzdr.2] - 2022-06-21

### Bugfix

- Add output to doxygen to check sprint version detection
- correct path for cleaning bot
- Fix wrong variable name in gitlab deploy job for debian package
- fix deployment pipeline for openfoam debian packages

### Deployment

- add bot for cleaning up package files
- enhance fabric for deployment of debian packages on local machines
- remove custom aliases for FOAM_USER_DIR from docker images
- create a latest release badge based on releases
- Add QT dependencies for graphical functionObjects
- remove cleanup for nightly packages
- minor fixes due to wrong variable names
- fix bug in version numbering
- remove dublicated job for release pipeline
- Enhance documentation and bug fixes for debian packaging
- Ensure that sprint related patches of OpenFOAM release are applied for Hemera
- Enable packaging for Debian nightly and stable packages

### Documentation

- Substituted remaining apt-get in installation instructions
- added missing QtCharts package to installation instructions
- fix headers of HZDR dictionary files

### Misc

- replaced m4-based template blockMesh dictionaries using #calc and #codeStream
- update and unify gitignore

### OpenFOAM-Hybrid

- Write mass transfer rates for all morphology transfer phaseTransfer models
- re-formulation of turbulent dispersion force to make it consistent and more stable
- unify default hybrid setups with caseDicts

### Physical Modelling

- Updated SaffmanMei lift model implementation following its contribution to OpenFOAM-dev
- Updated Kusters breakup model implementation following its contribution to OpenFOAM-dev
- Updated AdachiStuartFokkink agglomeration model implementation following its contribution to OpenFOAM-dev
- Added basic infrastructure for an iterative drag and non-drag force correction

### Post-Processing

- generally use CSV as output format

### Test

- added -from and -to options to Alltest
- Fix and simplify some cases regarding post-processing and plotting

### Tutorial

- Added case simulating solid particle agglomeration and breakage

---

## HZDR-Multiphase-Addon-9-s.1-hzdr.1 - 2022-04-26

### Baseline

- swarm correction model to blend out drag and lift model
- breakup and coalescence case dictionaries and degassing boundary condition for bubble columns

### Bugfix

- Update sizeDistribution caseDict to British English
- Cross-project pipeline is now allowed to fail
- patch does not contain any data

### Deployment

- fix missing environment variable for username
- add templates from WM_PROJECT_USER_DIR to ~/.OpenFOAM
- Enable profiling images for docker-compose

### Documentation

- update license information to GPL v3 or later
- add information about clone for docker compose
- correct sprint cycle commit sha for OpenFOAM-dev and ThirdParty-dev
- add links for further information about syntax of Compose files
- add missing docker login registry.hzdr.de
- Correct installation instructions with respect to WM_PROJECT_SITE_DIR
- Added information on git-lfs to installation instructions
- Add doi to codemeta and openfoam website link to Readme.md
- Split command line commands into blocks for efficient use of "copy" button from the browser
- reference to OpenFOAM code quality guide
- New checklist for merge requests containing a possible release contribution
- Modify cite us as for processing with pandoc to pdf
- New installation instructions
- Centred the Class Declaration comment

### OpenFOAM

- Rationalized the naming of scalar limits

### Physical Modelling

- Shi et al (2021) wall lubrication model for rigid spheres

### Population Balance

- functionObject for computing integral and mean properties of a size distribution
- Cleanup of unnecessary includes files
- Prepare coalescence and breakup models of Liao et al. (2015) for contribution
- Correct Ceff coefficient in Liao coalescence model implementation
- CUDA CoulaloglouTavlarides kernel
- Configurable number of CUDA streams
- add reference solution to test cases
- Cuda Test for LehrMilliesMewes kernel
- CUDA LehrMilliesMewes binary breakup model

### Post-Processing

- Python script for calculating time derivative of time series

### Test

- set terminal to color in createGraph scripts of population balance tests

---
automatically generated with [git-chglog](https://github.com/git-chglog/git-chglog)
