Gv8 Tutorial Manual-3
Gv8 Tutorial Manual-3
drawdown from the results of a particular time step just as we did in the mine dewatering
example in the last section. In previous versions of MODFLOW, drawdown was always
computed from the starting heads for the simulation. In the current model, we would like
to compute drawdown from new pumping wells from the results of the steady-state stress
period. To do this, select Model|MODFLOW|Package Options – Output Control tab.
Turn on the option for custom output control and enter 11 for the number of custom
steps.
The drawdown predicted by the model is about 4 to 7 meters at the existing wells. In
many parts of the USA, that would be too much impact to allow the well to operate.
Another issue that often causes problems is the amount of water removed from surface
water.
To display the amount of water removed from the river by this new well, select
Plot|Hydrograph|Mass Balance|Model Summary. The graph below has been modified
to make the river flow a bold line (double-click the graph to modify it). You can see that
about half of the new well pumping comes from the river (bold dashed line is the river
outflow, lighter dashed line above it is the well outflows). Depending upon the amount
of surface flow, that might be too much to allow the well to pump.
Introduction
This exercise illustrates how different boundary conditions can be used to create the same
model with the same computed water levels. Three different models will be designed and
the same predictive scenario will be run with each design. You will see that although the
models all produce the same results in an unstressed state, the predictions when the
model includes a pumping stress are all very different. This is one example of model
non-uniqueness. As part of the exercise, you will also learn new tools within
Groundwater Vistas for designing groundwater models.
The model will be a simple confined aquifer with a uniform gradient from east to west. If
this were a real-world study, the model could be thought of as a small piece of a regional
aquifer where there is limited data outside the area of interest and no regional hydrologic
boundaries close to the site. This situation is actually quite common in modeling where
you only have data in a very small part of a much larger system. In that case, the modeler
will often keep the model small and create a design that allows groundwater to flow in
one side of the model and out the other based on an observed flow direction and gradient.
The figure below shows conceptually what is being simulated.
Start by selecting File|New from the Groundwater Vistas menu. Change the number of
columns to 75 and the X and Y spacing to 200 m. The remaining options can be left at
their default settings. This will create a one-layer model with K=100 m|d, aquifer
thickness of 100 m, 50 rows, and 75 columns.
Click OK when you are finished entering the data described above.
In the first version of this model you will add constant head cells on the east and west
sides of the model. The head on the west is 100 m and the head on the east is 110 m.
Start by selecting BCs|Constant Head and then select BCs|Insert|Window or click the
button on the toolbar. Now, move the cursor somewhere inside the upper left
(northwest) cell in the model, hold down the left mouse button, and drag a window so the
end point is inside the lower left (southwest) cell in the model. Release the mouse button
and the following dialog appears.
Repeat this procedure along the right (eastern) edge of the model and use a head value of
110 m.
Use File|Save As to save this new model as BCTEST2.GWV. GV will ask if you want
to change root file names. Enter bctest2 for the new modflow root file name.
Now, run the model by clicking the calculator as you did in the first model and import the
results. The water level contours should look exactly as before (see below).
Make sure that you saved the second run to a file called bctest2.gwv using File|Save As.
Open the first model you created in this session, bctest1.gwv using File|Open. This is the
model with constant heads on the east and west but NOT on the north and south. You
will change the eastern constant head cells to constant flux (wells).
In order to set the appropriate flow rate (flux) in these cells, we need to know what was
computed in the first model. Run that model again and import the results, including the
cell-by-cell flows. To do this, put a check to the right of the *.cbb file on the import
dialog, as shown below.
Now we will put the constant flux cells in the model. First, delete the constant head cells
on the right (east) by selecting BCs|Constant Head and then BCs|Delete|Window. Drag
a window that encloses the eastern cells and Vistas will delete them. Now, use
BCs|Well. Select BCs|Insert|Window or click the button on the toolbar. Now,
move the cursor somewhere inside the upper right (northeast) cell in the model, hold
down the left mouse button, and drag a window so the end point is inside the lower left
(southeast) cell in the model. Release the mouse button and a well dialog appears.
Change the flow rate from 0.0 to 1351.0.
Select Model|MODFLOW|Packages and rename the root name as bctest3 so that it will
be separate from the previous two runs. Also, use File|Save As and rename the Vistas
file to bctest3.gwv. Now run the model and your screen model should now look like the
one below.
To test the predictions from these three different models we will add one pumping well in
the center. Select AE|Well and move the cursor to row 25, column 38 and click the left
mouse button. An analytic well dialog is shown on your screen. Enter the flow rate as -
100000.0 (100,000 m3/d) – in MODFLOW a negative flow rate means that the water is
pumped out of the model.
The other two model runs should look like the ones below.
Introduction
The following tutorial focuses on Groundwater Vistas’ tools for model calibration and uses a synthetic
model to illustrate the importing and manipulation of calibration targets and using automated sensitivity
analysis. Defining a set of calibration targets is a fundamental first step in applying any inverse model,
such as Pest. Groundwater Vistas has several different types of targets, including head, drawdown, flux,
concentration, gradient (magnitude & direction), and subsidence. In this simple example, we will import
head targets into a model and explore the different ways of displaying and manipulating targets in
preparation for using Pest.
To start, open the model called c:\gwv8\tutorial\CalEx0.gwv. Run the model by clicking the calculator
button and import the results after the run is finished. Your screen should look like the one below:
The option is called “Continue MODFLOW Simulation Even if Convergence Not Achieved”. You should
make a habit of always turning this on when using automated sensitivity analysis and Pest.
The second option that helps with slightly unstable model simulations is related to the PCG2 solver. The
PCG2 solver has a bad habit of often getting to the end of the run and then just slightly oscillating between
outer iterations without ever converging fully. We added an option to stop iterating if the two convergence
criteria (head and residual) are met in N successive outer iterations. Usually 5 to 10 is a good number. If
want the target to go. You can also click the button on the toolbar and then left-click to add the target
in the same manner. Usually, however, there are far too many targets to insert them all manually. The
more common way of adding targets is either to import from a text file (e.g. comma-delimited Excel
spreadsheet) or from a GIS shapefile. We will illustrate each method.
Start by importing a set of targets from a text file. The file is called CalEx0_targets.csv and should be in
the gwv8\tutorial directory. You can open this file in Excel to view the contents.
You will now see that a problem has occurred. Your targets have disappeared. This happened because we
imported the targets twice, once from the text file and once from the shapefile. Groundwater Vistas does
not delete duplicate targets, but rather simply keeps adding them to the model as you import them. If two
targets lie identically at the same location, they essentially “white out” each other and nothing is displayed.
This is a rather common problem, which is why we set up this computer session the way we did. You can
rectify the problem in a couple of ways. Generally the easiest approach is to delete all targets and import
again. This is done by selecting Edit|Select All|Targets followed by Edit|Delete (or just hit the Del key).
Another approach since we only have a few targets is to select Edit|Analytic Element List and click on the
duplicate targets and hit the Delete button, as shown below.
Pick a method outlined above to get back to one set of 16 calibration targets.
Groundwater Vistas computes the residual (error) at each target when the results are imported. If you
import targets after importing results, the residuals have not been computed. Simply select Plot|Import
Results and click OK to update the target calculations.
There are many ways of analyzing residuals at target locations. The most common is to get the statistical
summary and make basic charts. This is done through Plot|Calibration|Statistics-Plots. Do that now and
then click the statistics button. You should get a summary that looks like the following:
If you want a spreadsheet of the details for these targets, click Close and then click the Export button. The
file that is exported is a comma-delimited file you can open in Excel. Various plots can also be created
This shows that almost half of the total sum of squared errors (objective function in Pest) is controlled by
just 4 targets and 20% of the sum of squares is the one worst target (558 ft2 for target 1 in the chart above).
This is not a significant problem early in the calibration. However, after you have been working on the
calibration this might be an indication that there are a few targets (maybe just 1 target) that is a significant
part of the overall objective function. In that case, you may consider using a weight less than 1.0 to remove
any adverse influence of this one target on the calibration. Remember that Pest is trying to lower the
overall sum of squared residuals. If just a couple of targets are controlling that value, then Pest will be
spending most of its effort on those few targets.
Other common displays you can create for the target set is to post the residual at each target and/or draw a
residual circle at each target. This is done using Plot|Calibration|Post Residuals and
Plot|Calibration|Post Residual Circles (or just use Plot|What to Display). The options for how these
postings are created are controlled using Plot|Calibration|Options. Try posting residuals and residual
circles for the current model. Your plot may look something like the one shown below.
In order to better see what is going on, we need to change the scaling of the Y-axis. Right click the graph
and choose properties. On the Y-axis tab, change the maximum Y to 500. Now the graph is easier to read,
as shown below.
In summary, we made 5 sets of 66 runs each. After each set, we changed one parameter value and lowered
our sum of squared residuals substantially from 2,790 to about 122. In addition, the process is logical and
can be easily explained and documented.
Introduction to PEST
The following tutorial continues on from the previous session and introduces you to the Pest inverse model.
You will start with a steadystate calibration and then add a transient simulation.
Select File|Open and find the file CalEx1.gwv. Click the calculator button to run the model one time just
to make sure all files are up to date.
PEST has its own set of menus under Model|Pest.
First select Model|Pest|Options - Basic Options. This sets the main options for the Pest run.
Put a check in the option to put the BCF Package arrays in a separate file (“Write arrays as external files”).
This is technically not necessary for MODFLOW2000/2005 with the LPF Package but it is a good habit to
get into as many times you will need to do this with PEST and it does not hurt to do it even if it is not
necessary.
Put a check in the option to run models without screen output (this allows you to see the Pest screen
output). Finally, put a check in the option to “Use Command-line versions”. The latter will run Pest
without the ESI versions of MODFLOW flashing up a window each time the model is run.
Also, put a check next to “Use Singular Value Decomposition (SVD)”, check the next option (Use NPar),
and enter 5.0e-7 for Eigenvalue Threshold. These 3 options should be used each time you use PEST. SVD
allows PEST to automatically exclude insensitive parameters from the estimation. Your dialog should look
like the following:
Note that by checking the option that the minimum and maximum values are multipliers you don’t need to
remember what the current values are in these zones. Also, for Kx, Kz, and storage, you can check the
“Add All Zones” option and Vistas will put all K zones in the parameter spreadsheet. Note, however, if
you do that for this problem you need to uncheck the “Use” column for zone 3. Zone 3 contains no targets
and is very insensitive so we can exclude it from the calibration.
We will also be estimating drain conductance. Add Drain conductance in reach 0 and Drain conductance in
Reach 1. Use the “log” and “factor” options for all of them. Also, make sure to increase the Parameter
Upper Bound for the drain conductances to 1e+06.
In this first iteration, Pest used the default Lambda value and reduced phi to 1,643. It then reduced Lambda
from 10 to 3.1623 and phi actually went up. PEST then tried a lambda of 31.623 and phi dropped to
135.94. This was such a huge step (less than 0.3 of starting phi) that it moves on to the next iteration (Note
that you can control that 0.3 value under the various Pest options).
After a few iterations, the phi has dropped to the level where it is not changing much between iterations.
Pest will now start running the model twice for each parameter. This was done because the “switch” option
So in this example, the number of model runs eventually jumps from 6 runs to 12 runs. Phi has dropped
down to less than 1, which is several orders of magnitude better than the initial phi. When this happens,
you know you are close to a solution.
Eventually Pest will get to a point where phi is not changing very much at all. Pest will then report it is
done and run the model one last time with the best estimates. This is handy because you can then simply
choose Plot|Import Results in Vistas to see the calibrated head field.
Import results after your Pest run and your screen should look like the one below. Note that the residuals
posted next to each target are very low numbers. You should also check the calibration statistics to confirm
that your sum of squared residuals is close to the final Pest value (0.6 in this case).
When you click OK, GV8 will start to prompt you for additional information. First you are asked if you
want to copy recharge to the new stress periods. Answer Yes to this one. Next is the same prompt for ET.
Answer Yes to that one as well. Next you are asked to set up new stress periods. Answer Yes to that one.
The next prompt asks to check the period types (steadstate or transient). Click OK.
Click the Transient Data button. Enter a pumping rate of -10,000.0 for stress period 2, as shown below.
Since only stress period 2 is defined in the table above, the well will only pump in that stress period.
The next step is to define calibration targets. We already have steadystate targets in this model. To
continue using these, they need to be converted to transient. Even though they represent the first stress
period that is steadystate, whenever a model contains more than one time step, all targets must be transient.
The easy way to make this change is to use AE|Modofy|Targets|Steadystate to Transient. Enter a time
value of 1.0, which is the length of the steadystate stress period.
We have 4 new monitoring wells that were installed for this test. These will be imported using a relational
database approach where one file contains the physical characteristics of the target wells (x,y,layer, etc) and
the second file contains the date and water level measurements. The key in this type of import is that the
same well names are used on both files. This name is used to link the two types of data.
At the bottom of the dialog turn ON the option that says “Transient Data Contained in Separate File” and
click the browse button. Now find the file called transient_waterlevels.csv. This file has well name in
column 1, date in column 2, and water level in column 3.
We will now calibrate this model with Pest. Since we already calibrated the hydraulic conductivity values
in the steadystate calibration, we can focus on the storage properties in this new transient period. Select
Model|Pest|Parameters. There should be parameters in the spreadsheet left over from the steadystate
calibration. Click the Clear All Parameters button. Then enter two new parameters for Storage in zone 1
and Sy in zone 1. The range in Ss should be 1.0e-6 to 0.001. The range on Sy should be 0.01 to 0.4.
Run pest as in the previous examples. It should run just a few iterations and then converge on a low sum of
squared residuals. After Pest is finished, import results (Plot|Import Results). Look at hydrographs for the
4 new targets (OW1, OW2, OW3, OW4). One is shown below as an example. These graphs show an
excellent match with the observed data.
You can see from this example that there is nothing very new about using Pest for transient models. The
steps are all the same. The main difference is in the definition of targets.