The source code of the dynamic two-phase pore-network model (DPNM) developed in Development of a Dynamic Two-Phase Pore-Network Model for Evaporation-Driven Salt Precipitation: Pore-Scale Processes and REV-Scale Implications (Water Resources Research, manuscript 2026WR045679) is archived in this data set.
The code is a DuMuX module (pnm2pncmin2) for evaporation-driven NaCl precipitation, with a Pitzer water-activity model and a run-time precipitation-rate coefficient. Figure source data, simulation outputs and plotting scripts are archived in the companion replication data set: https://doi.org/10.18419/DARUS-6573.
Package contents
chen2026a_dpnm.tar.gz extracts to pnm2pncmin2/ and contains the module source, appl/2pncmin/params.input, grids in appl/grids/, case commands in appl/2pncmin/manuscript_cases.md, install_chen2026a.py, docker/Dockerfile, README.md and LICENSE.md (GPL-3.0-or-later). The archive's SHA256 is supplied in chen2026a_dpnm.tar.gz.sha256. A copy of the README is also provided separately.
Installation from source
mkdir DUMUX
cd DUMUX
tar -xzf /path/to/chen2026a_dpnm.tar.gz
python3 pnm2pncmin2/install_chen2026a.py
The installer clones Dune and DuMuX from their public repositories, checks out the exact commits listed in the README, configures the modules and builds pnm_2pncmin_ni_reg (NaCl brine) and pnm_2pncmin_ni_water_reg (pure water). Both executables are placed in pnm2pncmin2/build-cmake/appl/2pncmin/. See the README for the compiler, CMake and library requirements.
Docker environment
tar -xzf chen2026a_dpnm.tar.gz
mkdir -p results
docker build -t chen2026a-image -f pnm2pncmin2/docker/Dockerfile .
docker run --rm -it -v "$PWD/results":/results chen2026a-image
These commands use a Linux shell. The Dockerfile installs and compiles the module in Ubuntu 24.04. Inside the container, the module is at /opt/dumux/pnm2pncmin2 and the working directory is /results.
Running cases
appl/2pncmin/manuscript_cases.md gives the executable, grid and command-line options for each listed case. Use appl/2pncmin/params.input and run each case in a separate output directory. The simulations write evaporation.csv and VTP output indexed by pnm_2pncmin.pvd. The README documents the verification results and the numerical differences associated with the OpenBLAS kernel selection.