Skip to content

Commit 6965ef6

Browse files
authored
Merge pull request MODFLOW-ORG#2694 from MODFLOW-ORG/v6.7.0
Release 6.7.0
2 parents abfffea + 700fce5 commit 6965ef6

499 files changed

Lines changed: 25179 additions & 7849 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.build_rtd_docs/Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ PROJECT_NAME = "MODFLOW 6"
3737
# could be handy for archiving the generated documentation or if some version
3838
# control system is used.
3939

40-
PROJECT_NUMBER = "version 6.6.3"
40+
PROJECT_NUMBER = "version 6.7.0"
4141

4242
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4343
# for a project that appears at the top of each page and should give viewer a

.build_rtd_docs/conf.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,20 @@
101101
dst = os.path.join(dstdir, fpth)
102102
shutil.copy(src, dst)
103103

104-
dstdir = "_migration"
104+
dstdir = "_misc"
105105
if os.path.isdir(dstdir):
106106
shutil.rmtree(dstdir)
107107
os.makedirs(dstdir)
108108

109-
print(f"Copy migration guides to {dstdir}")
110-
fpth = "mf6_6_0_prt_migration_guide.md"
111-
src = os.path.join(fpth)
112-
dst = os.path.join(dstdir, fpth)
113-
shutil.move(src, dst)
109+
print(f"Copy special topics to {dstdir}")
110+
fpths = [
111+
"mf6_6_0_prt_migration_guide.md",
112+
"mf6_7_0_prt_migration_guide.md",
113+
]
114+
for fpth in fpths:
115+
src = os.path.join(fpth)
116+
dst = os.path.join(dstdir, fpth)
117+
shutil.copy(src, dst)
114118

115119
# -- build the deprecations table --------------------------------------------
116120
print("Build the deprecations markdown table")
@@ -162,7 +166,7 @@
162166
# -- Project information -----------------------------------------------------
163167

164168
project = "MODFLOW 6"
165-
copyright = "2024, MODFLOW Development Team"
169+
copyright = "2026, MODFLOW Development Team"
166170
author = "MODFLOW Development Team"
167171

168172
# -- Project version ---------------------------------------------------------

.build_rtd_docs/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ Contents:
1616
_mf6run/deprecations.md
1717
mf6io
1818
dev
19-
migration
19+
misc

.build_rtd_docs/mf6_6_0_prt_migration_guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# MODFLOW 6.6.0 Particle Tracking (PRT) Model Migration Guide
22

3-
This document describes how to migrate PRT models from MODFLOW 6.5.0 to 6.6.0. The particle tracker has evolved since the last release — while the basics remain the same, there are a few changes worthy of note and, in some cases, detailed explanation.
3+
This document describes how to migrate PRT models from MODFLOW 6.5.x to 6.6.0, as well as significant changes in behavior.
44

5-
Rather than describing bug fixes and new features separately, this document is structured by topic, and mentions relevant bug fixes within each topic section. See the release notes for a complete (though less detailed) list of fixes, some of which are unrelated to any topic described here.
5+
This document is not a comprehensive list of changes. See the release notes for a complete list.
66

77
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
88
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# MODFLOW 6.7.0 Particle Tracking (PRT) Model Migration Guide
2+
3+
This document describes how to migrate PRT models from MODFLOW 6.6.x to 6.7.0, as well as significant changes in behavior.
4+
5+
This document is not a comprehensive list of changes. See the release notes for a complete list.
6+
7+
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
8+
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
9+
10+
- [Local Z release coordinates](#local-z-release-coordinates)
11+
- [Mass budget](#mass-budget)
12+
- [Period block release settings](#period-block-release-settings)
13+
- [Event timing and reporting](#event-timing-and-reporting)
14+
15+
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
16+
17+
## Local Z release coordinates
18+
19+
The Particle Release Point (PRP) package supports configuring release point vertical coordinates as relative to the cell's vertical thickness via the `LOCAL_Z` option. In MF6.6.0, Newton models using `LOCAL_Z` could produce invalid negative particle tracking times when the head in the release-point cell was above the cell top or below the cell bottom. This was caused by an incorrect conversion of local release point vertical coordinates to model coordinates.
20+
21+
To correct this, the release point is now interpolated vertically between the *effective top* of the cell and the cell bottom:
22+
23+
- If the cell is **convertible**, the effective top is the head in the cell, constrained to be no higher than the geometric top and no lower than the cell bottom.
24+
- If the cell is **confined**, the effective top is the geometric top of the cell.
25+
26+
To distinguish convertible from confined cells at particle release time, the user must now specify a binary grid file entry (`GWFGRID`) in the PRT FMI package when release coordinates are configured with `LOCAL_Z` and the PRT model is running in a separate simulation from the GWF model. A `GWFGRID` entry is not required if the GWF and PRT models run in the same simulation.
27+
28+
For instance, a sample FMI package input file with `GWFGRID`:
29+
30+
```
31+
BEGIN OPTIONS
32+
END OPTIONS
33+
34+
BEGIN PACKAGEDATA
35+
GWFBUDGET FILEIN gwf.bud
36+
GWFHEAD FILEIN gwf.hds
37+
GWFGRID FILEIN gwf.dis.grb
38+
END PACKAGEDATA
39+
```
40+
41+
## Mass budget
42+
43+
The PRT model mass budget has been rebalanced with a new term to accumulate the mass of terminated particles. Previously, particle mass remained in storage regardless of particle status, leaving the particle mass budget unbalanced at the end of the simulation. Cell-by-cell mass storage is also now reported in the binary budget file, where previously only cumulative mass storage was reported in the list file.
44+
45+
**Note**: Scripts or post-processing tools that parse PRT budget output may need to be updated to account for the new terminated-mass term.
46+
47+
## Period block release settings
48+
49+
The Particle Release Point (PRP) package is responsible for configuring when particles should be released. Release settings can be configured by period block, as with other MODFLOW 6 stress packages.
50+
51+
In MF6.6.0, the PRP package could fail to correctly load period block release settings, which could prevent particles from being released as configured, or cause excess particles to be released because empty period blocks intended to stop fill-forward at a certain stress period were not properly recognized. This has been corrected in MF6.7.0.
52+
53+
**Note**: If a model relies on period block release settings, results may differ from previous versions. Verify that particle releases occur as intended.
54+
55+
## Event timing and reporting
56+
57+
PRT previously reported events occurring exactly on a boundary between time steps as occurring during the *preceding* step. While this properly credited the event to the flow conditions responsible for the particle's trajectory, it was inappropriately applied to events such as particle releases, causing the stress period and time step to be reported incorrectly for some events.
58+
59+
In MF6.7.0, PRT reports each event as occurring in the stress period and time step in which the event is triggered. This means simultaneous releases can be credited to different time steps. For example, a particle release scheduled using an explicit time that falls on the boundary between two time steps occurs at the first opportunity, i.e., at the end of the earlier time step. On the other hand, if a period block is used to schedule a particle release at the beginning of the later time step, the release occurs in that time step, not the previous one.
60+
61+
**Note**: When comparing tracking output between versions, stress period and time step values for boundary events may differ.

.build_rtd_docs/migration.rst

Lines changed: 0 additions & 10 deletions
This file was deleted.

.build_rtd_docs/misc.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Special Topics
2+
--------------
3+
4+
This section contains miscellaneous content.
5+
6+
.. toctree::
7+
:maxdepth: 1
8+
:glob:
9+
10+
_misc/mf6_6_0_prt_migration_guide
11+
_misc/mf6_7_0_prt_migration_guide

.doc/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
# -- Project information -----------------------------------------------------
5050

5151
project = "MODFLOW 6"
52-
copyright = "2024, MODFLOW Development Team"
52+
copyright = "2026, MODFLOW Development Team"
5353
author = "MODFLOW Development Team"
5454

5555
# -- General configuration ---------------------------------------------------

.github/actions/test-extended-win/action.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
name: Test extended MF6 (Windows)
23
description: Build and test extended MODFLOW 6 on Windows
34
runs:
@@ -9,7 +10,12 @@ runs:
910
- name: Update flopy
1011
working-directory: modflow6
1112
shell: cmd
12-
run: pixi run update-flopy
13+
run: |
14+
set "cmd=pixi run update-flopy --dfnpath doc\mf6io\mf6ivar\dfn"
15+
if "%RELEASEMODE%"=="true" (
16+
set "cmd=%cmd% --releasemode"
17+
)
18+
%cmd%
1319
1420
- name: Get executables
1521
working-directory: modflow6/autotest
@@ -24,7 +30,6 @@ runs:
2430
unix2dos -n "%GITHUB_WORKSPACE%\modflow6\.github\common\test_modflow6_extended.bat" "%TEMP%\test_modflow6_extended.bat"
2531
2632
- name: Test programs (extended)
27-
if: github.ref_name == 'master'
2833
shell: cmd
2934
env:
3035
REPOS_PATH: ${{ github.workspace }}

.github/actions/test-extended/action.yml

Lines changed: 61 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,34 @@ runs:
1919
if: runner.os == 'macOS'
2020
shell: bash
2121
run: |
22-
brew install netcdf-fortran
22+
brew install netcdf-fortran libevent
2323
nc-config --all
2424
nf-config --all
2525
2626
- name: Setup GNU Fortran
27-
if: runner.os != 'macOS'
2827
uses: fortran-lang/setup-fortran@v1
2928
with:
3029
compiler: gcc
3130
version: 13
3231

32+
- name: Build OpenMPI (macOS)
33+
if: runner.os == 'macOS'
34+
shell: bash
35+
run: |
36+
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.gz
37+
tar -xzf openmpi-4.1.6.tar.gz
38+
cd openmpi-4.1.6
39+
./configure --prefix=$GITHUB_WORKSPACE/openmpi --with-libevent=$(brew --prefix libevent) --enable-mpi-fortran=usempi FC=gfortran CC=gcc CXX=g++
40+
make -j$(sysctl -n hw.ncpu)
41+
make install
42+
43+
- name: Patch OpenMPI wrapper for macOS ARM linker
44+
if: runner.os == 'macOS'
45+
shell: bash
46+
run: |
47+
# Add -Wl,-ld_classic to the linker_flags line
48+
sed -i '' 's/^linker_flags=/linker_flags=-Wl,-ld_classic /' $GITHUB_WORKSPACE/openmpi/share/openmpi/mpifort-wrapper-data.txt
49+
3350
- name: Checkout PETSc
3451
uses: actions/checkout@v4
3552
with:
@@ -43,14 +60,28 @@ runs:
4360
echo "PKG_CONFIG_PATH=$GITHUB_WORKSPACE/petsc/arch-gcc-opt/lib/pkgconfig" >> $GITHUB_ENV
4461
echo "LD_LIBRARY_PATH=$GITHUB_WORKSPACE/petsc/arch-gcc-opt/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
4562
echo "$GITHUB_WORKSPACE/petsc/arch-gcc-opt/bin" >> $GITHUB_PATH
63+
if [ "$RUNNER_OS" == "macOS" ]; then
64+
echo "PATH=$GITHUB_WORKSPACE/openmpi/bin:$PATH" >> $GITHUB_ENV
65+
echo "LD_LIBRARY_PATH=$GITHUB_WORKSPACE/openmpi/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
66+
fi
4667
4768
- name: Configure PETSc
4869
shell: bash
4970
working-directory: petsc
5071
run: |
51-
sudo wget -P $GITHUB_WORKSPACE/petsc https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.2.tar.gz
52-
sudo ./configure PETSC_ARCH=arch-gcc-opt --download-fblaslapack --download-openmpi=$GITHUB_WORKSPACE/petsc/openmpi-5.0.2.tar.gz --with-debugging=0
53-
sudo make all
72+
if [ "$RUNNER_OS" == "macOS" ]; then
73+
./configure PETSC_ARCH=arch-gcc-opt --download-fblaslapack --with-mpi-dir=$GITHUB_WORKSPACE/openmpi --with-debugging=0
74+
else
75+
wget -P $GITHUB_WORKSPACE/petsc https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.2.tar.gz
76+
./configure PETSC_ARCH=arch-gcc-opt --download-fblaslapack --download-openmpi=$GITHUB_WORKSPACE/petsc/openmpi-5.0.2.tar.gz --with-debugging=0
77+
fi
78+
make all
79+
80+
- name: Show PETSc configure log
81+
if: failure()
82+
shell: bash
83+
working-directory: petsc
84+
run: cat configure.log
5485

5586
- name: Build modflow6
5687
shell: bash
@@ -76,7 +107,12 @@ runs:
76107
- name: Update flopy
77108
shell: bash
78109
working-directory: modflow6
79-
run: pixi run update-flopy
110+
run: |
111+
cmd="pixi run update-flopy --dfnpath doc/mf6io/mf6ivar/dfn"
112+
if [[ "${{ env.RELEASEMODE }}" == "true" ]]; then
113+
cmd="$cmd --releasemode"
114+
fi
115+
eval "$cmd"
80116
81117
- name: Get executables
82118
shell: bash
@@ -85,7 +121,7 @@ runs:
85121
GITHUB_TOKEN: ${{ github.token }}
86122
run: pixi run get-exes
87123

88-
- name: Test programs (macOS)
124+
- name: Check lib dependencies (macOS)
89125
if: runner.os == 'macOS'
90126
shell: bash
91127
working-directory: modflow6
@@ -94,9 +130,8 @@ runs:
94130
run: |
95131
otool -L bin/libmf6.dylib
96132
echo $DYLD_LIBRARY_PATH
97-
pixi run autotest --parallel --netcdf -k "test_par or test_netcdf"
98133
99-
- name: Test programs (Linux)
134+
- name: Check lib dependencies (Linux)
100135
if: runner.os != 'macOS'
101136
shell: bash
102137
working-directory: modflow6
@@ -105,4 +140,20 @@ runs:
105140
run: |
106141
ldd bin/libmf6.so
107142
echo $LD_LIBRARY_PATH
108-
pixi run autotest --parallel --netcdf -k "test_par or test_netcdf"
143+
144+
- name: Test programs
145+
working-directory: modflow6
146+
shell: bash
147+
env:
148+
REPOS_PATH: ${{ github.workspace }}
149+
MARKERS: ${{ env.MARKERS }}
150+
FILTERS: ${{ env.FILTERS }}
151+
run: |
152+
cmd="pixi run autotest --parallel --netcdf"
153+
if [[ "${{ env.MARKERS }}" != "" ]]; then
154+
cmd="$cmd -m '$MARKERS'"
155+
fi
156+
if [[ "${{ env.FILTERS }}" != "" ]]; then
157+
cmd="$cmd -k '$FILTERS'"
158+
fi
159+
eval "$cmd"

0 commit comments

Comments
 (0)