modflowpy / flopy

A Python package to create, run, and post-process MODFLOW-based models.
https://flopy.readthedocs.io
Other
507 stars 307 forks source link

bug: get_transmissivities() does not work with MODFLOW 6 models #2170

Open cneyens opened 4 months ago

cneyens commented 4 months ago

Describe the bug

flopy.utils.get_transmissivities() does not work with MODFLOW 6 models.

To Reproduce Pick any MODFLOW 6 example and call flopy.utils.get_transmissivities() which throws an error about missing LPF or UPW package:

import flopy

ws = './mymodel'
name = 'mymodel'
sim = flopy.mf6.MFSimulation(sim_name=name, sim_ws=ws, exe_name='mf6')
gwf = flopy.mf6.ModflowGwf(sim, modelname=name, save_flows=True)
dis = flopy.mf6.ModflowGwfdis(gwf, nrow=10, ncol=10, nlay=1, top = 0, botm = -10)
npf = flopy.mf6.ModflowGwfnpf(gwf, k=10.0, save_specific_discharge=True)

flopy.utils.get_transmissivities(heads=dis.top, m=gwf, r=5, c=5, sctop=-2, scbot=-8)

Expected behavior flopy.utils.get_transmissivities() recognizes that its m argument is a gwf MODFLOW 6 object and computes the transmissivity from there. Also, the r and c arguments are only required with structured grids.

Additionally, as a feature request: a missing head argument (None) might mean that the system is fully saturated? Right now, we're creating dummy head values equal to the model top to pass as the heads argument to do this.