Horizontal well using MNW2 #2430
Replies: 5 comments
-
Hi @Saman-M-B, In the case of 0 qdes for multi-node wells, this means that no water is extracted from the well, but it does not mean no water is flowing through the well. Multi-node wells can (and will) act as flow path if they are in your model even if they are not actively pumping. I guess in that mode, the wells are causing convergence issues with your model? When pumping the numerical solution is probably easier, and you're not seeing those convergence issues. I'm not entirely sure about the MNW2 package (it's been a while since I've used it), but in MF6 you can set your Multi Aquifer Wells (MAW) to active/inactive status per stress period, which I believe allows you to simulate periods without the well. There is probably some variable you can set in the stress_period_data that sets the well to active/inactive. Perhaps the ITMP variable? See here: https://water.usgs.gov/ogw/modflow/MODFLOW-2005-Guide/mnw2.html. Hopefully, someone with more knowledge of the intricacies of these packages can confirm this. P.S. this issue should probably be converted to a discussion. |
Beta Was this translation helpful? Give feedback.
-
Thanks @dbrakenhoff , |
Beta Was this translation helpful? Give feedback.
-
Interesting question, I have no idea what that would look like either, but perhaps taking a look at the detailed water balance of each cell with a MNW could provide some insights? But to do that the model does have to converge of course... 🙈. It's difficult to say what is causing the convergence issues. Have you tried playing around with parameters in the numerical solver? |
Beta Was this translation helpful? Give feedback.
-
Yes, I tried different configurations for the solver but since it's the NWT solver to begin with, it should come smoother. I only checked each stress period water balance and seemed to me when qdes is zero but the well is active, you have some water passing through but some water would remain in the horizontal well system (maybe small but still) meaning to me that even when pump is not active, they would collect some water due to natural flow dynamics, which is ok and maybe physically accurate even. But like I said this complicates analysis of MNW2 performance overall. Especially my general assumption was that the value for MNW2 in water budget (*.list) would be the cumulative pumped water and not water entering the shafts. I'm not sure if WEL package would behave the same (I assume so) if you put q to zero. In my case, I simply deactivated the MNW2 for the first stress periods and ran the model again. I did encounter convergence error going into stress periods when MNW2 is active but that makes sense and it's ok. But for sure getting a convergence error with "qdes" zero from the very first stress period is interesting to me. P.S.: I explained how I only used MNW2 pump setting and only worked without convergence error even with "qdes" zero for active well from the first stress period only when I changed and reduced "kskin". Originally I assumed maybe there is a direct connection between the ratio of "kskin" and the "hk" value for the media where the well is located but then it worked without active MNW2. |
Beta Was this translation helpful? Give feedback.
-
With respect to this point, My horizontal well gallery has two reserved shafts which only might get activated in emergency or specific conditions. Now I can find a workaround it and define two sets of wells, one with permanent shaft nodes and one with reserved ones, and place in each of them a pump with overall abstraction rates. However, I was wondering if there is a more convenient way to do this. Like if there was a flag in the node_data or stress_period data which I could say from this specific stress period to another stress period also activate these two reserved nodes. You can do this for wells inside itmp but that only works as far as I checked MNW2 documentation if you place a pump that would be my first workaround method. But not sure if there is already such a method implemented in MNW2. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I wasn't sure whether to make this argument and question in the Q&A section or here. So...
I'm using MODFLOW-NWT to simulate a real case study where from a certain time, a horizontal well gallery gets activated in the total abstraction system. I used MNW2 for this but I encountered strange behavior which I'm going to explain here. So not sure if this is an actual issue with the package, Flopy bug, or simply my own model configurations/mistakes.
So overall the packages I used for boundary conditions are typical ones like CHD, RIV, RCH, WEL, and MNW2. I have 108 stress periods and 30 time steps each in my transient model. Originally I developed the model for only 68 stress periods and 30 time steps. In this period there is no horizontal well configured and activated. I then calibrated this model with Pest++ (PyEMU package). My idea then was to see if I implemented this horizontal well gallery on this calibrated transient model and extended the boundary conditions to 108 stress periods, what would be the results. Of course, the actual idea would be to simply simulate this model entirely with 108 stress periods and Horizontal wells and calibrate it.
I defined my Horizontal well using MNW2 like this:
k | i | j | wellid | losstype | pumploc | qlimit | ppflag | rw | rskin | kskin | pumplay | pumprow | pumpcol
2 | 119 | 160 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 161 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 162 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 163 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 164 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 165 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 166 | HBF_1 | SKIN | 1 | 0 | 0 | 1.0 | 1.5 | 20.0 | 2 | 119 | 166
2 | 119 | 167 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 168 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 169 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 170 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 171 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 172 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 119 | 173 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 113 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 114 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 115 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 116 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 117 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 118 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 120 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 121 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 122 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 123 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 124 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
2 | 125 | 166 | HBF_1 | SKIN | 0 | 0 | 0 | 1.0 | 1.5 | 20.0 | | |
As you can see, the Horizontal well gallery is a simple cross shape to make it easier and maybe a little bit more accurate for MNW2. Also, the values for rw, rskin, and kskin are hypothetical. And my stress period data was like this:
{0: per wellid qdes
0 0 HBF_1 0.0,
1: per wellid qdes
1 1 HBF_1 0.0,
2: per wellid qdes
2 2 HBF_1 0.0,
3: per wellid qdes
3 3 HBF_1 0.0,
.
.
.
67: per wellid qdes
67 67 HBF_1 0.0,
68: per wellid qdes
68 68 HBF_1 -2909.7,
69: per wellid qdes
69 69 HBF_1 -4615.3,
70: per wellid qdes
70 70 HBF_1 -8065.0,
.
.
.
106: per wellid qdes
106 106 HBF_1 -4376.4,
107: per wellid qdes
107 107 HBF_1 0.0}
So for itmp of MNW2, I activated the well for all stress periods simply with this idea that if the "qdes" is zero even if the well is active still there won't be any usage of MNW2 (Which I'll get to it shortly).
So based on this configuration for MNW2, when I executed the model, I got the convergence error from the first stress period which is a steady-state one. Weird right? The same model works just fine with the calibrated values (BTW, I calibrated the model for hk, vka, and sy) without MNW2 but not when I activate MNW2. and the weirdest for me (I'm not professional here) was the type of error that I got because convergence for a calibrated model in a stress period where there is no MNW2 action is out of place.
So to diagnose this, I tried to play with MNW2. First, I thought maybe the node_data configurations were troublesome. So I tried to define the nodes for this cross-shaped horizontal well gallery with order from left-to-right and top-to-bottom directions. Didn't work. Then, I removed 99% of the table above and only left there the pump. Still didn't work and got the same error. Then I changed the values of the pump and weirdly worked. How? I reduced "kskin" to 10 and suddenly the model worked just fine. Still not sure when the discharge from MNW2 is zero for the first 67 stress periods and why even "kskin" should matter but hey it worked. So then I put again all the information of the well gallery as the same above and just changed the "kskin". Guess what? didn't work.
So I thought since eventually if MNW2 did work, I need to perform the calibration again anyway so let's put the values for hk, vka, and sy before calibration. And now guess what? IT WORKED!!!
However, It was far from a happy ending. Now I looked at the *.list file to see how MNW2 actually worked. weirdly enough, I had MNW2_IN values from the very first stress period. Shocking right? Why would MNW2 first process any kind of behavior when "qdes" is zero and secondly, why inflow? But this was an easier problem. I simply deactivated the well for the first 68 stress period in the "itmp" variable and everything worked just fine.
To sum-up, My two takes from this back-and-forth with MODFLOW and MNW2 in terms of defining horizontal well, Are these issues:
I'm not an expert on the physics behind how MNW2 works so some of these two issues might have risen from that. As I said before, not sure if this is an actual issue with the package, Flopy bug, or simply my own model configurations/mistakes. Because to be sure, I created a synthetic case also and tried the second issue, and still MNW2 created inflow when the well was active but "qdes" was 0.
Beta Was this translation helpful? Give feedback.
All reactions