ZoneTable Plug-In for FEFLOW

Requirements | Installation | Data | Edit Window | Example | Support


The ZoneTable plug-in was developed to simplify the definition and update of the following material properties:

Two sets of information are interconnected by the plug-in: a table of material property values, the Zone Lookup Table, and a user data array of integer identifier (ID) values called ZoneTableID.

The ZoneTableID array is used to define the material zones across every element in the model. This array, which is specified by the user in a "User Data" array in the FEFLOW interface, is a set of unique integer identifiers (ID values). Using the ZoneTable plug-in, the user can quickly view, edit, and add multiple property values across the entire domain of a large, complex model. The plug-in does not override or disable any of FEFLOW's standard tools.

The standard FEFLOW interface has two approaches to assigning material (and other) properties, by name or group, to elements:

  1. A global tool that applies to the entire model domain. This approach is accessed via the Tools >> Global Settings >> Parameter Lookup Table. This table allows the user to apply names to specific types of parameters so that when assigning values to elements, the user simply remembers the name and FEFLOW assigns the correct value. However, the named parameters can be assigned to any location in the model, so there is no correspondence between a named parameter and the elements it is applied to, and the application of the value is only performed at the time the element values are edited.
  2. A parameter zone approach: These are created by right-clicking a material property like K_xx or Transmissivity and selecting Create Parameter Zone. A range of values is then assigned and an entry in the Spatial Units panel is created. The name of this newly created spatial unit can be modified. When this spatial unit is activated, FEFLOW selects all the elements with values that fall in the range. For example, if a K_xx parameter zone called Ksand is created with a range of 1 to 10, then set as the current selection, all elements that have K_xx values between 1 and 10 are selected. These parameter zones can overlap: there is no one-to-one correspondence between a named selection and the value the selection is assigned.
The ZoneTable plug-in takes a different approach to assigning material properties that has a number of advantages:

Using only zones does have two disadvantages:


The ZoneTable plug-in's minimum requirements are: The plug-in cannot be used with:


To Install the Software ...

The IFM plug-in can be installed anywhere on your computer system but there are two common locations. It is recommended the ZoneTable plug-in be installed in:

or in either

Add the Plug-In to the FEFLOW Interface

The plug-in is added to the FEFLOW interface via the Plug-ins panel (View >> Panels >> Plug-ins). The plug-in can be added either with or without a FEM file open. Next, press the green "+" button next to Available Plug-ins. Search for and select the ZoneTable_x64.dll (or 32-bit version). The Plug-ins panel will look something like:

Once added, the plug-in will be available to use in any FEFLOW model. However, to use the plug-in, it must be "attached" to a FEM file, as described in the next section.

Activate the Plug-In

To activate the plug-in, it must be attached to an open FEM file. On the Plug-ins panel, under Available Plug-ins, right click on Zone Table Plug-In, and select Attach. ZoneTable will then be listed under the Attached plug-ins portion of the panel. The plug-in is now active (attached) and ready to use.

Plug-in Data

The ZoneTable plug-in uses two types of data. One type is a User Data elemental distribution named ZoneTableID. The second data set is a table defining the zones properties.

The ZoneTableID Elemental Distribution

The ZoneTableID elemental distribution array can be created manually by the user, or be created using the ZoneTable plug-in window. The array will be located in the Data panel under User Data. If not using the plug-in to create the array, refer to FEFLOW's documentation.

This data array holds integer identifiers (ID's) to identify each zone of the Zone Lookup Table. Any ID for an element is valid, but only zones with ID's greater than zero will be operated on by the plug-in. Elements with zone ID's less than or equal to zero will use existing values of Kx, Ky, Kz, Ss, and Sy. These existing values must be defined by the user via FEFLOW's standard tools.


ZoneTable's Lookup Table

The lookup table contains the following information for each zone: These values may be edited in the ZoneTable plug-in window (see below), or they can be imported from or exported to an external comma-space-variable (CSV) file that can be edited using programs like Microsoft Excel or a text editor.

The plug-in will alter material-property values (Kx, Ky, Kz, Ss, and Sy) of any element if the corresponding value in the Zone Lookup Table is greater than zero (0) and if the zone ID is defined in the ZoneTableID array:

For example, if the user defines the distribution for Kx, Ky, and Kz using kriging (the values each set to -1.0 in the Zone Lookup Table) for a zone, the plug-in can be used to set values for Ss and Sy, if positive, non-zero values for these properties are defined in the lookup table for the zone.

ZoneTable's Edit Window

Editing of the plug-in's lookup table, other settings and functions are accessed from the FEFLOW Plug-ins panel. After attaching the ZoneTable plug-in, the edit window is accessed by right-clicking on Zone Table Plug-In and selecting Edit ... in the pop-up menu.

If the ZoneTableID array has not been defined, you will see the Initialize Zone Table tab displayed instead of the Zone Lookup Table tab.

Clicking Create ZoneTableID Array will create the ZoneTableID array. The plug-in will set all the elemental values to zero (0), which means the ID of every element in the model is initially undefined. No entries will be created in the Zone Lookup Table, nor will any existing entries be deleted (the table can be set up before the array is present). If ZoneTableID already exists, the Create ZoneTableID Array button is deactivated. An example table Zone Lookup Table is shown below.

Once the ZoneTableID array has been created, the plug-in will switch to the Zone Lookup Table tab. On this tab, the property values for each zone are defined with the ID in the first column, the name of the zone in the second column followed by material-property values for the zone. The ID is used to assign the specified values of material properties to elements having the same ID assigned in the user data array ZoneTableID.

The plug-in stores the Zone Lookup Table information in the FEM file and this information will be read by the plug-in when a FEM file is opened in the FEFLOW interface. However, if the plug-in is active, and if the user checked the box next to Read data from file when FEM loaded, the plug-in will read the lookup-table information from the specified external CSV file when the FEM file is opened, and the data from the external file will replace any lookup-table data that was stored in the FEM file. When the FEM file is saved, the information that was imported from the CSV file will be saved in the FEM. Use of an external CSV file instead of the data stored in the FEM is efficient when running FEFLOW from the command line, for example when performing parameter estimation, or handling large lookup tables.


On the Zone Lookup Table tab, there are several other features:

Using ZoneTable

When active, the plug-in modifies the Kx, Ky, Kz, Ss, and Sy values when:
  1. The FEM file is opened. Depending on what options you have set, this may be from ZoneTable data stored in the FEM file, or from a CSV file. This is so that if you are using the FEFLOW GUI interface, material properties are correctly updated in the model views.
  2. You click OK on the ZoneTable plug-in window. All open views will be updated automatically.
  3. The user starts the FEM model simulation. This ensures that any changes made to the ZoneTableID array will correctly update material properties, as defined in the Zone Lookup Table.
WARNING: The plug-in, if active, will overwrite any changes the user makes to the Kx, Ky, Kz, Ss, and Sy arrays that are made independently using the standard FEFLOW tools, for elements with positive zone ID and material property values. Even when using only FEFLOW's numerous standard tools to modify material properties, editing errors can arise in which one edit supersedes a previous edit (for example, when using overlapping element selections specified in Spatial Units). It is therefore the user's responsibility to avoid potential editing errors when using both the plug-in and FEFLOW's standard tools. For example, suppose you have set up your model using ZoneTable, and you have added a zone numbered 10 that specifies the value of K_xx to be 105 m/d, then you manually edit an element controlled by zone 10, and specify K_xx = 0.21 m/d. When you run the model (with the plug-in active), the plug-in will reset the K_xx of all elements in zone 10 to 105 m/d, over-riding any element K_xx values that you had just set to 0.21 m/d.

The plug-in will not alter any property values of elements that are either undefined in the ZoneTableID array (zero or negative zone ID's), or that have undefined values in the Zone Lookup Table (zero or negative property value).


A simple model was designed to test the ZoneTable plug-in and to provide a step-by-step example of how to use the plug-in. This example assumes that the user understands the use and terminology of FEFLOW version 6.2.

The three-dimensional, steady-state test model is 100 m by 100 m by 50 m with 20 layers of equal thickness (2.5 m per layer). It has a triangle-based prismatic mesh with 1024 elements per layer, and all elements have the same size and shape. The top 16 layers represent an unconfined aquifer with specified head nodes on the west side (slices 1-3) at which head is set to 50 m. Another set of specified head nodes is located along the east side (slices 3-5) at which head is set to 40 m. The unconfined aquifer is divided into two types of sand. Below the unconfined aquifer is a confining bed (two layers), and below that is a confined aquifer represented by two model layers. In the confined aquifer, specified head nodes are located along the west side (slices 19-21) at which head is set to 75 m.

This example illustrates the process of adding zones and creating a zone table for an existing model.

  1. Open example\femdata\ZoneTableID.noZones.fem. This file should be located in the directory with the ZoneTable plug-in files.
  2. Open the Plug-ins panel (if not already active, go to View >> Panels >>Plug-ins).
  3. If ZoneTable is not in the Available plug-ins list, add it according to the Installation section.
  4. Right click on Zone Table Plug-In and select Attach. The model will now use the ZoneTable plug-in. Note: The check box next to the plug-in name allows you to deactivate the plug-in without actually detaching it.
  5. In the Attached plug-ins section of the panel, right click on Zone Table Plug-In and select Edit .... This will bring up the ZoneTable Edit window:

  6. Click Create ZoneTableID Array, then OK to close the Edit window. This creates and populates the User Data array ZoneTableID with a default zone ID of zero (0).
  7. Click on the Data panel (or its tab if docked) and scroll down to the User Data section. You will see the ZoneTableID elemental array. This is the array of integers that links each element of the model with zones in the Zone Lookup Table.

  8. If not visible, open and select a 3D View (Window >> New >> 3D View, or Window >> Activate >> then select a 3D view). Note: Although this example uses 3D views to work with the plug-in, 2D Slice views can also be used to edit plug-in ID's and Cross-Section views can be used to view zone ID's.
  9. Double click on ZoneTableID to select it for viewing and editing. All elements have been pre-populated with a zone ID of 1.

  10. Go to the Spatial Units panel (View >> Panels >> Spatial Units). You should find four element selections made for the purpose of this example (the plug-in does not create or modify Spatial Units). These are located below the Domain section of the panel:

  11. Double click Leaky Confining Layer to select the elements in this user-defined spatial unit to show the location of the confining layer.

  12. Set the zone ID for these layer element values to one (1) using the Editor toolbar (View >> Toolbars >> Editor).

  13. Double click Confined Sandstone and set the elements values to 11 (zone ID's do not have to be numbered consecutively).

  14. Double click Dune Sands and set the elements values to 21.

  15. Double click Beach Sands and set the elements values to 22. The two types of unconfined sand, which have similar properties, are assigned similar zone ID's as a convenient way of associating the two in a group.

  16. Deselect all elements. At this point, every element has been assigned a set of zone ID's that will be used in the example. It may be a good time to adjust the color palette for the ID's so all zones are easily differentiated, but this is left as an optional exercise for the user. The Zone ID distribution should look like:

  17. Open the plug-in's Edit window. The Zone Lookup Table tab will be displayed with the default zone (ID of 1). Click Add All ID's. There should be an entry for Zone ID's 1, 11, 21, and 22.

  18. The value of each property for each zone could be typed in by hand, but we will import the data from a CSV file instead. Click Select and Load, and select the file example\import+export\ZoneTable.example.csv.
  19. At this point, all the necessary material properties have been defined and the model is ready to run. Note that negative Ss and Sy values have been specified because this is a steady-state model. The Zone Lookup Table should look like:

  20. Click OK to close the window and apply the changes to the model. Note that although ZoneTableID is the actively edited parameter in the FEFLOW interface, the plug-in has modified the values of Kx, Ky, and Kz according to the specifications the plug-in's Zone Lookup Table and ZoneTableID
  21. Before running the model, we will check a few things. First, confirm the 3D view is selected. Next, in the Spatial Units panel, scroll to the top and click Domain to set the spatial unit to the whole domain instead of the last selected spatial unit, so that in the next in the step, the K_xx of the entire domain will be displayed.
  22. In the Data panel, select and double click the K_xx array, which is under Material Properties >> Conductivity >> K_xx. This adds K_xx to the active view and selects it for editing. The K_xx array is displayed, and values in the legend should vary from 0.001 m/d to 100 m/d:

  23. Run the model. Depending on how the View Components panel is set up, the results will look something like:

  24. There is an additional file included with the example that provides the final resulting FEM: \example\femdata\ZoneTableID.withZones.fem


For technical support contact
AquaGeo, Ltd. | Conifer, Colorado