AHGW:MODFLOW Data Model: Difference between revisions

From XMS Wiki
Jump to navigationJump to search
m (Move page script moved page AHGW:MODFLOW Data Model to Test:MODFLOW Data Model without leaving a redirect)
No edit summary
Line 1,281: Line 1,281:


===Recharge Package (RCH)===
===Recharge Package (RCH)===
The cell-by-cell flow flag (IRCHCB) for the Recharge Package (IRCHCB) is stored in the CBFlags table in the [[MODFLOW Data Model#Output control|Output control]] group. The remaining data are stored in the three tables below. The RCHVars table holds the NRCHOP variable (associated with a coded value domain). This variable defines the recharge option. For NRCHOP=1 or 2, a single recharge value (RECH) is stored for each IJ combination. For NRCHOP=3, an additional array of integer values (IRCH) is required. The RECH and IRCH values are stored in the RCHArrays table. The IRCH field will likely be rarely used. The RCHArrayMult table is used to store array multipliers.
The cell-by-cell flow flag (IRCHCB) for the Recharge Package (IRCHCB) is stored in the CBFlags table in the [[AHGW:MODFLOW Data Model#Output control|Output control]] group. The remaining data are stored in the three tables below. The RCHVars table holds the NRCHOP variable (associated with a coded value domain). This variable defines the recharge option. For NRCHOP=1 or 2, a single recharge value (RECH) is stored for each IJ combination. For NRCHOP=3, an additional array of integer values (IRCH) is required. The RECH and IRCH values are stored in the RCHArrays table. The IRCH field will likely be rarely used. The RCHArrayMult table is used to store array multipliers.


{| class="wikitable collapsible" style="width: 90%; font-size: 85%;"
{| class="wikitable collapsible" style="width: 90%; font-size: 85%;"
Line 1,324: Line 1,324:


===Evapotranspiration Package (EVT)===
===Evapotranspiration Package (EVT)===
The Evapotranspiration package is similar to the Recharge Package. The cell-by-cell flow variable (IEVTCB) is stored in the CBFlags table in the [[MODFLOW Data Model#Output control|Output control]] group. The remaining data are stored in the three tables below. If NEVTOP=1, the IEVT field is ignored. If NEVTOP=2, the IEVT field is used.
The Evapotranspiration package is similar to the Recharge Package. The cell-by-cell flow variable (IEVTCB) is stored in the CBFlags table in the [[AHGW:MODFLOW Data Model#Output control|Output control]] group. The remaining data are stored in the three tables below. If NEVTOP=1, the IEVT field is ignored. If NEVTOP=2, the IEVT field is used.


{| class="wikitable collapsible" style="width: 90%; font-size: 85%;"
{| class="wikitable collapsible" style="width: 90%; font-size: 85%;"

Revision as of 22:11, 12 September 2019

MODFLOW Data Model

The MODFLOW Data Model is an extension to the Simulation portion of the Arc Hydro Groundwater (AHGW) data model and is used to store complete MODFLOW simulations in an ArcGIS geodatabase. The data model consists of a set of tables for archiving MODFLOW model data. Having the model in the database makes it possible to utilize the mapping and plotting capabilities of ArcGIS. It also facilitates the use of tools, such as those provided in MODFLOW Analyst, for populating the MODFLOW package tables using data from the Arc Hydro groundwater and surface water data models. It also provides an archival tool for models facilitating permissions, check-in/check-out capabilities, and web services.

Documentation

In addition to this wiki, you should refer to the diagram of the MODFLOW Data Model.

The MODFLOW Data Model generally uses the same naming convention for variables defined by MODFLOW. The meanings of all these variables are only summarized here. Refer to the MODFLOW documentation for a full description.

Introduction

The AHGW data model includes a Simulation component that facilitates the storage of simulation models (grids, meshes, and associated data) in a geodatabase. The simulation component uses polygons, points, and multi-patches to represent 2D and 3D cells and nodes. The MODFLOW data model consists of a series of tables and relationships associated with the simulation component. The data model is based on MODFLOW 2000 and includes all of the standard MODFLOW packages. It will gradually be expanded to include supplemental packages.

For some of the MODFLOW packages, including the Global Package, the LPF package, and the Recharge package, the input data associated with the package is primarily one or more arrays of data representing cell-by-cell values. These arrays are represented in the data model using tables indexed by a cell ID. In the case of the stress packages, the package input data are typically not defined using an array corresponding to the entire grid. Rather, the data are associated with a subset of the grid cells. For example, the input to the well package is a list of well instances where each well lists the IJK indices of the corresponding cell and the pumping rate. For transient simulations, one set of values is listed for each stress period (simulation interval). The input to these packages is stored in tables which include the cell IDs, the stress period ID, and the attributes associated with the particular stress package (water level, conductance, etc.). In either case, the resulting tables can be joined with Cell2D, Cell3D, Node2D, and Node3D features to display the locations of the stress package objects in the model domain.

Cell and Node Features

The MODFLOW Data Model is an extension of the Arc Hydro Groundwater Simulation Feature Dataset. The MODFLOW data is stored primarily in a set of tables described below and the Cell and Node features of the Simulation Feature Dataset are used to generate map layers in ArcGIS in order to visualize MODFLOW models. The features are also used to perform spatial queries such as interpolating hydraulic conductivity values to the K array in the LPF package. When used with the MODFLOW Data Model, one additional field is added to each of the cell and node features in order to support joins based on MODFLOW cell ids. An IJ field is added to the Cell2D and Node2D features and an IJK field is added to the Cell3D and Node3D features. The resulting feature classes contain the following fields (in addition to the point and polygon fields):

Cell2D
Field Type Description
OBJECTID OID
HydroID Long Integer Unique Arc Hydro identifier
HydroCode Long Integer Application-specific Arc Hydro identifier
IJ Long Integer Row/column-based MODFLOW cell identifier
Node2D
Field Type Description
OBJECTID OID
HydroID Long Integer Unique Arc Hydro identifier
HydroCode Long Integer Application-specific Arc Hydro identifier
IJ Long Integer Row/column-based MODFLOW cell identifier
Cell3D
Field Type Description
OBJECTID OID
HydroID Long Integer Unique Arc Hydro identifier
HydroCode Long Integer Application-specific Arc Hydro identifier
IJK Long Integer Row/column/layer-based MODFLOW cell identifier
Node3D
Field Type Description
OBJECTID OID
HydroID Long Integer Unique Arc Hydro identifier
HydroCode Long Integer Application-specific Arc Hydro identifier
IJK Long Integer Row/column/layer-based MODFLOW cell identifier

CellIndex Table

In the MODFLOW input files, cells are identified by a combination of three integers representing the row, column, and layer indices of the cell (I, J, K). Since joins can only be accomplished using a single field, it is necessary to generate an integer field corresponding to a unique IJK combination. Furthermore, some MODFLOW input arrays are fundamentally 2D in nature (Evapotranspiration, Recharge, etc.) and require an integer identifier corresponding to a unique IJ combination. To facilitate joins and queries related to the MODFLOW data, the data model includes a CellIndex table containing the following fields:

CellIndex
Field Type Description
OBJECTID OID
I Long Integer Row index
J Long Integer Column index
K Long Integer Layer index
IJ Long Integer Row/column index
IJK Long Integer Row/column/layer index

The IJ and IJK fields of the CellIndex table is populated from the I,J,K values by starting at a value of one for the cell corresponding to I=1, J=1, K=1, and looping through the cells in the grid row-by-row within each layer, and incrementing the index. The IJ index ordering is repeated within each layer. The following example indicates how this numbering would be accomplished in both the C and VB languages:

// C Syntax
// numI, numJ, numK = number of cells in the I, J and K directions
int index1 = 1;
for (int K = 0; K < numK; ++K) {
  int index2 = 1;
  for (int I = 0; I < numI; ++I) {
    for (int J = 0; J < numJ; ++J) {
      IJK = index1;
      IJ = index2;
      ++index1;
      ++index2;
    }
  }
}
' Visual Basic Syntax
' numI, numJ, numK = number of cells in the I, J and K directions
index1 = 1
For K = 1 To numK
  index2 = 1
  For I = 1 To numI
    For J = 1 To numJ
      IJ = index2
      IJK = index1
      index1 = index1 + 1
      index2 = index2 + 1
    Next J
  Next I
Next K

For example, consider a MODFLOW grid with three rows, four columns, and two layers (numI=3, numJ=4, numK=2). The CellIndex table for this grid would be as follows:

CellIndex Table
I J K IJ IJK
1 1 1 1 1
1 2 1 2 2
1 3 1 3 3
1 4 1 4 4
2 1 1 5 5
2 2 1 6 6
2 3 1 7 7
2 4 1 8 8
3 1 1 9 9
3 2 1 10 10
3 3 1 11 11
3 4 1 12 12
1 1 2 1 13
1 2 2 2 14
1 3 2 3 15
1 4 2 4 16
2 1 2 5 17
2 2 2 6 18
2 3 2 7 19
2 4 2 8 20
3 1 2 9 21
3 2 2 10 22
3 3 2 11 23
3 4 2 12 24

It is also helpful to view the IJ and IJK indices on a layer-by-layer basis (IJ values shown in red, IJK values in blue):

K=1
J=1 J=2 J=3 J=4
I=1 1

1

2

2

3

3

4

4

I=2 5

5

6

6

7

7

8

8

I=3 9

9

10

10

11

11

12

12

K=2
J=1 J=2 J=3 J=4
I=1 1

13

2

14

3

15

4

16

I=2 5

17

6

18

7

19

8

20

I=3 9

21

10

22

11

23

12

24

The Cell2D and Node2D features include an IJ field and the Cell3D and Node3D features include an IJK field where the IJ and IJK fields are populated using the same strategy used to populate the CellIndex table. The MODFLOW data is stored in a separate series of tables (described below) and the tables containing cell-by-cell data include either an IJ or IJK field depending on whether it is a 2D array or a 3D array. The MODFLOW tables are then joined to the cell and node features using the CellIndex table. For example, a map layer illustrating hydraulic conductivity values with polygons could be generated by first joining the IJK field of the LPFProperties table to the IJK field of the CellIndex table. The CellIndex.IJ field of the resulting temporary table would then be joined to the IJ field Cell2D feature class. This type of join can be easily generated in one step using the “Make Query Table” geo-processing tool in the MODFLOW Analyst. The values associated with individual grid layers in the resulting map layer can be displayed using a definition query (“CellIndex.K = 1, CellIndex.K=2, etc.). For 2D arrays or for models with only one grid layer, the CellIndex table can be bypassed and the IJ or IJK field of the MODFLOW tables can be joined directly with the IJ field of the Node2D and Cell2D features since the IJ and IJK values are identical for K=1. Similarly, joins can be performed directly between IJK-based tables and the Cell3D and/or Node3D features. Map layers of MODFLOW data associated with cell and node features can be symbolized and toggled on/off independently from other features in the TOC window in ArcMap and ArcScene.

Sometimes it is necessary to derive I, J, and K values from the IJ or IJK indices, or vice versa. The following C and Visual Basic code shows how to get the I and J indices given an IJ value:

// C Syntax
// '%' is the modulus operator
I = ((IJ - 1) / numJ) + 1;
J = (((IJ - 1) % numJ) + 1;
' Visual Basic Syntax
' 'Mod' is the modulus operator, 'Int' converts a decimal to an integer
I = Int((IJ - 1) / numJ) + 1
J = ((IJ - 1) Mod numJ) + 1

Likewise, to get the I, J, and K indices from an IJK value:

// C Syntax
I = (((IJK - 1) / numJ) % numI) + 1;
J = ((IJK - 1) % numJ) + 1;
K = ((IJK - 1) / (numI * numJ)) + 1;
' Visual Basic Syntax
I = (Int((IJK - 1) / numJ) Mod numI) + 1
J = (IJK - 1) Mod numJ + 1
K = Int((IJK - 1) / (numI * numJ)) + 1

Finally, IJ and IJK indices can be derived from I, J, and K values as follows:

// C Syntax
IJ = ((I - 1) * numJ) + J;
IJK = ((K-1) * numI * numJ) + ((I-1) * numJ) + J;
' Visual Basic Syntax
IJ = ((I - 1) * numJ) + J
IJK = ((K - 1) * numI * numJ) + ((I - 1) * numJ) + J

It should be noted that with this strategy, if the grid is modified by adding or deleting rows or columns, all tables which include IJ or IJK fields will need to be modified by renumbering the IJ and IJK values according to the new configuration. We will eventually provide tools to automate this process.

Groups

Tables that are related to each other are put together in a group and, in the diagram, are displayed together in a colored box. For example, three tables are used to represent the LPF package and these are grouped together in the data model. Groups typically are associated with MODFLOW packages but not necessarily. For example, the Output group does not correspond to any MODFLOW package.

Global Settings / Name File

The MDFGlobals table is used to store global variables that are not associated with a particular MODFLOW package or MODFLOW input file, but which are useful for managing the MDM. Currently the only field in this table is the model version. Additional fields will be added as the need arises. The Version field is used to indicate which MODFLOW version is represented in the data model (2000, 2005, etc.). This makes it possible to support multiple versions of the data model. Currently the only versions the data model supports are MODFLOW 2000 and 2005.

The Global Settings group also includes the NameFile table.

MDFGlobals
Field Type Description
OBJECTID OID
MODFLOW_Version Text Version of MODFLOW targeted, e.g. "MODFLOW 2000"
DataModelVersion Text Version of the MODFLOW Data Model, e.g. "1.0"
NameFilePath Text Full path and filename of the exported or imported name file on disk.
NameFile
Field Type Description
OBJECTID OID
FileType Text File type ("Ftype" in MODFLOW documentation, but "Ftype" has other meanings in Arc Hydro). FileType coded value domain.
Nunit Long Integer Fortran unit number
Fname Text Name of the file
Use Short Integer Flag indicating whether or not the file is being used. Only when this flag is true should the file be included in the name file. Uses TrueFalse coded value domain.

Discretization (DIS)

One of the main input files to MODFLOW is the Discretization (DIS) File. It defines the spatial and temporal discretization used in the model. Some of the information in the DIS file is represented by the Cell2D feature class. The rest comes from the following tables.

The DISVars table contains variables associated with the DIS file. The RefTime variable is not written to the DIS file. It is used by tools associated with the MDM to generate date/time values representing the beginning and ending of each stress period in the Stress Periods table. A geo-processing tool exists that computes these values and adds two columns (Start, End) to the table when necessary.

The DELRC table is used to store the widths (discretization) of the rows and columns. While this information could be derived from the geometry of the Cell2D polygons, it is convenient to store it explicitly in a table.

The StressPeriods table stores information on stress periods and time steps. The SPID field defines the stress period order and must begin with 1 and go to N where N is the number of stress periods. Other tables in the data model which refer to stress periods reference the stress period ID.

The DISLayers table contains variables defined on a layer-by-layer basis.

The TopElev and BotmElev tables are used to store the top and bottom elevations for the cells of the grid. For the TopElev table, only the cells in the top layer should be included. The top elevations for the remaining layers are assumed to be equivalent to the bottom elevations of the above layer as defined by the BotmElev table. Thus, the BotmElev table should include the bottom elevations for all cells in the grid. The BotmElevCBD field is used to store the bottom elevation of confining beds, if appropriate.

DISVars
Field Type Description
OBJECTID OID
NLAY Long Integer Number of layers
NROW Long Integer Number of rows
NCOL Long Integer Number of columns
ITMUNI Short Integer Time unit. TimeUnit coded value domain
LENUNI Short Integer Length unit. LengthUnit coded value domain
RefTime Date The Date/Time of the beginning of the simulation
DELRC
Field Type Description
OBJECTID OID
Direction Text Row or column. Direction coded value domain
Num Long Integer Row or column number
Width Double Row or column width
TopElev
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
TopElev Double Top elevation of cell
BotmElev
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
BotmElev Double Bottom elevation of cell
BotmElevCBD Double Bottom elevation of Quasi-3D confining bed below cell
DISLayers
Field Type Description
OBJECTID OID
Layer Long Integer Layer
LAYCBD Short Integer Quasi-3D confining bed flag
AM_TopElev Double TopElev array multiplier
AM_BotmElev Double BotmElev array multiplier
AM_BotmElevCBD Double BotmElevCBD array multiplier
StressPeriods
Field Type Description
OBJECTID OID
SPID Long Integer Stress period number used to define the order, e.g. 1, 2, 3
PERLEN Double Period length
NSTP Long Integer Number of time steps
TSMULT Double Time step multiplier
SSorTr Text Steady state or transient. SteadyState coded value domain
RIV_ITMP Short Integer Use previous flag
WEL_ITMP Short Integer Use previous flag
DRN_ITMP Short Integer Use previous flag
GHB_ITMP Short Integer Use previous flag
CHD_ITMP Short Integer Use previous flag
RCH_INRECH Short Integer Use previous flag
RCH_INIRCH Short Integer Use previous flag
EVT_INSURF Short Integer Use previous flag
EVT_INEVTR Short Integer Use previous flag
EVT_INEXDP Short Integer Use previous flag
EVT_INIEVT Short Integer Use previous flag
MNW1_ITMP Short Integer Use previous flag
STR_ITMP Short Integer Use previous flag
STR_IRDFLG Short Integer Use previous flag
STR_IPTFLG Short Integer Use previous flag
SFR_ITMP Short Integer Use previous flag
SFR_IRDFLG Short Integer Use previous flag
SFR_IPTFLG Short Integer Use previous flag
LAK_ITMP Short Integer Use previous flag
LAK_ITMP1 Short Integer Use previous flag
LAK_LWRT Short Integer Use previous flag
DRT_ITMP Short Integer Use previous flag
ETS_INETSS Short Integer Use previous flag
ETS_INETSR Short Integer Use previous flag
ETS_INETSX Short Integer Use previous flag
ETS_INIETS Short Integer Use previous flag
ETS_INSGDF Short Integer Use previous flag

Basic Package (BAS6)

The Basic Package is represented using the tables below. The Options and HNOFLO values are stored in the BASVars table as a text string and a double. The IBOUND and STRT arrays are stored in the Basic table. The IBOUND array is used to define the active/inactive status of the grid and the STRT array is used to define the starting heads. Mulipliers for the IBOUND and STRT arrays are stored in the BasicArrayMult table.

BASVars
Field Type Description
OBJECTID OID
Options Text Option words, space delimited
HNOFLO Double Head assigned to inactive cells
HEADNG1 Text First comment line
HEADNG2 Text Second comment line
Basic
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
IBOUND Long Integer IBOUND array
STRT Double Starting heads array
BasicArrayMult
Field Type Description
OBJECTID OID
Layer Long Integer Layer
AM_IBOUND Long Integer IBOUND array multiplier
AM_STRT Double Starting heads array multiplier

Output control

MODFLOW has two options for specifying output control: using words or using numeric codes. The MDM stores the options in tables patterned after the numeric codes option. The tool which converts MODFLOW models to geodatabases handles both options. Furthermore, the tools which export from the geodatabase to native MODFLOW files can be designed to export either format.

Not all of the output options are supported, in order to make the tables manageable.

The Output Control data consist of two parts: four global flags (IHEDFM, IDDNFM, IHEDUN, IDDNUN) and a set of flags that are specified for each time step. The global flags are stored in the OCVars table.

Time step data is stored in the OCTS table. Note that there is no INCODE value in the OCTS table. It is assumed that INCODE=0, indicating that all layers are treated the same way for a given time step. This allows the further assumption that there is one record for each output time step.

The OCTS table is entirely dependent on the records in the StressPeriods table and the number of time steps (NSTP) per stress period. Any tools used to manage the MDM will need to update the records in the OCTS table any time the StressPeriods table is edited.

Many of the MODFLOW packages include a flag at the top of the file indicating whether or not the cell-by-cell flow terms for the package should be output to the CCF file. These flags are stored in a single table called the CBFlags table.

OCVars
Field Type Description
OBJECTID OID
IHEDFM Short Integer Format for printing heads. OCVarsFileType coded value domain
IDDNFM Short Integer Format for printing drawdowns. OCVarsFileType coded value domain
IHEDUN Long Integer Unit number for saving heads
IDDNUN Long Integer Unit number for saving drawdowns
IBDOPT Long Integer Compact budget
IAUXSV Short Integer Auxiliary flag for saving cell-by-cell budget data
OCTS
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
TSNum Long Integer Time step number
IHDDFL Short Integer Head and drawdown output flag
IBUDFL Short Integer Budget print flag
ICBCFL Short Integer Flag for writing cell-by-cell flow
Hdpr Short Integer Output flag for head printout
Ddpr Short Integer Output flag for drawdown printout
Hdsv Short Integer Output flag for head saving
Ddsv Short Integer Output flag for drawdown saving
CBFlags
Field Type Description
OBJECTID OID
IBCFCB Short Integer Flag to store data to the CCF file
ILPFCB Short Integer Flag to store data to the CCF file
IRIVCB Short Integer Flag to store data to the CCF file
IWELCB Short Integer Flag to store data to the CCF file
IDRNCB Short Integer Flag to store data to the CCF file
IGHBCB Short Integer Flag to store data to the CCF file
IRCHCB Short Integer Flag to store data to the CCF file
IEVTCB Short Integer Flag to store data to the CCF file
IMNW1CB Short Integer Flag to store data to the CCF file
ILKCB Short Integer Flag to store data to the CCF file
IHUFCB Short Integer Flag to store data to the CCF file
ISTCB1_STR Short Integer Flag to store data to the CCF file
ISTCB2_STR Short Integer Flag to store data to the CCF file
ISTCB1_SFR Short Integer Flag to store data to the CCF file
ISTCB2_SFR Short Integer Flag to store data to the CCF file
IDRTCB Short Integer Flag to store data to the CCF file
IETSCB Short Integer Flag to store data to the CCF file
IUZFCB1 Short Integer Flag to store data to the CCF file
IUZFCB2 Short Integer Flag to store data to the CCF file

Block-Centered Flow Package (BCF6)

The data for the Block-Centered Flow Package are stored in a combination of variables and tables. The IBCFCB value is stored in the CBFlags table in the Output control group.

The BCFVars table stores various variables associated with the BCF package.

The BCFLayers table is used to store layer-by-layer variables. In the MODFLOW text input files, the Ltype flag consists of two digits: one representing the mean (LAYAVG) and one representing the layer type (LAYCON). These two digits are combined to a single flag in the input file but are stored separately in the MDM. There should be one record in the table for each layer in the grid.

The BCFProperties table stores the aquifer property arrays associated with the BCF package. Note that the data in these arrays are applicable to some layers, but not to others, depending on the layer type (Ltype). The users of the MDM (and the applications that operate on the MDM) will need to ensure that the fields of the records in the table are populated for the cells in the appropriate layers.

BCFVars
Field Type Description
OBJECTID OID
HDRY Double Head assigned to dry cells
IWDFLG Short Integer Flag that determines if wetting capability is active
WETFCT Double Factor included in head calculation that is initially established at a cell when it is converted from dry to wet
IWETIT Long Integer Iteration interval for attempting to wet cells
IHDWET Short Integer Flag that determines which equation is used to define initial head at cells that become wet
BCFLayers
Field Type Description
OBJECTID OID
Layer Long Integer Layer number
LAYAVG Short Integer Mean. BCFMean coded value domain
LAYCON Short Integer Layer type. BCFLayerType coded value domain
TRPY Double Horizontal anisotropy for the layer
AM_Sf1 Double Sf1 array multiplier
AM_Tran Double Tran array multiplier
AM_HY Double HY array multiplier
AM_Vcont Double Vcont array multiplier
AM_Sf2 Double Sf2 array multiplier
AM_WETDRY Double WETDRY array multiplier
BCFProperties
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
HY Double Hydraulic conductivity
Tran Double Transmissivity
Vcont Double Vertical conductivity
Sf1 Double Primary storage coefficient
Sf2 Double Secondary storage coefficient
WETDRY Double wetting threshold and flag to indicate which neighboring cells can cause cell to become wet

Layer-Property Flow (LPF) Package

The LPF Package is handled similarly to the BCF package. The ILPFCB value is stored in the CBFlags table in the Output control group. Variables associated with the LPF package are stored in the LPFVars table. Layer-based variables associated with the LPF package are stored in the LPFLayers table. The LPF aquifer property arrays are stored in the LPFProperties table. As is the case with the BCF package, the contents of the “arrays” depend on the layer types defined by the LAYTYP flag in the LPFLayers table. Some arrays are only required for certain layer types. The VKCB field is used to store the vertical conductivity for quasi-3d confining beds as defined by the LAYCBD table in the DIS section. The IJK field in records associated with VKCB values is the cell in the layer just above the confining bed.

LPFVars
Field Type Description
OBJECTID OID
HDRY Double Head assigned to dry cells
WETFCT Double Factor included in head calculation that is initially established at a cell when it is converted from dry to wet
IWETIT Long Integer Iteration interval for attempting to wet cells
IHDWET Short Integer Flag that determines which equation is used to define initial head at cells that become wet
LPFLayers
Field Type Description
OBJECTID OID
Layer Long Integer Layer number
LAYTYP Short Integer Layer type. LPFLayerType coded value domain
LAYAVG Short Integer Mean. LPFMean coded value domain
CHANI Double Horizontal anisotropy flag
LAYVKA Short Integer Vertical hydraulic conductivity flag
LAYWET Short Integer Flag indicating if wetting is active
AM_HK Double HK array multiplier
AM_HANI Double HANI array multiplier
AM_VKA Double VKA array multiplier
AM_Ss Double Ss array multiplier
AM_Sy Double Sy array multiplier
AM_WETDRY Double WETDRY array multiplier
AM_VKCB Double VKCB array multiplier
LPFProperties
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
HK Double Hydraulic conductivity
HANI Double Anisotropy
VKA Double Vertical conductivity or ratio
Ss Double Specific storage
Sy Double Specific yield
WETDRY Double Wetting threshold and flag
VKCB Double Vertical conductivity of Quasi-3D confining bed

Hydrogeologic Unit Flow (HUF2) Package (v 2.0+)

Coming soon in version 2.0...

HUFVars
Field Type Description
OBJECTID OID
HDRY Double Head assigned to cells converted to dry in simulation
NHUF Long Integer Number of hydrogeologic units
IOHUFHEADS Short Integer Flag and unit number
IOHUFFLOWS Short Integer Flag and unit number
WETFCT Double Factor used when cell converted from dry to wet
IWETIT Long Integer Iteration interval for attempting to wet cells
IHDWET Short Integer Flag for equation used for initial head at cells that become wet
HUFLayers
Field Type Description
OBJECTID OID
Layer Long Integer Layer
LTHUF Short Integer Flag specifying layer type
LAYWET Short Integer Flag indicating if wetting is active
AM_WETDRY Double WETDRY array multiplier
HUFWetDry
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
WETDRY Double Wetting threshold and flag for neighboring cells to become wet
HUFUnits
Field Type Description
OBJECTID OID
HGUID Long Integer Hydrogeologic unit ID
HGUNAME Text Name of the hydrogeologic unit
HGUHANI Double Flag and horizontal anisotropy value
HGUVANI Double Vertical hydraulic conductivity flag
AM_Top Double Top array multiplier
AM_Thick Double Thick array multiplier
PRINTCODE_HK Short Integer Flag for printing the VK array
PRINTCODE_HANI Short Integer Flag for printing the HANI array
PRINTCODE_VK Short Integer Flag for printing the VK array
PRINTCODE_Ss Short Integer Flag for printing the Ss array
PRINTCODE_Sy Short Integer Flag for printing the Sy array
HUFUnitProps
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
HGUID Long Integer Hydrogeologic unit ID
Top Double Top elevation of the hydrogeologic unit
Thick Double Thickness of the hydrogeologic unit

List-Based Stress Packages

Most of the commonly-used stress packages in MODFLOW follow a simple strategy. The cells associated with a given type of stress are identified and an input entry is made for each instance in a list in the package input file. In some cases, multiple entries are made for a given cell (three wells in a single cell, for example). The River, Well, Drain, General Head Boundary, Constant-Head Boundary, and Horizontal Flow Barrier packages follow this format. Each of these packages are represented in the data model using a variable and a table. For each package, the cell-by-cell flow flag (IRIVCB, IWELCB, IDRNCB, etc.) are stored in the CBFlags table in the Output control group. The remaining data associated with the package are stored in a series of tables, one per package. Each record in the tables corresponds to an instance of the given stress at a particular cell for a particular stress period. The SourceID field is used to associate records with the spatial features from which they were derived. The SourceID represents the HydroID of the point, polyline, or polygon in the Framework component of the Arc Hydro database that was used to construct the record in the table. This field is only used when the tables are constructed using a tool in Arc Hydro GW. For the case where pre-built MODFLOW files are imported from another database, the SourceID values should all be Null.

RIV
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Stage Double River stage
Cond Double Conductance
Rbot Double Elevation of the bottom of the riverbed
IFACE Long Integer MODPATH auxiliary variable
Condfact Double Factor used to calculate conductance from the parameter value
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell
CHD
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Shead Double Head at start of stress period
Ehead Double Head at end of stress period
Shdfact Double Factor used to calculate Shead from the parameter value
Ehdfact Double Factor used to calculate Ehead from the parameter value
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell
WEL
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Q Double Pumping rate
Qfact Double Factor used to calculate Q from the parameter value
IFACE Long Integer MODPATH auxiliary variable
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell
DRN
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Elevation Double Elevation of the drain
Cond Double Conductance
IFACE Long Integer MODPATH auxiliary variable
Condfact Double Factor used to calculate conductance from the parameter value
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell
GHB
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Bhead Double Head on the boundary
Cond Double Conductance
IFACE Long Integer MODPATH auxiliary variable
Condfact Double Factor used to calculate conductance from the parameter value
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell
HFB6
Field Type Description
OBJECTID OID
IJK1 Long Integer IJK Index of cell on one side of barrier
IJK2 Long Integer IJK Index of cell on other side of barrier
Hydchr Double Hydraulic characteristic
Factor Double Factor used to calculate Hydchr from the parameter value
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell.
MNW1
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
WellID Long Integer Well ID
Qdes Double Desired volumetric pumping or recharge rate
QwVal Double Water-quality value
Rw Double Flag and a variable used to define the cell-to-well conductance
Skin Double Defines the friction losses to the well owing to the screen and to formation damage
Hlim Double Limiting water level
Href Double Reference elevation
DD Long Integer Flag that indicates the value of Hlim read is a drawdown or build-up from the reference elevation
Iwgrp Long Integer Water-quality group identifier
Cp_C Double Coefficient for nonlinear head losses
QCUT Long Integer Flag that indicates pumping limits
Qfrcmn Double Minimum pumping rate that a well must exceed to remain active
Qfrcmx Double Minimum potential pumping rate that must be exceeded to reactivate a well
SITE Text Optional label for identifying wells
MNW1Vars
Field Type Description
OBJECTID OID
IWELPT Short Integer Flag for printing
NOMOITER Long Integer Flow in MNW wells will not be calculated after NOMITER iterations
kspref Long Integer Set of water levels that will be used as default reference values for calculating drawdown
LOSSTYPE Text Flag to determine the user-specified model for well loss
PLossMNW Double If LOSSTYPE is nonlinear, represents the exponent P
PREFIX Text Prefix name of file for outputting time series data from MNW
WEL1_FILE Text Name of an auxiliary output file
iunw1 Long Integer Unit number
BYNODE_FILE Text Name of an auxiliary output file
iunby Long Integer Unit number
BYNODE_ALLTIME Short Integer Flag that indicates flow rates should be written to BYNODE or QSUM at every time step
QSUM_FILE Text Name of an auxiliary output file
iunqs Long Integer Unit number
QSUM_ALLTIME Short Integer Flag that indicates flow rates should be written to BYNODE or QSUM at every time step

Coming soon in version 2.0...

DRT
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Elevation Double Elevation of the drain
Cond Double Conductance
IFACE Long Integer MODPATH auxiliary variable
Condfact Double Factor used to calculate conductance from the parameter value
LayR Long Integer Return flow flag
RowR Long Integer Row number of the recipient cell
ColR Long Integer Column number of the recipient cell
Rfprop Double Return-flow proportion
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell

Array-Based Stress Packages

Two of the more common stress packages are array-based: the Recharge Package (RCH) and the Evapotranspiration Package (EVT). While the individual records are quite similar, both packages require some additional variables. Furthermore, both packages require input that are based on rows and columns, but are not necessarily tied to a particular layer. One approach to handle this would be to store IJ indices. However, it is necessary to do joins with the Cell2D and Node objects to display values. Thus, a IJ field is used with each record where the IJ index for the corresponding cell in the top layer is stored.

Recharge Package (RCH)

The cell-by-cell flow flag (IRCHCB) for the Recharge Package (IRCHCB) is stored in the CBFlags table in the Output control group. The remaining data are stored in the three tables below. The RCHVars table holds the NRCHOP variable (associated with a coded value domain). This variable defines the recharge option. For NRCHOP=1 or 2, a single recharge value (RECH) is stored for each IJ combination. For NRCHOP=3, an additional array of integer values (IRCH) is required. The RECH and IRCH values are stored in the RCHArrays table. The IRCH field will likely be rarely used. The RCHArrayMult table is used to store array multipliers.

RCHVars
Field Type Description
OBJECTID OID
NRCHOP Short Integer Recharge option code. RechargeOption coded value domain
RCHArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
SPID Long Integer Stress period ID
RECH Double Recharge flux
IRCH Long Integer Layer number where recharge is applied
RCHArrayMult
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
AM_RECH Double Recharge flux array multiplier
AM_IRCH Long Integer IRCH array multiplier

Evapotranspiration Package (EVT)

The Evapotranspiration package is similar to the Recharge Package. The cell-by-cell flow variable (IEVTCB) is stored in the CBFlags table in the Output control group. The remaining data are stored in the three tables below. If NEVTOP=1, the IEVT field is ignored. If NEVTOP=2, the IEVT field is used.

EVTVars
Field Type Description
OBJECTID OID
NEVTOP Short Integer Evapotranspiration option code. EvapotranspirationOption coded value domain
EVTArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
SPID Long Integer Stress period ID
SURF Double Elevation of the ET surface
EVTR Double Maximum ET flux
EXPD Double ET extinction depth
IEVT Long Integer Layer indicator variable
EVTArrayMult
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
AM_SURF Double SURF array multiplier
AM_EVTR Double EVTR array multiplier
AM_EXPD Double EXPD array multiplier
AM_IEVT Long Integer IEVT array multiplier

Evapotranspiration Segments Package (ETS) (v 2.0+)

Coming soon in version 2.0...

ETSVars
Field Type Description
OBJECTID OID
NETSOP Short Integer Evapotranspiration option code
NETSEG Long Integer Number of segments
ETSArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
SPID Long Integer Stress period ID
ETSS Double Elevation of the ET surface
ETSR Double Maximum ET flux
ETSX Double ET extinction depth
IETS Long Integer Layer indicator variable
ETSArrayMult
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
AM_ETSS Double ETSS array multiplier
AM_ETSR Double ETSR array multiplier
AM_ETSX Double ETSX array multiplier
AM_IETS Long Integer IETS array multiplier
ETSSegArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
SPID Long Integer Stress period ID
SEGID Long Integer Segment ID
PXDP Double Proportion of the extinction depth
PETM Double Proportion of the maximum evapotranspiration rate
ETSSegArrayMult
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
SEGID Long Integer Segment ID
AM_PXDP Double PXDP array multiplier
AM_PETM Double PETM array multiplier

Stream Package (STR6) (v 2.0+)

Coming soon in version 2.0...

STRVars
Field Type Description
OBJECTID OID
ICALC Short Integer Flag for calculating stream stages in reaches
CONST Double Constant value used in calculating stream reaches
STRItrib
Field Type Description
OBJECTID OID
Seg Long Integer Stream segment
SPID Long Integer Stress period ID
Itrib Long Integer Segment number for each tributary that flows into a segment
STRIupseg
Field Type Description
OBJECTID OID
Seg Long Integer Stream segment
SPID Long Integer Stress period ID
Iupseg Long Integer Number of upstream segment from which water is diverted
STRReaches
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress Period ID
Seg Long Integer Stream segment
Reach Long Integer Stream reach
Flow Double Streamflow entering a segment
Stage Double Stream stage
Cond Double Streambed hydraulic conductance
Sbot Double Elevation of the bottom of the streambed
Stop Double Elevation of the top of the streambed
Width Double Width of the stream channel
Slope Double Slope of the stream channel
Rough Double Manning's roughness coefficient
Condfact Double Factor used to calculate streambed hydraulic conductance
SourceID Long Integer HydroID of the feature that the source comes from
LinearScale Double Length from the begining of a polyline to the center of the polyline segement within the MODFLOW cell

Streamflow-Routing Package (SFR2) (v 2.0+)

Coming soon in version 2.0...

SFRVars
Field Type Description
OBJECTID OID
CONST Double Value used in calculating stream depth for stream reach
DLEAK Double Closure tolerance for stream depth for calculating leakage
SFRReaches
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
ISEG Long Integer Number of the stream segment this reach is located in
IREACH Long Integer Reach number in a stream segment
RCHLEN Double Length of channel of the stream reach within this model cell
SFRFlowTab
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
NSEG Long Integer Number of the stream segment
FLOWTAB Double Streamflow value
DPTHTAB Double Average depth
WDTHTAB Double Stream width
SFRSegments
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
NSEG Long Integer Number of the stream segment
ICALC Short Integer Used to calculate stream depth in this segment
OUTSEG Long Integer Downstream stream segment that receives tributary inflow from the last downstream reach of this segment
IUPSEG Long Integer Upstream segment from which water is diverted
IPRIOR Short Integer Prioritization system for diversion
NSTRPTS Short Integer Dimensions table relating streamflow with stream depth and width
FLOW Double Streamflow entering or leaving upstream end of stream segment
RUNOFF Double Volumetric rate of the diffuse overland runoff entering stream segment
ETSW Double Volumetric rate per unit area of water removed by evapotranspiration
PPTSW Double Volumetric rate per unit area of water added by precipitation
ROUGHCH Double Manning's roughness coefficient for the channel in all reaches of the segment
ROUGHBK Double Manning's roughness for the overbank areas in all reaches of the segment
CDPTH Double Coefficient used in relating stream depth to streamflow
FDPTH Double Exponent used in relating stream depth to streamflow
AWDTH Double Coefficient used in relating stream width to streamflow
BWDTH Double Exponent used in relating stream width to streamflow
HCOND1 Double Hydraulic conductivity of streambed at upstream end of segment
THICKM1 Double Thickness of streambed at upstream end of segment
ELEVUP Double Elevation at top of streambed at upstream end of segment
WIDTH1 Double Average width of stream channel at upstream end of segment
DEPTH1 Double Average depth of water in channel at upstream end of segment
HCOND2 Double Hydraulic conductivity of streambed at downstream end of segment
THICKM2 Double Thickness of streambed at downstream end of segment
ELEVDN Double Elevation at top of streambed at downstream end of segment
WIDTH2 Double Average width of stream channel at downstream end of segment
DEPTH2 Double Average depth of water in channel at downstream end of segment
SFRXsect
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
NSEG Long Integer Number of the stream segment
XCPT1 Double Distance relative to the left bank of the stream channel
ZCPT1 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT2 Double Distance relative to the left bank of the stream channel
ZCPT2 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT3 Double Distance relative to the left bank of the stream channel
ZCPT3 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT4 Double Distance relative to the left bank of the stream channel
ZCPT4 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT5 Double Distance relative to the left bank of the stream channel
ZCPT5 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT6 Double Distance relative to the left bank of the stream channel
ZCPT6 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT7 Double Distance relative to the left bank of the stream channel
ZCPT7 Double Height relative to the top of the lowest elevation of the streambed (thalweg)
XCPT8 Double Distance relative to the left bank of the stream channel
ZCPT8 Double Height relative to the top of the lowest elevation of the streambed (thalweg)

GAG Package (v 2.0+)

Coming soon in version 2.0...

GAGSFR
Field Type Description
OBJECTID OID
GAGESEG Long Integer Stream segment number where gage is located
GAGERCH Long Integer Stream reach number where gage is located
UNIT Short Integer Unit number of output file for this gage
OUTTYPE Short Integer Flag for type of expanded listing desired in output file
GAGLAK
Field Type Description
OBJECTID OID
LAKE Long Integer Lake number of the lake where the gage is located
UNIT Short Integer Unit number for output file
OUTTYPE Short Integer Code for type of expanded listing desired in output file

LAK3 Package (v 2.0+)

Coming soon in version 2.0... MOC3D properties unsupported.

LAKVars
Field Type Description
OBJECTID OID
THETA Double Explicit, semi-implicit, or implicit solution for lake stages
NSSITR Short Integer Maximum number of iterations for Newton’s method solution for equilibrium lake stages in each MODFLOW iteration for steady-state aquifer head solution
SSCNCR Double Convergence criterion for equilibrium lake stage solution by Newton’s method
LAKArrays
Field Type Description
OBJECTID OID
IJK Long Integer IJK Index
SPID Long Integer Stress period ID
LKARR Long Integer Lake array value
BDLKNC Double Lakebed leakance value
LAKStages
Field Type Description
OBJECTID OID
LakeID Long Integer Lake ID
STAGES Double Initial stage of lake at the beginning of the run
SSMN Double Minimum stage allowed for lake in steady-state solution
SSMX Double Maximum stage allowed for lake in steady-state solution
LAKSublakes
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
SystemID Long Integer Multi-lake system ID
ISUB Long Integer Identification numbers of the sublakes in the sublake system
SILLVT Double Sill elevation that determines whether the center lake is connected with a given sublake
LAKRates
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
LakeID Long Integer Lake ID
PRCPLK Double Rate of precipitation per unit area at the surface of lake
EVAPLK Double Rate of evaporation per unit area from the surface of lake
RNF Double Overland runoff from an adjacent watershed entering lake
WTHDRW Double Volumetric rate, or flux, of water removal from lake by means other than rainfall, evaporation, surface outflow, or ground-water seepage
SSMN Double Minimum stage allowed for lake in steady-state solution
SSMX Double Maximum stage allowed for lake in steady-state solution

Unsaturated Zone Flow (UZF) Package (v 2.0+)

Coming soon in version 2.0...

UZFVars
Field Type Description
OBJECTID OID
NUZTOP Short Integer Flag defining recharge to and discharge from cells
IUZFOPT Short Integer See MODFLOW documentation
IRUNFLG Short Integer Flag to route to stream segments or lakes
IETFLG Short Integer Flag to simulate evapotranspiration
NTRAIL2 Long Integer Number of trailing waves
NSETS2 Long Integer Number of wave sets
NUZGAG Long Integer Number of cells for printing water budget and content
SURFDEP Double Average height of undulations
UZFArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
IUZFBND Long Integer Aerial extent of active model
IRUNBND Long Integer Define the stream segments
VKS Double Saturated vertical hydraulic conductivity of the unsaturated zone
EPS Double Brooks-Corey epsilon of the unsaturated zone
THTS Double Saturated water content of the unsaturated zone
THTI Double Initial water content for each vertical column of cells
UZFArrayMult
Field Type Description
OBJECTID OID
AM_IUZFBND Long Integer IUZFBND array multiplier
AM_IRUNBND Long Integer IRUNBND array multiplier
AM_VKS Double VKS array multiplier
AM_EPS Double EPS array multiplier
AM_THTS Double THTS array multiplier
AM_THTI Double THTI array multiplier
UZFGages
Field Type Description
OBJECTID OID
IUZROW Long Integer Row number of the cell
IUZCOL Long Integer Column number of the cell
IFTUNIT Long Integer Unit number of the output file
IUZOPT Long Integer Type of expanded listing desired in the output file
UZFStressArrays
Field Type Description
OBJECTID OID
IJ Long Integer IJ Index
SPID Long Integer Stress period ID
FINF Double Infiltration rate
PET Double ET demand rate
EXTDP Double ET extinction depth
EXTWC Double Extinction water content
UZFStressArrayMult
Field Type Description
OBJECTID OID
SPID Long Integer Stress period ID
AM_FINF Double FINF array multiplier
AM_PET Double PET array multiplier
AM_EXTDP Double EXTDP array multiplier
AM_EXTWC Double EXTWC array multiplier
NUZF1 Short Integer Flag for reusing or reading infiltration rates
NUZF2 Short Integer Flag for reusing or reading ET demand rates
NUZF3 Short Integer Flag for reusing or reading ET extinction depths
NUZF4 Short Integer Flag for reusing or reading the extinction water content

Solver Packages

Representing solver package input in the MDM is a fairly simple process. None of the packages require any type of array- or list-based input; all input is in the form of a set of variables. For each solver package there is one table with one field for each of the variables used in the package. Each table contains only one record.

SIP
Field Type Description
OBJECTID OID
MXITER Long Integer Max iterations per time step
NPARM Long Integer Number of iteration variables to be used
ACCL Double Acceleration variable
HCLOSE Double Head change criterion
IPCALC Short Integer Flag indicating where seed comes from
WSEED Double Seed for calculating iteration variables
IPRSIP Long Integer Printout interval
GMG
Field Type Description
OBJECTID OID
RCLOSE Double Residual convergence criterion for the inner iteration
IITER Long Integer Maximum number of PCG iterations for each linear solution
HCLOSE Double Head change convergence criterion for nonlinear problems
MXITER Long Integer Maximum number of outer iterations
DAMP Double Value of the damping parameter
IADAMP Short Integer A flag that controls adaptive damping
IOUTGMG Short Integer Flag that controls output. IOUTGMGType coded value domain
IUNITMHC (optional) Short Integer IUNITMHC is a flag and a unit number, which controls output of maximum head change values
ISM Short Integer Flag that controls the type of smoother used in the multigrid preconditioner
ISC Short Integer Flag that controls semicoarsening in the multigrid preconditioner. ISCType coded value domain
DUP (optional) Double the maximum damping value that should be applied at any iteration when the solver is not oscillating
DLOW(optional) Double the minimum damping value to be generated by the adaptive-damping procedure
CHGLIMIT (optional) Double the maximum allowed head change at any cell between outer iterations; it has units of length
RELAX Double Relaxation parameter for the ILU preconditioned conjugate gradient method
LMG
Field Type Description
OBJECTID OID
STOR1 Double Variable controlling the amount of storage allocated
STOR2 Double Variable controlling the amount of storage allocated
STOR3 Double Variable controlling the amount of storage allocated
ICG Short Integer Variable controlling whether or not conjugate gradient iterations are used at the end of each multigrid cycle
MXITER Long Integer Maximum number of iterations
MXCYC Long Integer Maximum number of cycles allowed per call to the solver
BCLOSE Double Budget closure criterion for the scaled L2 norm of the matrix equations
DAMP Double Damping/accelerating parameter identical to ACCL of the DE4 solver
IOUTAMG Short Integer Flag that controls the information printed each time step from the solver to the LIST output file. IOUTAMGType coded value domain
DUP Double Maximum value of DAMP that should be applied at any iteration
DLOW Double Minimum value of DAMP that should be applied at any iteration
PCG
Field Type Description
OBJECTID OID
MXITER Long Integer Max number of outer iterations
ITER1 Long Integer Number of inner iterations
NPCOND Short Integer Flag used to select matrix conditioning method
HCLOSE Double Head change criterion
RCLOSE Double Residual criterion
RELAX Double Relaxation parameter
NBPOL Short Integer Flag indicating whether estimate on upper bound on maximum eigenvalue is 2.0 or calculated
IPRPCG Long Integer Printout interval
MUTPCG Short Integer Flag that controls printing of convergence information. MUTPCGType coded value domain
DAMP Double Damping factor
DE4
Field Type Description
OBJECTID OID
ITMX Long Integer Max number of iterations each time step
MXUP Long Integer Max number of equations in upper part of equations to be solved
MXLOW Long Integer Max number of equations in lower part of equations to be solved
MXBW Long Integer Maximum band width plus 1
IFREQ Short Integer Flag indicating the frequency at which coefficients in [A] change
MUTD4 Short Integer Flag that indicates the quantity of information that is printed
ACCL Double Multiplier for computed head change for each iteration
HCLOSE Double Head change closure criterion
IPRD4 Long Integer Time step interval for printing convergence information
SOR
Field Type Description
OBJECTID OID
MXITER Long Integer Max iterations per time step
ACCL Double Acceleration variable
HCLOSE Double Head change criterion
IPRSOR Long Integer Printout interval

Parameters

Beginning with MODFLOW 2000, the MODFLOW input files allow for the definition of parameters. Parameter definitions can be complex and representing parameters in a GIS database is challenging. The following design is an attempt to allow complex parameter definitions, yet provide a simple option for the most routine cases. The tables are related in multiple ways but those relationships are not shown here. Refer to the diagram.

Params
Field Type Description
OBJECTID OID
ParamID Long Integer Parameter ID
PARNAM Text Parameter name
PARTYPE Text Standard MODFLOW parameter type from PARTYPE coded value domain. If "Custom", then the TableCode and FieldCode fields are used to define the parameter type.
TableCode Text The name of the table containing the parameter. Ignored unless PARTYPE is "Custom".
FieldCode Text The name of the field in the table identified by TableCode containing the parameter. Ignored unless PARTYPE is "Custom".
Parval Double Parameter value used for forward runs
Keyval Double Key value in the field identified by PARTYPE (or TableCode and FieldCode) that identifies the location of the parameter. The value should be one that does not normally occur in the data (e.g. -99999)
B Double "Starting" value used in sensitivity and inverse runs
BL Double Min parameter value
BU Double Max parameter value
BSCAL Double Scaling factor for the SEN and PES processes.
LN Short Integer Flag indicating whether or not the parameter should be log-transformed during the SEN and PES processes
ISENS Short Integer Flag indicating whether or not the parameter should be analyzed during SEN or PES processes
LogInterp Short Integer Flag whether or not to use log interpolation for pilot points
LogMinVal Double Minimum value when using log interpolation for pilot points
Tied Text Used by PEST. The name of another parameter used to link one parameter to another. The tied parameter is automatically adjusted along with the parent parameter by multiplying the parent parameter value by the Parval value of the tied parameter.
Source Short Integer Flag indicating how data values for the parameter will be populated. ParamSource coded value domain.
PilotPts
Field Type Description
OBJECTID OID
ParamID Long Integer Parameter ID from Params table
PointName Text Point name
Parval Double Parameter value used for forward runs
B Double "Starting" value used in sensitivity and inverse runs
ISENS Short Integer Flag indicating whether or not the parameter should be analyzed during SEN or PES processes
MultID Long Integer Multiplier ID from Multipliers table
SourceID Long Integer HydroID of the feature that the record comes from
ParInstSP
Field Type Description
OBJECTID OID
ParInstID Long Integer Parameter Instance ID from ParInstances table
SPID Long Integer Stress period ID from StressPeriods table
ParInstances
Field Type Description
OBJECTID OID
ParInstID Long Integer Parameter instance ID
InstName Text Instance name
ParamID Long Integer Parameter ID from Params table
Clusters
Field Type Description
OBJECTID OID
ClusterID Long Integer Cluster ID
ParInstID Long Integer Parameter Instance ID from ParInstances table
Layer Long Integer Layer
ZoneID Long Integer Zone ID from Zones table
MultID Long Integer Multiplier ID from Multipliers table
HGUNAME Text Hydrogeologic Unit Name
IZ
Field Type Description
OBJECTID OID
ClusterID Long Integer Cluster ID from Clusters table
IZ Long Integer Zone code
ZoneNames
Field Type Description
OBJECTID OID
ZoneID Long Integer Zone ID from Zones table
ZoneName Text Zone name
ArrayMult Long Integer Array multiplier
Zones
Field Type Description
OBJECTID OID
ZoneID Long Integer Zone ID
IJ Long Integer IJ Index
IZON Long Integer Value stored at cell
Multipliers
Field Type Description
OBJECTID OID
MultID Long Integer Multiplier ID
IJ Long Integer IJ Index
RMLT Double Array multiplier value
MultNames
Field Type Description
OBJECTID OID
MultID Long Integer Multiplier ID from Multipliers table
MultName Text Multiplier Name
ArrayMult Long Integer Array multiplier
Function Text Simple mathematical operators used to combine multiplier arrays

The main table is the Params table. Parameters can be classified into two groups: 1) list-based parameters (well, drain, river, etc.) 2) array-based parameters (K, Ss, Sy, recharge, et, etc.). The strategy for managing the two types of parameters differs slightly. Another type of parameter exists that is non-native to MODFLOW: pilot points associated with array-based parameters.

List-Based Parameters

In the input files for the list-based stress packages, parameters are defined by providing a list of parameter definitions at the top of the file, above the main list of stress items and including a list of parameter names in the main list with each stress period group. Since this approach includes some redundancy and since it is difficult to directly duplicate in a database setting, a different strategy is used based on the concept of “key values”. The Keyval field in the Params table represents a value in the identified data column that identifies the location of the parameter. A value for the Keyval field should be selected such that it would not normally occur in the data column. For example, if the Keyval=-800 is used to identify river conductance, a query could be performed on this value to find all river stress objects with this value. The tools developed for the MDM are able to use this type of query to write out the MODFLOW files in the native format. Furthermore, a similar tool is able to read a MODFLOW package file in the native format and convert it to the Keyval format when importing the file. Using the Keyval approach also simplifies the process of parameterizing the model input in the GIS. The user simply assigns selected key values in the appropriate fields using standard editing tools. No special or additional tools are required.

For parameters associated with conductance values, the Condfact field is used to scale the parameter value for use with the conductance term. A similar approach is used with the Hydchr and Factor terms in the HFB table.

Array-Based Parameters

Array-based parameters are more complicated than list-based parameters. Array-based parameters can be defined in three ways: using key values, using clusters, and using pilot points.

Key Values. The Keyval field is used to identify the records in the data column corresponding to the parameter locations, similar to the process described above for list-based parameters. For most cases, this simple approach is sufficient. The only case where it is not sufficient is where you want to define a parameter that uses multiple zone arrays which cover distinct portions of the grid. When using the Key Value approach, only the Params table is necessary.

Clusters. The Clusters approach mimics the method used in the MODFLOW input files. Clusters are associated with Parameter Instances, even if a parameter only has a single instance. Clusters are defined using zone arrays and multiplier arrays. All of the tables, besides the Params and Pilot points tables, exist solely to support the clusters approach.

It should be noted that the entries in the Multipliers and Zones tables are referenced by IJ index. These arrays stored in this table are defined on a layer-by-layer basis with respect to the MODFLOW grid. Thus, each entry in the array is associated with an IJ index, independent of model layer (K). Going with an IJ index as opposed to two separate I, J fields simplifies the process of joining the tables with the Cell2D features. The IJ index for a particular entry corresponds to the cell in the top layer of the grid, regardless of which layer the Mulplier or Zone array is associated with. A GP tool exists that creates a temporary copy of the table and populates the table with I and J fields when needed.

Transient Array-Based Parameters

Transient array-based parameters are used with the Recharge and ET packages. In this case, MODFLOW utilizes “parameter instances” to define the parameters in the input file. Each parameter can be defined by multiple instances. Each parameter instance has a name and one or more clusters. Each parameter instance/cluster combination is linked to one or more stress periods. The ParInstances table contains the list of parameter instances.

Pilot Points

Pilot points allow one to define a distribution of values within an array by specifying parameter values at selected XY locations (pilot points) and interpolating to a zone of cells within a model layer. The Keyval field is used to identify which cells in the specified array are to be included in the pilot point interpolation. The PilotPts table is used to store the list of pilot points. Pilot points are organized into groups using the ParamID. The SourceID field could be used to represent the HydroID field of the associated point in a point layer from which the pilot point set was created. The Parval, and ISENS fields supersede the similarly named fields in the Params table. The weights associated with each pilot point are defined using a multiplier array. A tool will exist that displays the final paramter values based on the pilot point data.

Observations

Beginning with MODFLOW 2000, an Observation Process was provided in MODFLOW that allows the user to input head and flow observations. Simulated equivalents are then automatically computed by MODFLOW, from which residuals can be computed. This is an essential part of any type of calibration exercise. Both head and flow observations can be transient and head observations are allowed to span multiple layers. Flow observations are supported for the GHB, DRN, RIV, and CHD packages. This list will be expanded as more stress packages are added to the data model.

OBSVars
Field Type Description
OBJECTID OID
OUTNAM Text Base file name for the output for the observation process
ISCALS Long Integer Controls printing of the observation-sensitivity tables
TOMULTH Double Time-offset multiplier for head observations
EVH Double Input error variance multiplier for head observations
IUHOBSV Long Integer File unit for saving observation data in a file
HOBDRY Double Value of the simulated equivalent when the observation is omitted because a cell is dry
TOMULTGB Double Time-offset multiplier for general-head-boundary observations
EVFGB Double Error variance multiplier for observations represented by the General-Head Boundary Package
IUGBOBSV Long Integer File unit for saving observation data in a file
TOMULTDR Double Time-offset multiplier for drain observations
EVFDR Double Error variance multiplier for observations represented by the Drain Package
IUDROBSV Long Integer File unit for saving observation data in a file
TOMULTRV Double Time-offset multiplier for river observations
EVFRV Double Error variance multiplier for river observations
IURVOBSV Long Integer File unit for saving observation data in a file
TOMULTCH Double Time-offset multiplier for constant-head flow observations
EVFCH Double Error variance multiplier for constant-head flow observations
IUCHOBSV Long Integer File unit for saving observation data in a file
TOMULTST Double Time-offset multiplier for stream observations
EVFST Double Error variance multiplier for stream observations
IUSTOBSV Long Integer File unit for saving observation data in a file
TOMULTDT Double Time-offset multiplier for drain-return observations
EVFDT Double Error variance multiplier for drain-return observations
HOB
Field Type Description
OBJECTID OID
HOBID Long Integer Head observation ID
OBSNAM Text String used to identify the observation
IJ Long Integer IJ index of the cell in which the head observation is located
ROFF Double Row offset used to locate the observation within a finite-difference cell
COFF Double Column offset used to locate the observation within a finite-difference cell
ITT Short Integer Flag whether head or changes in head are to be used as observations
HOBLayers
Field Type Description
OBJECTID OID
HOBID Long Integer Head observation ID from HOB table
Layer Long Integer Layer
PR Double Proportion of the simulated hydraulic head in layer used to calculate simulated multilayer head
HOBTimes
Field Type Description
OBJECTID OID
HOBID Long Integer Head observation ID from HOB table
OBSNAM Text Observation name
IREFSP Long Integer Stress period to which the observation time is referenced
TOFFSET Double Time from beginning of stress period IREFSP to the time of the observation
HOBS Double Observed hydraulic head
HSIM Double Simulated hydraulic head (computed head)
STATh Double Value from which the weight is calculated if the observation is head
STATdd Double Value from which the weight is calculated if the observation is the temporal change in head
STATFLAG Short Integer STATFLAG coded value domain
PLOTSYMBOL Long Integer An integer intended to control the symbols used to plot data
FLOB
Field Type Description
OBJECTID OID
FLOBID Long Integer Flow observation ID
FLOBType Text FLOBType coded value domain
OBSNAM Text Observation name
IREFSP Long Integer Stress period to which the observation time is referenced
TOFFSET Double Time from beginning of stress period IREFSP to the time of the observation
HOBS Double Observed hydraulic head
HSIM Double Simulated hydraulic head (computed head)
STATISTIC Double Value from which the weight for the observation is calculated
STATFLAG Short Integer STATFLAG coded value domain
PLOTSYMBOL Long Integer An integer intended to control the symbols used to plot data
FLOBFactors
Field Type Description
OBJECTID OID
FLOBID Long Integer Flow observation ID from FLOB table
IJK Long Integer IJK Index
Factor Double Portion of the simulated gain or loss in this cell that is included in the total simulated gain or loss for this cell group

The OBSVars table is used to store individual variables related to observations. The OUTNAM and ISCALS variables are written to the OBS file. The TOMULT* and EV* variables are written to the HOBS, GBOB, DROB, RVOB, and CHOB files.

The HOB table is used to store the locations of the head observations. The HOBLayers table is used to store a list of layers associated with each observation. In the MODFLOW input file, a list of layers is only provided when there are multiple layers. However, the table is used for all cases (even when there is only one layer) in the interest of simplicity. The layers are stored in the HOBLayers table. The HOBTimes table is used to store the head measurements. For each head observation location, there may be multiple head observations at different points in time. Once again, the table is used even for cases with a single value in the interest of simplicity.

The FLOB table is used to store the flow observations. Each record in this table corresponds to an observation at a particular time defined by the IRESFP and TOFFSET variables. All types of flow observations are stored in the same table and are distinguished using the FLOBType field. The FLOBFactors table is used to identify the entries in the associated stress package table that correspond to the given flow observation. The manner in which the factors are associated with the entries in the stress package file follows the same method as outlined in the MODFLOW file formats. This method relies on the ordering of the items in the list. As a result, it typically makes most sense for the tools associated with these packages to build the entries for both the stress package tables and the flow observations tables at the same time.

The variance-covariance weight matrix option (WTQ array) is not supported for flow observations in this version of the MDM.

SEN and PES Processes

The tables associated with the SEN and PES processes are shown below. The data associated with the Sensitivity process are stored in two places: 1) the parameter variables (BSCAL, LN, and ISENS) are stored in the Params table, and 2) the remaining variables are stored in the SEN table. The PES data are all stored in the PES table. Lines 5-10 in the PES file are not supported. It is assumed that NPNG=0, IPR=0, and MPR=0.

SEN
Field Type Description
OBJECTID OID
ISENALL Short Integer Flag that can override values of ISENS and can deactivate PES process
IUHEAD Short Integer Flag that allows user to choose between using scratch files or memory for storing grid sensitivities
IPRINTS Short Integer Flag indicating how saving and printing of sensitivity arrays are controlled
ISENSU Short Integer Flag that controls whether sensitivity arrays are to be saved and, if so, to what file.
ISENPU Short Integer Flag identifying whether sensitivity arrays are to be printed and, if so, to what file.
ISENFM Short Integer Code indicating the format for printing sensitivity arrays.
PES
Field Type Description
OBJECTID OID
MAXITER Double See MODFLOW documentation
MAXCHANGE Double See MODFLOW documentation
TOL Double See MODFLOW documentation
SOSC Double See MODFLOW documentation
IBEFLG Short Integer See MODFLOW documentation
IYCFLG Short Integer See MODFLOW documentation
IOSTAR Short Integer See MODFLOW documentation
NOPT Short Integer See MODFLOW documentation
NFIT Long Integer See MODFLOW documentation
SOSR Double See MODFLOW documentation
RMAR Double See MODFLOW documentation
RMARM Double See MODFLOW documentation
IAP Short Integer See MODFLOW documentation
IPRCOV Short Integer See MODFLOW documentation
IPRINT Short Integer See MODFLOW documentation
LPRINT Short Integer See MODFLOW documentation
CSA Double See MODFLOW documentation
FCONV Double See MODFLOW documentation
LASTX Double See MODFLOW documentation

Output

Native MODFLOW output consists of four general types:

  1. Head and drawdown files. Binary files listing the computed head and drawdown values grouped by time step (indexed by stress period and time step number). The drawdown file represents the computed head minus the starting head.
  2. Flow budget files. Binary files listing the cell-by-cell flow terms grouped by time step. This includes three flow numbers for each cell representing flow in each of the axis directions. It also includes set of values for each stress type (RIV, DRN, WEL, etc.).
  3. Head and flow file (HFF). This is the binary file produced by MODFLOW for use with the MT3D family of contaminant transport codes. It includes both the head and flow data.
  4. Miscellaneous text output files. MODFLOW produces various text output files including the LST and GLOBAL files.
OutputFiles
Field Type Description
OBJECTID OID
FileType Text "Head", "Drawdown", "CCF" etc.
Description Text Optional longer helpful description
Format Text File format such as ASCII or binary. OutputFormat coded value domain
Compress Text Flag indicating if the file is compressed and, if so, what type of compression is used. "", "zip", "tar" etc. Only used if the file is stored in the File field as a blob
File Blob The file stored as a Blob, or null if the file is not stored in the geodatabase
Path Text Path to the file on disk, or ""
OutputTime
Field Type Description
OBJECTID OID
TimeID Long Integer Time ID
SPNum Long Integer Stress period number from output file - not SPID from StressPeriods table
TSNum Long Integer Time step number from output file
TotalTime Double Time from 0 to this time
PeriodTime Double Time from beginning of this stress period to this time
AbsoluteTime Date Date/Time of this time
OutputFlow
Field Type Description
OBJECTID OID
TimeID Long Integer Time ID from OutputTime table
IJK Long Integer IJK Index
FlowType Short Integer Flow type. OutputFlowType coded value domain
Flow Double Flow value
OutputHead
Field Type Description
OBJECTID OID
TimeID Long Integer Time ID from OutputTime table
IJK Long Integer IJK Index
Head Double Head value
OutputDrawdown
Field Type Description
OBJECTID OID
TimeID Long Integer Time ID from OutputTime table
IJK Long Integer IJK Index
Drawdown Double Drawdown value

The OutputHead, OutputDrawdown and OutputFlow tables are used to store the head, drawdown, and cell-to-cell flow output for each cell for each time step. The flow values come from the compact budget file, which also contains flow values for the stress packages.

Since the output for a single MODFLOW simulation can be quite large, it may not be practical or desirable to keep the OutputHead, OutputDrawdown and OutputFlow tables populated at all times. In such cases, a geo-processing tool could be used to parse through the files listed in the OutputFiles table to populate temporary tables for the head and flow solution. Alternatively, geo-processing tools for post-processing could be designed to read directly from the binary MODFLOW output files.

Coded Value Domains

FileType
Field type: Text
Code Name
GLOBAL GLOBAL
LIST LIST
DIS DIS
MULT MULT
ZONE ZONE
BAS6 BAS6
OC OC
BCF6 BCF6
LPF LPF
HFB6 HFB6
RCH RCH
RIV RIV
WEL WEL
DRN DRN
GHB GHB
EVT EVT
CHD CHD
SIP SIP
SOR SOR
PCG PCG
DE4 DE4
IBS IBS
LMG LMG
GAGE GAGE
ETS ETS
DRT DRT
FHB FHB
HYD HYD
RES RES
MNW MNW
DAF DAF
DAFG DAFG
STR STR
KDEP KDEP
LVDA LVDA
SUB SUB
LMT6 LMT6
OBS OBS
ADV2 ADV2
CHOB CHOB
DROB DROB
DTOB DTOB
GBOB GBOB
HOB HOB
RVOB RVOB
STOB STOB
SEN SEN
PES PES
DATA(BINARY) DATA(BINARY)
DATA DATA
DATAGLO(BINARY) DATAGLO(BINARY)
DATAGLO DATAGLO
TrueFalse
Field type: Short Integer
Code Name
0 False
1 True
TimeUnit
Field type: Short Integer
Code Name
0 undefined (0)
1 seconds (1)
2 minutes (2)
3 hours (3)
4 days (4)
5 years (5)
LengthUnit
Field type: Short Integer
Code Name
0 undefined (0)
1 feet (1)
2 meters (2)
3 centimeters (3)
Direction
Field type: Text
Code Name
R Row
C Column
SteadyState
Field type: Text
Code Name
SS SteadyState
TR Transient
OCVarsFileType
Field type: Short Integer
Code Name
1 11G10.3
2 9G13.6
3 15F7.1
4 15F7.2
5 15F7.3
6 15F7.4
7 20F5.0
8 20F5.1
9 20F5.2
10 20F5.3
11 20F5.4
12 10G11.4
13 10F6.0
14 10F6.1
15 10F6.2
16 10F6.3
17 10F6.4
18 10F6.5
19 5G12.5
20 6G11.4
21 7G9.2
BCFMean
Field type: Short Integer
Code Name
0 Harmonic mean (0)
1 Arithmetic mean (1)
2 Logarithmic mean (2)
3 Arith t X log(k) (3)
BCFLayerType
Field type: Short Integer
Code Name
0 Confined (0)
1 Unconfined (1)
2 Conf/Unconf (2)
3 Conf/Unconf (3)
LPFLayerType
Field type: Short Integer
Code Name
0 Confined (0)
1 Convertible (1)
LPFMean
Field type: Short Integer
Code Name
0 Harmonic mean (0)
1 Arithmetic mean (1)
2 Logarithmic mean (2)
3 Arith t X log(k) (3)
RechargeOption
Field type: Short Integer
Code Name
1 Top (1)
2 Specified (2)
3 Highest Active (3)
EvapotranspirationOption
Field type: Short Integer
Code Name
1 Top (1)
2 Specified (2)
MUTPCGType
Field type: Short Integer
Code Name
0 Print max head change and residual each iteration
1 Print total number of iterations
2 No printing
3 Print only if convergence fails
IOUTAMGType
Field type: Short Integer
Code Name
0 No printing
1 Scaling and residuals
2 Scaling, residuals, storage, time
3 Solver, scaling, residuals, storage, time
ISCType
Field type: Short Integer
Code Name
0 Rows, columns, layers
1 Rows, columns
2 Columns, layers
3 Rows, layers
4 No coarsening
IOUTGMGType
Field type: Short Integer
Code Name
0 Solver inputs
1 Linear solve
2 Convergence history
3 Linear solve terminal output
4 Convergence history terminal output
PARTYPE
Field type: Text
Code Name
HK HK
HANI HANI
VK VK
VANI VANI
SS SS
SY SY
VKCB VKCB
SYTP SYTP
HFB HFB
RIV RIV
RCH RCH
Q Q
DRN DRN
EVT EVT
GHB GHB
CHD CHD
STR STR
DRT DRT
ETS ETS
SFR SFR
Custom Custom
ParamSource
Field type: Short Integer
Code Name
0 Parval
1 Pilot Points
2 Clusters
STATFLAG
Field type: Short Integer
Code Name
0 Variance [L^2] (0)
1 Std. Dev. [L] (1)
2 Coeff. of variation [--] (2)
FLOBType
Field type: Text
Code Name
GBOB GBOB
DROB DROB
RVOB RVOB
CHOB CHOB
STOB STOB
DTOB DTOB
OutputFormat
Field type: Text
Code Name
ASCII ASCII
binary binary

May add others in future, like XML, HDF5 etc.

OutputFlowType
Field type: Short Integer
Code Name
0 Right
1 Front
2 Lower
3 Wells
4 Drains
5 Rivers
6 ET
7 General Heads
8 Recharge
9 Constant Heads
10 Streams
11 Storage
12 Lakes

Managing Multiple Model Runs

In a typical modeling project, dozens, if not hundreds or thousands of model runs are performed. Each run represents a different combination of model inputs and/or grid configuration. While not all of these runs need to be archived, it is useful to archive many of the model runs for future reference or so that one can revisit and update an earlier model run. With the MDM described in this document, model runs could be archived simply by copying the entire simulation feature dataset (including Cell2D, Node, and the MDM tables) for each model run. Each simulation feature data set could be stored in a separate geodatabase to simplify the duplication process.

While duplicating a geodatabase is a simple and effective strategy, it could result in massive storage requirements for large models. Two models runs could be identical except for a single record in a table and yet the entire geodatabase would be duplicated. Fortunately, ArcGIS provides a powerful tool for managing multiple model runs without wasteful duplication of data. This tool is called “versioning” and is described in the following documents:

http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=Understanding_versioning http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=What_is_ArcSDE%3F http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=An_overview_of_the_geodatabase_schema_in_SQL_Server

With a versioning strategy, a modeler would first set up a complete model and then turn on versioning and create a new “version”. This initiates the use of a pair of “adds” and “deletes” tables where changes to the database are recorded. In other words, any modifications made to the database by the user are recorded internally in the adds and deletes tables. However, the user continues to directly interact with and edit the database in a normal fashion. The layering of the adds and deletes tables is performed automatically and hidden from the user. Multiple versions can be created and the user can switch back and forth between versions using a simple interface. Versions can be deleted or merged with the original version as desired.

Other Model Types

It is anticipated that in the future the MDM will be expanded to include other models and utilities in the MODFLOW family including MODPATH, ZONEBUDGET, MT3DMS, RT3D, SEAM3D, PHT3D, SEAWAT, etc. Each of these models will share some data with MODFLOW but will require additional tables. As the new models are added to the MDM, the shared tables will be identified and names selected for the new tables that avoid confusion. Linkages will also be identified between models when appropriate.

Limitations

In order to model MODFLOW data in the form of a relational database some simplifications were required. Here is a brief summary of the main limitations and unsupported features of the current version of the MDM.

  • Only MODFLOW 2000 and 2005 supported (not MODFLOW-LGR etc).
  • Several packages aren't supported (STR, SFR2 etc.).
  • Some of the options in the Output Control package aren't supported.
  • The variance-covariance weight matrix option (WTQ array) is not supported for flow observations.
  • Lines 5-10 in the PES file are not supported and it is assumed that NPNG=0, IPR=0, and MPR=0.
  • LAK3 package (v2.0+) - Stages table does not include constituent data for use with MOC3D. i.e., CLAKE(1..NSOL). LAKRates does not include MOC3D solute concentrations.

Versions

  • 1.0 - The initial model as it was when MODFLOW Analyst became available in February, 2009
  • 2.0 - Include LAK3, STR1, SFR2, HUF2, MNW1 packages, and support for MODFLOW 2005.

See also