20260628 development build
MODFLOW 6 development build, Jun 28, 2026.
New Functionality
Advanced Stress Packages
- The Multi-Aquifer Well (MAW) Package now supports non-vertical (slanted or horizontal) well connections. When the NON_VERTICAL_WELLS option is specified, an ANGLEDATA block can be used to assign a tilt angle (deviation from vertical) to individual well connections. The saturated conductance for those connections is scaled by the in-cell screen length, which is calculated from the screen top, screen bottom, well radius, and tilt angle (or specified directly with an optional connection length), instead of the vertical screen thickness. A connection length must be specified for horizontal connections, and the MEAN conductance equation is recommended for horizontal connections.
Model
- Previously PRT model particle events were written to output file(s) immediately. By default, PRT will now buffer events in memory before writing them to disk. Introduce a new option for the PRT Output Control (OC) package, SCRATCH_BUFFER, which enables buffering events in scratch files instead of memory. This can avoid out-of-memory errors at the price of increased file IO and runtime.
Stress Packages
- Added a new AUTO_FLOW_REDUCE_AUXNAME option to the Well (WEL) Package. When AUTO_FLOW_REDUCE is active, the pumping rate of a well is smoothly reduced as the cell head drops toward the cell bottom, using a single global turnoff threshold for all wells in the package. The new AUTO_FLOW_REDUCE_AUXNAME option names an auxiliary variable whose value sets the turnoff threshold for each well individually, so different wells in the same package can begin reducing their pumping at different heads. The per-well auxiliary value overrides the global AUTO_FLOW_REDUCE value and is interpreted the same way: as a length above the cell bottom when FLOW_REDUCTION_LENGTH is specified, or otherwise as a fraction of the cell thickness. If AUTO_FLOW_REDUCE_AUXNAME is specified without AUTO_FLOW_REDUCE the option is ignored with a warning, and an error is reported if the named auxiliary variable does not exist.
- Grid array-based input (READARRAYGRID) is now available for the CHD, WEL, DRN, RIV, and GHB stress packages. Grid array-based input allows stress package data to be specified as full-grid arrays using the DNODATA value (3.0E+30) to identify inactive cells. Auxiliary variable arrays persist across stress periods if not re-specified, and CONSTANT array input is supported for any array after the first in a period block.
Bug Fixes And Other Changes To Existing Functionality
Basic Functionality
- Stop with an informative error if a discretization package is missing after loading the model input file's PACKAGES block.
- Previously, GWF model output files could only be referenced by a single coupled model's FMI package. This might be necessary for certain configurations where multiple transport models or particle tracking models in the same simulation need flow information from a previous GWF simulation. Referencing the same GWF output files from multiple coupled models would cause a crash. Fix file-opening logic to allow multiple coupled models to refer to the same GWF model's output files.
- The BMI interface's get_grid_model_type function worked only for numerical model types such as GWF, GWT, and GWE, but would crash for PRT models. Fix the function's implementation to work with all model types.
Exchanges
- When a MVR connection was included as part of an exchange between two models, it was possible to list a model name in the PACKAGES block of the MVR input file that is not one of the two models included in the exchange. A check was added that reports an error message stating that a model name listed in the exchange MVR input file is not one of the two models connected by the exchange.
- Avoids an unhandled and unnecessary exception in cases where a GWF-GWF exchange is configured with a MVR package, but the corresponding GWT-GWT exchange does not have a MVT package enabled.
Internal Flow Packages
- Resolved mass-balance errors in the Central and UTVD numerical schemes caused by inconsistent interpretation of cell-to-interface distances (cl1/cl2).
- When a horizontal flow barrier is placed between two cells, MODFLOW checks to ensure that the cells are adjacent. This check did not function correctly for DISU grids, in some cases, if the IDOMAIN functionality was used to remove cells. The check for two adjacent DISU cells was corrected to work for IDOMAIN functionality.
Model
- The Flow Model Interface (FMI) package for transport and tracking models conducts TDIS compatibility checks during each stress period to ensure that the model's time discretization is compatible with that of the flow model. In particular, if a flow model stress period has just one time step, the transport or tracking model may have any number of time steps. However, if a flow model stress period has more than one time step, the transport or tracking model must have the same number of time steps. Simulations would previously stop with an error if the transport or tracking model violated this rule for any stress periods up to the simulation's last, but would not raise an error for the last stress period. The compatibility check was updated to include the last stress period. Simulations will now stop with an error if the transport or tracking model violates this rule for any stress period in the simulation.
- Fix the PRT PRP package's DRAPE option's behavior. A draped particle's release was previously reported in the original release position, followed by a DROPPED (ireason=6) event due to the particle reaching the water table at tracking time as a result of the default DRY_TRACKING_METHOD setting DROP. This is inconsistent with the intent of the DRAPE option: DRAPE is applied before release to control a particle's release position. Draped particles will now be released in the highest active cell, at the water table if the cell is convertible or at the geometric top if the cell is confined, and no DROPPED event will be reported.
- PRT was described as configuring a single release at the beginning of the simulation by default, but a release was in fact scheduled for the first time step of every stress period. Fix the default release behavior so a single release occurs at the beginning of the simulation.
- A PRT model coupled by an exchange to a GWF model that uses adaptive time stepping (ATS) would erroneously produce output for discarded/retried time step solve attempts. PRT output would also be erroneously produced for discarded Picard iterations. This has been fixed such that PRT will only produce output for successful solve attempts when used with an ATS flow model, and only for the final Picard iteration when MXITER > 1.
- In MF6.7.0, the PRT model began to require binary grid (GRB) files provided to the Flow Model Interface (FMI) package to contain ICELLTYPE when any Particle Release Point (PRP) package used LOCAL_Z release coordinates, so PRT could distinguish confined from convertible cells when converting local z to model z coordinates. This requirement is unnecessary and has been removed. A single formula
$z = bot + localz \cdot sat \cdot (top - bot)$ works correctly for both cell types, since$sat = 1$ for confined cells, and for convertible cells$sat = (head - bot) / (top - bot)$ clamped to$[0, 1]$ . Particle z coordinates near the cell top or bottom may differ slightly from before, since saturation is smoothed near the top and bottom.
Netcdf
- Fix an indexing issue in structured NetCDF export where READASARRAYS packages (RCHA, EVTA) with time-varying per-period arrays would crash with a NetCDF edge-exceeds-bound error when writing any stress period after the first.
Parallel
- The adaptive time stepping algorithm (ATS) was not working correctly in parallel mode. This applies to GWT and GWE models, when the model time step derived from the ATS_PERCEL parameter is not uniform across processes. In such a case, a deadlock occurred and the simulation was stalled. This fix ensures that the actual calculation time steps are synchronized across all processes such that they remain in lockstep.
- Mover (MVR) Package connections across two or more models running in parallel were previously supported for flow but not for solute or energy transport. GWT-GWT or GWE-GWE exchanges that also include MVT or MVE connections, respectively, is now supported for simulations run in parallel mode.
Stress Packages
- The default values for DENSITY_WATER, HEAT_CAPACITY_WATER, LATENT_HEAT_VAPORIZATION specified in the OPTIONS block were not set as indicated in the MF6IO guide. Defaults for these three variables now set as documented in the MF6IO guide.
- For the Well (WEL) Package, when AUTO_FLOW_REDUCE is active and FLOW_REDUCTION_LENGTH is specified, the Newton-Raphson linearization incorrectly used the cell thickness instead of the unit length (1.0) when computing the turnoff threshold. This produced an incorrect Jacobian term and inconsistent behavior between the standard and Newton formulations. The thickness calculation in the Newton code path now respects the FLOW_REDUCTION_LENGTH option, consistent with the non-Newton code path.
- Reverts a 6.4.3 change that reset auxiliary variable arrays to zero each stress period in READASARRAYS packages (RCHA, EVTA). The earlier change had the consequence of zeroing the AUXMULTNAME multiplier array when not re-specified in a period block, effectively eliminating recharge or ET in subsequent stress periods. This behavior now is consistent across Grid Array and Layer Array package types. GWF models that use RCHA or EVTA and the AUXMULTNAME option may give different answers depending on how auxiliary variables were specified.