Back to MODFLOW Tutorial Table of Contents.
A fully worked-out version of Example 5 can be downloaded from Argus. The files you can download include fully worked out versions of the models in Example 5 named "landf1.mmb" to "landf5.mmb", the MODFLOW input files for the original model on which this example is based, a utility program for importing MODFLOW arrays into Argus ONE, named ModImport.exe, a map named landfill.dxf. and a variety of other files useful for setting up this example.
This example deals with the remediation of a hazardous waste site. It is based on Problem 20 of Andersen (1993). The purpose of the model was to determine how various design alternatives would affect the configuration of the water table and flow directions. The design alternatives included several different combinations of an impermeable clay cap, slurry wall, and drain. The starting conditions for the model were steady state flow conditions with none of the remediation measures installed. The aquifer is unconfined and is underlain by a unit with sufficiently low hydraulic conductivity that no lower units were included in the model. Thus there is only one layer in the model.
First, start a new project. Because the aquifer is unconfined with a uniform hydraulic conductivity, we can improve the accuracy of our models slightly be using the "Arithmetic Mean hydraulic conductivity" as discussed in a previous example. Set that on the geology tab of the project info dialog box. We will be using recharge in the model, so be sure to check the "Recharge" box on the Stresses 1 tab. The Recharge should be applied to the top layer. (This is also set in the Project Info dialog box.) The time unit for the model is days. We will start with a steady state model. The flow budget should be recorded every time step.
Next import landfill.dxf, a map of the area in DXF format, and scale it so that the scale in the lower right corner is correct. In this example, it will be worthwhile to move the diagram so that the bottom edge is aligned with 0 on the Y-axis and the left edge is aligned with 0 on the X-axis. We are going to import data from an existing MODFLOW model into this example and we will want the coordinates of the data from the model to line up with the coordinates of the map. You can draw vertical lines on the X and Y axes to help you line up the drawing with the axes. After you have drawn the lines, select everything and then unselect the guide lines. Drag the diagram until the bottom of the modeled area is on the x-axis and the left side of the modeled area is on the y-axis. Zoom in on the map to check for errors and drag it until it is a good as you feel it is useful to be.
Copy the boundary to the "MODFLOW Domain" layer and assign it a grid density of 600. On the "Grid Density" layer, create a series of contours to define a finer grid (30 ft.) in the area that will represent the slurry wall and drain. Make the grid progressively coarser as you get farther away from the wall and drain area. If you wish, you can import the density contours I used. Select "Special | Allow Intersection" and then "File | Import MODFLOW Grid Density...| Text File..." and select the file "MODFLOW_Grid_Density.exp"
Set the following default values.
hydraulic conductivity | 42.5 ft./day |
default specific yield | 0.28 |
recharge (Stress1) | 24 in/yr. = 0.00548 ft./day |
Elevation Top Unit1 | 200 ft. |
In this case we don't need to deal with the elevation for recharge because there is only one layer and on the Stresses/Solvers tab, we specified that recharge applies to the top layer only. We enter a value for the top of unit 1 even though this is an unconfined layer because that prevents warning messages from appearing during the export process.
This particular example is rather complex. Andersen put much effort into defining the bottom of the aquifer and the initial head. It would be a pity to have to redo that. Fortunately, we don't have to. With a little work, we can import the data into Argus ONE. The technique is described in the supplement for Argus Meshmaker 2.5 p. 10s.
Let's go through this step by step because there are a number of places where it is easy to make a mistake. First, let's locate the data we need. The original data we will be importing is in two files, P20a.bas and P20a.bcf. (Bas and bcf stand for the Basic and Block-Centered Flow packages in MODFLOW.) These files are in the same directory as the Argus ONE model.
If you have downloaded or bought Anderson's text you will see that in the text the MODFLOW input files are reproduced with labels identifying each of the variables. These labels are not present in the files you can download but in other respects the files are identical. First, look at the input file for the Basic package (p20a.bas). Open it with a word processor or text editor.
(One program you can use is Programmer's File Editor. It can be downloaded from Winsite. At the time this was written the most recent Windows 3.1 version was in the file pfe0701.zip and the most recent Windows 95 version was in the file pfe0602i.zip. If those files have been replaced by newer versions The easiest way to identify them would probably be to do a substring search for "pfe". Go to http://www.winsite.com/. Select "Search Archive". Check the box marked "Match Substrings". Enter "pfe" in the edit box and press the search button.)
I have written a utility program (MODIMPORT) that is useful for translating two-dimensional arrays from MODFLOW into the Argus ONE scattered data format. Right now it is a stand-alone program. It may eventually be incorporated into a PIE. It is in the example 5 folder under the tutorial folder
The first thing to do is to get the positions of the cells. This is contained in the block-centered flow file (p201.bcf). If you open it up it, the beginning will look like this. There are two arrays we need to copy here; DELR and DELC which are the cell widths along rows and cell widths along columns respectively. Those are indicated below with bold text (DELR) and italic text (DELC). Start MODIMPORT and copy those into the spaces provided
1 0 1 0 0.100E+01 11 0.100E+01(8E10.0) 2.000E+01 6.000E+02 3.000E+02 2.000E+02 1.400E+02 1.000E+02 8.000E+01 6.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 6.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 8.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 8.000E+01 1.000E+02 1.400E+02 2.000E+02 3.000E+02 4.000E+02 4.000E+02 5.200E+02 2.000E+01 11 0.100E+01(8E10.0) 2.000E+01 4.000E+02 4.000E+02 4.000E+02 4.000E+02 3.000E+02 2.000E+02 1.400E+02 1.000E+02 8.000E+01 6.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 3.000E+01 6.000E+01 6.000E+01 8.000E+01 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 1.000E+02 2.000E+01
Be sure to include the format line at the beginning of the array as well as the array itself. For DELR the format line is:
11 0.100E+01(8E10.0)
Look at the IBOUND array beginning on line 7. It indicates which cells are active, inactive, or constant head cells.
1 1(40I2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1 1-1 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1-1-1-1-1 0-1 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1-1-1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1 1-1-1-1-1-1-1-1-1-1-1-1-1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1 1 1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-1-1-1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
This model has something unusual; the first and last rows and the first and last columns are made up entirely of inactive cells (indicated by 0's in the IBOUND array). We will need to take this into account when we import the data from the model. MODIMPORT assumes that each member of the arrays is separated from it's neighbors by one or more spaces. That isn't the case here. We will have to do a little editting to insert a space. The easiest thing to do is to replace "-" with " -" (a space followed by a minus sign). Just to make things pretty I first replaced each space with two spaces. The result is shown below.
1 1(40I2) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 0 -1 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
You can copy this into MODIMPORT.
Next locate the starting head array in p20a.bas. The beginning of it is reproduced below.
1 1.(8F10.2) 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 132.00 125.00 125.00 125.00 125.00 125.00 125.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00 120.00
Copy the whole array from p20a.bas into MODIMPORT.
Now we're almost done. In this particular model, the rows are counted from the top down rather than the bottom up. This means that the Y-coordinate will also increase downward rather than upward. To correct for this, Choose Y-Negative rather than Y-Positive. That will reverse the Y-Coordinates. Finally, I mentioned earlier that the first and last rows and the first and last columns are made up entirely of inactive cells. To exclude those columns we would like to start our coordinate system so that the second row and second column begin at (0,0). If you look back at the first values in DELR and DELC, You'll see that both the first row and first column are 20 feet thick. To correct for the first row and column use -20 in the X and Y offsets. Now just press the convert button. In a short time, you will get a "Conversion Complete" message if everything went well or an error message if it didn't. If you got an error message make sure that you include the array format lines and that all entries in the arrays were separated by one or more spaces. Once the conversion is successful. Press the save button to save the file to the Argus ONE scattered data format.
Before closing MODIMPORT there is another array that it will be useful to convert. That is the bottom of the aquifer in p20a.bcf. The beginning of the array is shown below. Again in this case, there is no space between some of the values. You can fix that by replacing "." with ". " (a period followed by a space). (Don't make this change in the format line - the first line in the array.)
11 1.0(20F4.0) 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100. 100.100.100.100.100.100.100.100.100.100.100.100. 0. 0. 0. 0. 0. 0.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100. 100.100.100.100.100.100.100.100.100.100.100.100.100. 0. 0. 0. 0. 0.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100. 100.100.100.100.100.100.100.100.100.100.100.100.100.100. 0. 0. 0. 0.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100.100. 100.100.100.100.100.100.100.100.100.100.100.100.100. 95. 95. 0. 0.
Convert this array and save the data in Argus ONE scattered data format.
To import the data first change the Initial Head Unit 1 layer from an Information layer to a Data layer. Bring up the Layers... dialog box (View | Layers...) and select Initial Head Unit 1 layer from the top half of the box. Click on the down arrow for that layer under "Type" in the top half of the dialog box and select Data. Do the same with the "Elevation Bottom Unit1" layer. Close the Layers... dialog box and from the "Initial Head Unit1" layer select "File | Import Initial Head Unit1 | Text File" from the menu and use the "scattered" data format. You will then be prompted for a file name. Choose the name you used when saving the initial head in MODIMPORT.
The data will be read into the layer. It should fit neatly within the domain outline.
You can import the data for the base of the aquifer in the same way. Remember that you have to change the layer type from an Information layer to a data layer before you import the data.
Next we need to specify the constant head cells. All the cells along the bottom boundary and most of those along the left and right boundaries are prescribed head cells. The prescribed heads should be the same as the initial heads. On the "Map Unit1" layer, there is an open contour slightly to the interior of the model boundary showing the extent of the constant head boundary. You can copy that to the "Prescribed Head Unit1" layer and use it to set the prescribed heads.
You could also copy the domain boundary and then edit it so that it only covered the part of the boundary it should. However, you may still need to move some the nodes slightly into the interior of the model to make sure that the prescribed head boundary intersects all the active cells everywhere it should. Another alternative would be to make the grid and on the grid, manually switch cells to active if the lie on the border. To do that select one or more blacks and press Control-D or select "Edit | Toggle Active."
If you choose to copy the the boundary and edit it you will first need to convert it to an open contour. If it is not already selected, select it. Then use the lasso tool to outline all the nodes that define where the constant head boundary ought to be. The selected cells will change from black squares to hollow squares. Copy them to the clipboard (Edit | Copy). Click away from the contour to select the entire contour and delete it. Paste the nodes you copied back to the "Prescribed Head Unit1" layer. You now have a single open contour where the constant head boundary should be.
The heads along the boundary should not all have the same value. To assign different values to different parts of the contour, you must break it up into a series of shorter contours. First, select some cells with the lasso tool and copy them to the clipboard. Delete all the selected cells except the one that connects them to the remainder of the contour and then paste the points you copied back to the layer. (You will need to select "Special | Allow Intersection" first.) The easiest way to select or deselect an individual node is to hold down the shift key while clicking on it with a mouse. In some cases, you may wish to break up a single line segment into several open contours. You can't do this directly with Argus ONE. However, you can copy a contour to the clipboard and paste into a spreadsheet. Once you have it there, you can interpolate between points to find the location of intermediate points. You could add those points to the list of points, increase "Points Count" to the correct number and then copy from the spreadsheet back into Argus ONE. This is illustrated below.
If you don't wish to create the boundary yourself, you can import the one I used. It is named Prescribed_Head_Unit1.exp. You may have to edit it slightly if your model is located at a slightly different position than mine. From the Prescribed Head Unit1 layer select "File | Import Prescribed Head Unit1| Text file".
Before running the model, check that the Prescribed heads are higher than the base of the aquifer in every cell with a Prescribed head. If any of them are lower than the base of the aquifer, MODFLOW will report and error and will not complete the simulation.
To check that prescribed heads are OK make sure that both the "Prescribed Head Unit1" layer and "Elevation of Bottom Unit1" layer are visible and that the "Elevation of Bottom Unit1" layer is the active layer. Hide all other layers. Zoom in on part of the boundary and move the cursur over the locations of the Prescribed head contours. The elevation of the bottom of Unit1 will be displayed in the status bar at the bottom of the window. If you have the values displayed on the "Prescribed Head Unit1" layer, it will be easy to see if those values are acceptable.
Run this model as a steady state model. You will get a few warning messages about the ratio of row and column widths exceeding the recomended values. Make a contour map of the head. An appropriate range of head values is 84 to 134. We will want to use these heads as the starting conditions for transient models. Change to the MODFLOW Data layer and export the MODFLOW data. Save the model with the name landf1.mmb and then save it again with the name landf2.mmb Now switch to the "Initial Head Unit1" layer and import the heads you just saved. This is how we can use the steady state conditions as a starting point for a transient model. The data are in "Scatter Point" format.
We will have four variations on the model. All will be transient models with a duration of 30.8 years (11250 days), 20 time steps and a time step multiplier of 1.5 The specific yield will be 0.28. Set those variables and save the model.
The four models conditions we will check are:
The impervious cap is easy to simulate. First, copy the contour labeled "cap" from the Maps layer to the recharge layer and assign it a stress of 0.0. Once you have done that, you can run the model. By itself, the clay cap does little to alter the distribution of head. Once you are done running the model, you can see this by importing the results for time step 14 (2.69 years). Remember to save the model.
Save the model again with the name landf3.mmb.
We will simulate the low permeability slurry wall with a thin line of cells with low hydraulic conductivity. Because the hydraulic conductivity is no longer uniform, we must use the harmonic mean rather than the arithmetic mean hydraulic conductivity. Set that on the Geology tab of the Project Info dialog box (PIEs | Edit Project Info). The conductivity we wish to simulate for the slurry wall is 4.25E-5 ft./day as compared to 42.5 for the remainder of the aquifer. There are two ways to do this. One method is easy to use in this problem but might not work in other problems. The other method has much wider applicability but requires more work.
We will start off with some methods that don't work so you can see why they don't work.
The most obvious thing to do would be to set up an open contour along the position of the slurry wall and assign it the correct hydraulic conductivity. If you do that however, every cell in the layer will be assigned a hydraulic conductivity of 4.25E-5. There are several ways you can check this. For now, the easiest way is to move to the MODFLOW FD Grid layer and click on any cell. A dialog box will appear in which you can read the value of all the variables. What has happened is that Argus ONE is interpolating to find the hydraulic conductivity and the only points it has to interpolate between are the points on the slurry wall.
When that doesn't work, you might be tempted to copy the model domain outline to the hydraulic conductivity layer and assign it a hydraulic conductivity of 42.5. That doesn't work either. The easiest way to show this is to use Argus ONE's ability to show the hydraulic conductivity and other parameters. Switch to the MODFLOW FD Grid layer. On the left you will see a column of colors with a down arrow on the right side. Click on the down arrow and select Kx from the menu. Argus ONE will show you a color-coded view of the horizontal hydraulic conductivity. Your view will probably look something like what is shown below. We wanted just the cells in the slurry wall to have a low hydraulic conductivity. Instead many cells around the slurry wall also have a low hydraulic conductivity because of interpolation between the slurry wall and the edge. You could try a closed contour around the slurry wall but that doesn't work either. Argus ONE still interpolates between the slurry wall and the edge of the model.
To avoid the interpolation problem, you must first call up the Layers dialog box (View | Layers...). Select the "Hydraulic Conductivity Unit1" layer. At the bottom of the dialog box, chose "Exact Contour Method" instead of "Interpolation Method". You can now construct a closed contour around the region that will comprise the slurry wall and assign it the correct hydraulic conductivity. The easiest way to do this is to first copy the contour for the impermeable cap to the hydraulic conductivity layer. Then add and move the vertices so that the correct area is outlined. You should check that you have a continuous barrier by coloring the grid by the Kx Unit1 parameter.
You should make sure that the slurry wall is completely covered by the impermeable cap. If you don't, abnormally high heads can develop on cells making up the slurry wall that are outside the impermeable cap. This is because the hydraulic conductivity of the slurry wall is so low that water added to it can not flow out of it in any reasonable time. You might object that if the water can not flow out fast it also can not flow in fast. This is true. However, if the wall is outside the impermeable cap, you will be telling MODFLOW that the wall cells should be receiving recharge at the same rate as other areas. MODFLOW will use the recharge values you give it regardless of whether they are realistic in the real world. It is up to you to ensure that the recharge values and other parameters are realistic.
Although this method of assigning a low hydraulic conductivity to the slurry wall works in this case it is less than ideal. You can't interpolate between point values of hydraulic conductivity if you use the "Exact Contour Method" so if you wanted to interpolate the hydraulic conductivity field outside the slurry wall, you wouldn't be able to do so. There is however, another method of setting up the slurry wall that will allow us to both interpolate between points where we want to and set values for specific cells. However, it takes more work.
What we will need to do is to set up another layers. On the new layer we will have closed contours. If any cell is enclosed by a closed contour, that cell will be assigned the value of the closed contour. Any remaining cells will be assigned a value by interpolation on the Hydraulic Conductivity Unit1 layer.
First, we must add a two new layers. To add a new layer call up the Layers dialog box (View | Layers...) select the "Hydraulic Conductivity Unit1" layer and push the "New" button. Change the name of the new contour to to "Area Hydraulic Conductivity Unit1". Push the New button on the lower half of the dialog box to create a new parameter and change its parameter names to Kx and Kz. Change from "Nearest Contour Method" to "Exact Contour Method". You also need to change the default values of the parameters of the new layer to $N/A.
Next, create another new layer. This time, rename the new layer "Interpolated Hydraulic Conductivity Unit1". Push the New button on the lower half of the dialog box to create a new parameter Unit1". Select "Interpolation method".
Next change the expression for Hydraulic Cond Unit1 to
If(IsNumber(Area Hydraulic Conductivity Unit1.Kx), Area Hydraulic Conductivity Unit1.Kx, Interpolated Hydraulic Conductivity Unit1.Kx)
Finally, click the "Done" button on the Layers Dialog box. It would be a good idea to save your work at this point before continuing.
Cut the contour on the Hydraulic Cond Unit1 layer to the Area Hydraulic Conductivity Unit1 layer to the Area Hydraulic Conductivity Unit1 layer. Now if you create a closed contour on the Area Hydraulic Conductivity Unit1 layer and assign it a value, any cells inside that contour will be assigned the value of the contour. hydraulic conductivites in other locations will be assigned based on the "Interpolated Hydraulic Conductivity Unit1" layer. Don't put any contours on the Hydraulic Cond Unit1 layer because they would override the default value assigned with the expression.
If you tried to type a complex formula such as this, it would be easy to make mistakes that then might be difficult to find. Fortunately, you don't have to type the formula. Go to the "Hydraulic Cond Unit1" layer and call up the Layers dialog box. Select "Hydraulic Cond Unit1" from the list of layers at the top and then Kx from the list of parameters at the bottom. Click on the Fx button in the value column to call up the expression editor. You will notice that there is a menu in the middle of the bottom beginning with "Functions". All the functions can be accessed through this menu. The "If" function under the category "Mathematical". Delete the 42.5 and click on "If". Then select the IsNa function with is also in the Mathematical category. Next, Select "Area Hydraulic Conductivity Unit1". Kx and Kz will appear in the box the right. Double click on Kx and "Area Hydraulic Conductivity Unit1.Kx" will replace "Parameter name" in the upper box. The select "True_Value" and make it into Area Hydraulic Conductivity Unit1.Kx in the same way as before. Finally select "False_Value" and make it "Interpolated Hydraulic Conductivity Unit1.Kx".
This model is now complete and ready to run. Run the model. Import the results for time step 14 and save the model.
Save the model again with the name landf4.mmb.
We will now add a drain to the model. The drain will be just outside the slurry wall. The elevation of the base of the drain is 0.2 feet above the base of the aquifer.
First, open the "Project Info" dialog box (PIEs | Edit Project Info...), and check the "Drain" box on the "Stresses 1" tab.
In the "Line Drain Unit1" layer set the default value for elevation as "Elevation Bottom Unit1.Elevation Bottom Unit1+0.2"
Copy the line for the drain from the "Map Unit1" layer to the "Line Drain Unit1" layer. Set the conductance per unit length to 4.25 ft/s and the Stress On or Off to 1 (True). We will use the Alternate Drain export template on the "PIEs|Edit Project Info|Advanced Options" tab so that the value of the drain elevation can vary along it's length.
With this problem, it helps to change the number of outer iterations in PCG on the on the Solvers/Other Packages tab of the Project Info dialog box to 50.
When you have finished adding the drain, you are ready to run the model. Run the model. Import the data for time step 14 into a contour map and save the file.
You are now ready to do the last model. This will simulate a drain and impervious cap but no slurry wall. Thus all you need to do is delete the data used to define the slurry wall. You will see that the slurry wall
Save the file the name landf4.mmb. Delete the data used to define the slurry wall and run the model. When done, import the data from time step 14 into a contour map and save the file.
Now that you are finished with the models, lets look at what they show us. First, we can compare the steady state results with the results after adding an impervious cap. By itself, we can see that the cap has little effect.
Water table, Steady State Results. Contour interval = 2 ft. |
---|
Water table, Impervious cap present, time step 14. Contour interval = 2 ft. |
---|
Next we can compare the results when a slurry wall, drain, or both are present along with an impervious cap. We can see that all three conditions result in a tremendous decline in the water table. Simulating the slurry wall with the horizontal-flow barrier package results in heads that are approximately 6 feet lower than if the slurry wall is simulated with a zone of low hydraulic conductivity.
Water table, Impervious cap and slurry wall present, time step 14. Contour interval = 2 ft. |
---|
Water table, Impervious cap and drain present, time step 14. Contour interval = 2 ft. |
---|
Water table, Impervious cap, slurry wall and drain present, time step 14. Contour interval = 2 ft. |
---|
![]() |
Water table, Impervious cap and horizontal flow barrier present, time step 14. Contour interval = 2 ft. |
---|
Before using a model, you should look for artifacts. Sometimes model results are not realistic and should be rejected. For example, if we simulated the slurry wall with a zone of low hydraulic conductivity and the zone of low hydraulic conductivity exteneded beyond the extent of the impermeable cap, artificially high heads would develop in the slurry wall. This is because the recharge to the slurry wall would be greater than the flow from the slurry wall to the aquifer. In reality, recharge to the slurry wall would not be significant. Thus this would be an artifact and the model would need to be modified before it could be used.
Another potential artifact is that some of the drain cells could go dry. If they did, they would become inactive cells an would thus be perfect barriers to flow.
If you set the drain conductance to high enough, there is another potential problem. In the model with both the drain and the slurry wall, very high heads can occur between the drain and the slurry wall. This is a completely unrealistic result. These cells have the slurry wall to the South and East and drain cells to the North and West that have gone dry. These cells receive recharge so the have a source of water but they have flow barriers in all directions so the water has nowhere to go. It can not go south or east because of the slurry wall and it can not go north or west because the dry drain cells act as a flow barrier. With water coming in but none leaving, the water level must rise. One solution would be to move the drain closer to the slurry wall to eliminate any cells between them. A better solution would be to make sure that the drain cells don't go dry.
One potential problem with lowering the conductance of the drain is that seepage into the drain would be too low in early time steps in the model. During this time a seepage face would develop on the side of the drain and discharge to the drain would occur throughout the seepage face. After the head in the aquifer had declined, the seepage face would not be as high and less seepage would occur. When a seepage face is present, there are two controls on the rate of discharge into the drain, the height of the seepage face and the hydraulic gradient. In MODFLOW, a drain only simulates one of those controls, the hydraulic gradient. However, you could better approximate the behavior of a seepage face by having several drains in each drain cell. The drains could all have the same conductance but different drain elevations. When the water level was higher, more of the drains would be active and so the flow rate would be higher. As the water level dropped below the elevations of some of the drains, they would no longer be active and thus the rate of seepage to the drains would be lower. You could use a formula to set the elevations for different drains in the same cell. You would need to create a new parameter that would act as an index to the expression that you wanted to use. You could also set up several parameters each of which had a different expression. Then you could use the Index function to determine which expression applied to a particular contour.
If you have an existing MODFLOW model of an area you can import it into Argus ONE data layers and then refine it. To import the model, you must extract the matrices that make up the model and put them in one of the Argus ONE standard formats. You need to determine the location of each point in each matrix. This information is in the input file for the block centered flow package.
To add points to an open or closed contour, first cut the data to the clipboard and paste it to a spreadsheet. Then add points at any desired locations and update the number of points. Then copy the data from the spreadsheet to the clipboard and paste into Argus ONE.
You can change the way some data is transferred to MODFLOW by using expressions for parameters. Generally you should avoid changing parameters in the MODFLOW FD Grid.
During execution of a MODFLOW model, one or more cells may becomes dry. Dry cells are treated as inactive cells and act as flow barriers. You should carefully evaluate the results of any MODFLOW model in which cells went dry to determine if the results are realistic. If the results are unrealistic, you must change the model.
You can use the results of a steady state model to set the initial heads for a transient model.
Back to MODFLOW Tutorial Table of Contents.