MODFLOW-USGS / modflow6

USGS Modular Hydrologic Model
https://modflow6.readthedocs.io/
Other
250 stars 116 forks source link

MAW and MWR Package issues #331

Closed giovannifi closed 4 years ago

giovannifi commented 4 years ago

I identified some issues with the MAW package and MVR packages. Do explain the issues I run two examples:

  1. MAW issue: I run a first test to assess the ability of the software to shut off an injection bore once a specified head is reached. To run the test I created a simple 2D model with a cell defined with the MAW package. I actually simulated a transient 30 day simulation followed by a stress free steady state run (where I simulate just uniform flow). In the model there are also 2 cells with drains. They will be used for the following test. I built the model with flopy and you can find the script at the following link https://drive.google.com/file/d/1VR8Gzr0Rvy_hSFTfG6kRi0vqK2sesKwS/view?usp=drivesdk

The model domain is defined as follows: Lx = 10000. Ly = 10000. ztop = 0. zbot = -20. nlay = 1 nrow = 100 ncol = 100 delr = Lx / ncol delc = Ly / nrow delv = (ztop - zbot) / nlay

the well is placed at this cell: wrow = 9 wcol = 19

the drains are places here: drn_r = 49 drn_c = 49 idx_drn = (0, drn_r, drn_c) idx_drn2 = (0, drn_r + 5, drn_c + 5)

Hydraulic parameters are homogeneous. For the well I used the “rate_scaling” option to limit the injection where: h0_w = 25.217347615185577 (starting head at the bore: the steady state head at the bore before the stress is applied) max_head = h0_w + 10.0 (limiting head: this is what the manual define as the pumping_elevation) scaling_lenght = 0.5 (scaling_length as per the manual definition)

If you see the figure heads_test1 and rates_test1 you would see that the MAW package is actually working as the injection rate is reduced. There is a sort of limitation of the injection rate, however I do not understand why the head never reaches the max allowed head. It appears that the flux is limited by a lower head cap that I cannot understand.

  1. MVR issue: In this second test I enabled the water mover. Basically all the water drained by the drains supply the injection well. The only injection for the well is the drained water from the drain package. I used the same script of the previous test changing the flag “use_mvr= True”.

By analysing the figures heads_test2 and rates_test2 it appears that the “rate_scaling” option does not work for the water routed to the well. Indeed, the injection rate is identical to the drained rates and the water head at the well is higher than the assigned head constraint. I have the impression that the software would limit only the assigned injection rates not the additional injection rates coming from other sources such as the water mover. Is this the intended behaviour of the software?

Thanks in advance Kind Regards Giovanni Firmani

langevin-usgs commented 4 years ago

@giovannifi, I took a quick look at this and ran your model. For my test, I did not have the mover on. I'm just looking at the rate_scaling option that you have selected. It looks to me like it's working as intended. In the python script, I set print_head = True, so that the calculated MAW heads are printed to the list file. The heads in that file look to be what you would expect. Then I looked at your script, and it seems like you are making your plots with the aquifer heads, not the heads in the well. The following table shows that the calculated well head is very close to the pump elevation plus the scaling rate.

 MAW PACKAGE (MAW) HEADS FOR EACH CONTROL VOLUME   PERIOD      5   STEP        1
 -----------------------
   NUMBER       HEAD    
 -----------------------
     1       35.608     
 -----------------------

The zip file for this model is attached here for convenience. tests.zip

giovannifi commented 4 years ago

@langevin-usgs , I believe that it is all the way around: in the hds file I can read the h_maw (the effective head at the well) and the flag print_head = True reports h_n (please refer to the notation of equation 7-36 of the manual). The last one, to me, should be considered as the aquifer head (the one without the losses). I understand that the intended logic of the software was this one but I wonder if this is the correct approach. Think about the opposite case (abstraction): with your logic the well will continue to abstract even when h_maw is below the pumping elevation, simply because the logic controls the elevation of h_n (h_n = h_maw + losses) that will be higher than h_maw. In the real life the pump has to be turned off when the effective head at the bore goes below the pump elevation. For my particular case, I would probably prefer this logic as I have ministerial prescription for the mounding of the aquifer. Maybe I am missing something and apologies if I am wrong. Thanks again for your very generous and prompt support.

langevin-usgs commented 4 years ago

This does not appear to be a bug.