User Guide

The in-depth guide on how to use Anaqsim

Introduction

Anaqsim is an analytic element software for simulating groundwater flow.  It uses subdomains as described in Fitts (2010), which gives it strong capabilities with respect to heterogeneity and anisotropy.  It also employs high-order line elements, spatially-variable area sinks, and finite-difference time steps to allow multi-level aquifer systems and wide-ranging transient flow simulations.  Anaqsim is a product of Practical Groundwater and was developed by Dr Charlie Fitts.  It is coded in C#. 

Anaqsim Versions

There are two versions of Anaqsim: 'Student' and 'Licensed'.  The installed software is the same for both, but the capabilities of the software vary depending on whether the software is Licensed or not.   

By default the download provides you with an un-licensed version that will not solve any models. 

The student version is not for commercial use, and incorporates a watermark.  It can be used to run all of the tutorial models on the website.

The student version allows modeling of a wide array of situations, both steady and transient.  When solving, its limits are as follows:

Activating a commercial license (either the free trial, monthly or annual subscriptions) allows you to solve larger, more complex models with these capabilities:

Anaqsim is licensed through either a monthly or annual recurring subscription that can be cancelled at any time.  Please refer to licensing section for further details, and see www.anaqsim.com for license and pricing details. 

It is possible to plot and analyse results from a model that has been solved on a licensed version of Anaqsim on an unlicensed version.  See installation-manual for further details.

System Requirements

Installing Anaqsim

Please see the Installation documentation for details on how to install Anaqsim, and how to activate and de-activate licenses. Anaqsim licenses can be purchased as either a monthly or annually recurring subscription via the website.

Release Version and History

The current Anaqsim release number and a history of Anaqsim releases, including lists of changes from one release to another, are posted on the Anaqsim website.   The release numbering scheme gives the year followed by the release number in that year.  New releases are posted to the website and may be downloaded, installed, and run by anyone with a valid license.  See the next topic about how to update to a newer release.

You can see the release number of your installed Anaqsim by selecting About Anaqsim on the main menu.

Updating to a Newer Release

As long as you are within the term of your Anaqsim license, you may upgrade Anaqsim to the current release.  To update, first check that there is a newer release available from www.anaqsim.com/version-history.  If there is and you want to update:

  1. Download the newer release installation file from the www.anaqsim.com/version-history to your computer,
  2. Uninstall the older release from your computer using the Windows Control Panel -> Add/Remove Programs dialog,
  3. Install the newer release as described in the Installing Anaqsim section.

Updating will not affect your license, as the Anaqsim license file is not removed by the uninstall operation.

Help and Documentation

Help is available in many forms: this User Guide, tutorials, and example models available at the website.

The Anaqsim User Guide can be accessed by selecting Help from the main menu in Anaqsim. 

Three tutorials that walk the user through construction of Anaqsim models of increasing complexity are available on www.anaqsim.com.  A quick way to get familiar with Anaqsim is to work through these tutorials in sequence, building your own Anaqsim models like the ones shown in the tutorials.  The tutorials lead you through creating these models step-by-step.  The tutorials are pdf files with outlines at the first page that contain clickable links, so you can easily jump forward and backward to review, if needed.  The completed tutorial models are included in the Documentation directory of the Anaqsim software installation:

All three tutorials may be done with either the student or licensed Anaqsim.

Contact and Support

Support is available for licensed Anaqsim users to make sure that Anaqsim is functioning properly on their computer.  Please first check the Anaqsim User Guide (Help) and the tutorials on the website to see if your question may be answered there.

The contact information for support is support @anaqsim.com

Anaqsim Modeling Concepts

This section does not repeat details that are published elsewhere in books and articles, but instead gives a quick outline of the techniques used in Anaqsim and cites the appropriate references for those interested in the details.

Anaqsim employs the analytic element method (AEM), which superposes analytic solutions to yield a composite solution consisting of equations for head and discharge as functions of location and time.  The AEM is described in detail in books by Strack (1989) and Haitjema (1995).  Shorter summaries of the method may be found in Fitts (2023) and Strack (2003).  The AEM is fundamentally different than numerical methods like finite elements and finite differences, where the domain is broken into small blocks or elements and simple head distributions (e.g. linear) are assumed within these blocks or elements.  In the AEM, boundaries of the domain are discretized, but the domain itself is not.

Anaqsim uses a variation of the AEM that divides the modeled region into subdomains, each with its own definition of aquifer parameters and its own separate AEM model (Fitts, 2010).  The model for a given subdomain (called a domain in Anaqsim) includes contributions from elements inside and on the external boundary of the subdomain; elements beyond the subdomain do not contribute.  Each subdomain model is written in terms of two-dimensional functions, but three-dimensional flow may be simulated using multiple levels in a model.  In multi-level models, the resistance to vertical flow is accounted for in the vertical leakage between levels.

This subdomain approach allows for a high degree of flexibility with respect to a model's heterogeneity, anisotropy, and layering.  For example, it is possible for a subdomain that is anisotropic to be adjacent to another subdomain that is isotropic or anisotropic with a different direction and ratio.  The subdomain approach allows mixed layering schemes.  For example, an area with multiple levels (subdomains stacked vertically and leaking vertically to each other) can abut an area with subdomains in just a single level.  This allows the model to focus layering and computational effort in the area of interest, with a simpler single-level model for distant areas.

Another key aspect of Anaqsim is that it allows complete transient simulation capabilities by using finite difference time steps as suggested by Haitjema and Strack (1985).  The transient term in the flow equations is handled in essentially the same manner as it is in finite difference programs like MODFLOW.

Subdomains and Model Levels

Anaqsim uses one separate two-dimensional model for each subdomain. In Anaqsim, subdomain input is entered in the Model Input / Domains data tables (Domain in Anaqsim's menu system is short for subdomain).  In each subdomain model, the resistance to vertical flow is neglected and the head is independent of elevation within the subdomain (Dupuit assumption).  Resistance to vertical flow and three-dimensional flow are modeled by using multiple levels with vertical leakage between levels.  To illustrate how subdomains and model levels are implemented in Anaqsim, we will go through several examples, starting from simple and working toward complex.

The simplest model would be one level (two-dimensional), and only one subdomain (homogeneous).  A plan view of such a simple model is shown below.

SimpleDomains.png

The properties of the subdomain (hydraulic conductivity, porosity, elevations, etc) are defined in the Model Input / Domains menu.  The spatial extent of the subdomain (blue) is defined by the line boundaries that are listed as being on the external perimeter of the subdomain.  This is different from TWODAN or other analytic element programs where one domain is the infinite "background" domain, and a heterogeneity (domain) lies inside a polygon dedicated to defining the heterogeneity boundary.  The scheme in Anaqsim allows different kinds of boundaries to define the limits of a domain, which is much more flexible.  In the simple model shown above, there are two line boundaries that form the external boundary of the domain: one that is head-specified (red) and one that is normal-flux specified (black). 

The algorithm that determines what points lie inside the domain works as follows:  a point is inside the subdomain if going in the positive x direction (right) from the point, you cross a boundary of the domain an odd number of times.  For most points inside the domain, there is only one boundary crossing in the positive x direction (like "a" above), but it is possible to have three or more crossings (like "b" above).

In general, subdomain boundaries should combine to form a perfectly closed polygon, with exactly matching points where the line boundary end/start points meet.  If the line boundaries defining the boundary of the domain have a gap, it can lead to erroneous definitions of domain areas and odd model results.  The boundary gap in the example below allows a strip to the left of the gap (white) that is technically not inside that domain (blue); points in this strip have zero boundary crossings to the right.  A similar result happens if there is overlap in the location of two end/start points; where they overlap, the algorithm sees two crossings in the positive x direction.

GapSimpleDomains2.png

Now consider a model that is still one level (two-dimensional), but is heterogeneous with three subdomains, blue, yellow, and green (below).  This example has three types of line boundaries which are labeled: head-specified (hs), normal flux-specified (nfs), and inter-domain (id).  Each different line boundary is shown in a different color and is labeled hs, nfs, or id.  At all the common intersections where two or more line boundaries meet, the coordinates of the end points must match exactly, so that each subdomain region is defined without gaps or errors.

ThreeDomains.png

Along inter-domain boundaries, you specify which domain lies to the left and which domain lies to the right.  For example, if the coordinates of the inter-domain boundary between blue and yellow are listed in order from bottom to top, blue is to the left and yellow is to the right.  If the coordinates of the boundary between yellow and green is defined in clockwise order, yellow is to the left and green is to the right.

Now imagine that the model shown above is a single level in the blue and yellow areas (two-dimensional), but has four levels in the green area (three-dimensional).  A vertical  cross section along A-A' for such a model is shown below.

ThreeDomainsSection.png

The convention for naming levels in Anaqsim is to start at level 1 at the top and increase the level numbers with depth in a multi-level stack.  In the green area, level 1 is at the top and level 4 is at the bottom.  Anaqsim assumes that there is vertical leakage between subdomains that exist in the same area but at different vertical levels.  It is possible to skip a level number in a stack of subdomains; for example, the green area in the above section could have domains with levels 2,3,5 and 6 rather than levels 1,2,3 and 4.  Anaqsim finds the next domains above and below, no matter what the level numbers are and even if there are gaps in level numbers.  This is helpful in cases with complex layering schemes such as where a domain has limited extent compared to the domains above and/or below it.  The resistance to vertical flow between levels is computed based on the vertical hydraulic conductivities and thicknesses specified for the domains involved.

The brown inter-domain boundary separating the blue and yellow subdomains would have one subdomain on the left (blue) and one on the right (yellow).  The green inter-domain boundary separating the yellow and green subdomains would have one subdomain on the left (yellow) and four on the right (shades of green), assuming that boundary is defined with coordinates in clockwise order.  Across inter-domain boundaries, there is approximate continuity of head and approximate continuity of the normal component of discharge.  This approximation is discussed more in the Line Boundary Conditions section.  Interdomain boundaries can connect subdomains in different levels (e.g. level 1 on one side and levels 2 and 3 on the other).

Left / Right with Respect to Line Boundaries

With interdomain line boundaries and with normal flux-specified line boundaries, it is important to specify boundaries to the left and/or to the right of the line boundary.  To explain what this means, refer to the following figure.

ThreeDomains.png

Assume that north is up and south is down in this map-view plot of an Anaqsim model.  The different colored areas represent different subdomains, which are bounded by various line boundaries.  Consider the red interdomain line boundary (id) that separates the blue and yellow subdomains.  If the coordinates for this line boundary are in order from south to north, then the blue subdomain would be to the left and the yellow subdomain would be to the right.  Think of it as though you were walking along the line boundary from the first vertex towards the last vertex in the coordinates.  The "left" side is to your left as you walk along the boundary and the "right" side is to the right.  Alternatively, if the coordinates of this interdomain boundary are listed in order from north to south, then the yellow domain is to the left and the blue domain is to the right.

Now consider the green interdomain boundary separating the green and yellow subdomains.  If the coordinates of that boundary are specified in clockwise order, the yellow domain is to the left and the green domain is to the right.  Alternatively, if the coordinates of that boundary are specified in counter-clockwise order, the green domain is to the left and the yellow domain is to the right.

When a normal flux-specified boundary is external or with a head-dependent normal flux boundary, the vertex coordinates must be specified in counter-clockwise order, with the domain to the left of the boundary as you proceed along it.   Consider the purple normal flux-specified boundary (nfs) in the figure.  It's coordinates must be specified in counter-clockwise order (west to east) with the yellow domain to the left.  Likewise, for the blue normal flux-specified boundary, the coordinates must be specified counter-clockwise from southeast to northwest, keeping the yellow domain to the left.  The normal flux is positive for flow across the boundary from left to right as you proceed from the start toward the end (flow out of subdomain).  Normal flux is negative for flow from right to left as you proceed from the start toward the end (flow into subdomain).  

Recharge, Leakage and Transient Storage

Like in any flow model, the flow equation in Anaqsim is based on Darcy's Law and conservation of mass (and volume, with constant density).  The conservation equation, in its simplest is:

where ∇Q is the divergence of the two-dimensional aquifer discharge vector field and  γ is the net extraction per area (sink term, units of L/T).   The sink term γ may have contributions from leakage out the top of the subdomain (Lt),  leakage out the bottom of the subdomain  (Lb), and  transient discharge/area into storage(S ∂h/∂t) .  See equations 4-6 of Fitts (2010).

The vertical leakages Lt and Lb are specific discharges proportional to the head difference between the domain and the head above or below (could be specified head or another domain at a different level), and proportional to the equivalent vertical hydraulic conductivity Ke that is based on the vertical conductivities and the saturated thicknesses at the average heads specified for the domains involved.  If there is leakage between two domains at different levels, the equation used for computing Ke is

where b1 and b2 are the average saturated thicknesses of the two layers and K1 and K2 are the vertical hydraulic conductivities of the two layers.  In Anaqsim, Ke is assumed to be constant and independent of head and actual saturated thickness.
Under restricted circumstances (uniform recharge, steady flow, and a single-level model), γ is constant and independent of location.  In such cases, the uniform γ distribution may be modeled exactly using a uniform area sink.

In many practical cases, the model needs spatially-variable extraction (γ varies with x, y) due to spatially-variable vertical leakage and/or spatially-variable storage changes.  When that is the case, the model needs spatially-variable area sinks to approximate the proper distribution of γ.  The spatially-variable area sink functions in Anaqsim create a smooth, continuous, irregular γ surface within a subdomain.  The model is using equation 13 of Fitts (2010) as a model of the distribution of γ, with γ equal to the perfect extraction/area (computed by equation 6 of Fitts (2010)) at each basis point, but approximating equation 6 of Fitts (2010) between basis points.  The modeled distribution of γ satisfies the flow equation perfectly at basis points and approximates the flow equation between basis points.  This approximation is more accurate if the basis point spacing is smaller.

To check the accuracy of this approximation, Anaqsim provides an analysis tool (Analysis Menu / Conditions Along a Line).  If checks with this tool reveal a poor approximation, the basis point spacing is too large.  If the approximation is fine, you may be able to decrease the basis point spacing and save some computation.

Spatially-variable area sinks can rack up a large number of equations and computational burden on the system, so use them sparingly.  Where possible (often the far-field), use a single level in the model, which if it is steady means you can use the very efficient uniform area sinks instead of spatially-variable area sinks.  Use the special well basis point spacings around wells to gain accuracy with minimal computation.

Elements

The analytic elements used in Anaqsim include the elements described in the following references:

Wells

There are three possible kinds of pumping wells in Anaqsim:

  1. Discharge-specified wells in just one subdomain.  With this type of well, you specify the known discharge of the well.
  2. Discharge-specified wells spanning multiple subdomains.  This is for wells that are screened across multiple levels and subdomains in a multi-level part of a model.  For example, a well could be screened across the two lowest levels in a 4-level part of a model.  You specify the known discharge of the well, and Anaqsim imposes these conditions:  a) the heads at the well radii in each screened subdomain are identical, and b) the total discharge of the well elements in the screened subdomains equals the specified discharge of the well.
  3. Head-specified wells in just one subdomain.  With this type of well, you specify the known head at the well radius.  Anaqsim determines the discharge needed to meet this condition.

Interdomain Line Boundary Conditions

At the inter-domain boundaries, two different boundary conditions are enforced by Anaqsim.  First, heads are matched across the boundary at specific points in all subdomains that intersect the boundary.  For example with the green inter-domain boundary shown in the figures below, heads are matched in the yellow domain and the four green domains at control points along the boundary.

ThreeDomains.png

Plan view (above) and section view (below) of a multi-domain model.

ThreeDomainsSection.png

Secondly the normal component of discharge is matched across line segments on the inter-domain boundary. For the green inter-domain boundary, this means that the sum of the normal components of discharge in the four green subdomains must equal the normal component of discharge in the yellow subdomain.  This condition is enforced across intervals on a line segment.  If each line segment on the inter-domain boundary has n parameters, then the condition is enforced across n intervals per line segment.

A good way to check that you have enough parameters specified on any line boundary condition is to use right-click/ Check Line Boundary Conditions, which creates a plot of the boundary condition accuracy along a line segment of the line boundary.  If you don't have satisfactory accuracy, you can either (1) go under Line Boundaries and specify more parameters (control points) per boundary line segment, and/or (2) break a long boundary line segment into multiple, shorter segments.

One consequence of the head-matching condition is that there will be no vertical hydraulic gradient between different levels on the multi-level side of an inter-domain boundary.  This is consistent with the fact that there is no vertical resistance to flow accounted for on the single-level side of an inter-domain boundary.  Because of this, it is not appropriate to use one inter-domain boundary with multiple levels on both sides of the boundary; doing so would remove vertical head gradients at the boundary, which defeats the purpose of having multiple levels.  

With inter-domain boundaries, there should generally be just one domain (level) on one of the two sides of the boundary.  Anaqsim checks the input and gives a warning if there are two or more levels on both sides of an inter-domain boundary.  To explain why, consider the case illustrated below, with two levels on the yellow side of the inter-domain boundary(s) and four on the green side.  If there was just one inter-domain boundary there, it would be as though an infinitely conductive thin vertical boundary were inserted  between the yellow side and the green side, and heads would match in all six domains that meet there, meaning there can be no vertical head gradient on either side of the boundary.  The total normal component of discharge would match (total normal discharge in the two yellow domains would match the total normal discharge of the four green domains), but that normal discharge may be distributed oddly between different levels (e.g. a lot of flow from the lower yellow level going into the uppermost green level).  A better solution would be to use two inter-domain boundaries:

  1. one with the lower yellow domain on one side and the two lowest green domains on the other, and
  2. one with the upper yellow domain on one side and the upper one or two green domains on the other.  

This way, there can be vertical gradients between the yellow/green interface, and upper-level flows are matched with each other and lower-level flows are matched with each other.

FourTwoDomainsSection.png

Pathline Tracing

Pathlines are traced in the horizontal plane using the aquifer discharge vector function in the domain and a numerical tracing procedure outlined in section 26 of (Strack, 1989).  Three-dimensional pathline tracing is done using a finite-difference form of equation 24 in the paper by Strack (1984), which uses three-dimensional flow continuity to approximate the vertical component of pathlines.  For transient models, pathlines are traced through a transient flow field that evolves through the duration of the transient simulation (this is new in release 2016-2; earlier releases traced pathlines through the flow field of the last time step in a transient model).  From release 2016-2 on, pathlines in transient models start at the specified start time, and can be traced backward to the beginning of the simulation or forward until the end of the simulation.  In steady models, pathlines are traced forward or backward until they either exit the model or until the specified total time is reached.

Where pathlines cross inter-domain boundaries, the elevation of the pathline is adjusted so that the fraction of the normal component (perpendicular to the boundary segment) of flow above and below the pathline on each side of the inter-domain boundary match.  For example, say you have an inter-domain boundary with one domain on the left and three on the right.  If the pathline comes to the boundary from the left with 45% of the normal component of discharge above the pathline and 55% below it, the domain and elevation of the pathline side will be determined so that this 45/55 ratio is preserved on the right side as well.  There is typically a jump in the elevation of the pathline as it crosses an inter-domain boundary for the following reasons:

When the normal discharge components across an inter-domain boundary are in different directions in different levels (usually where flow is nearly stagnant) this algorithm breaks down, and under such conditions pathlines may terminate at the inter-domain boundary.

When pathlines intersect an internal line-sink boundary such as a river boundary, there are two possibilities: 1) the pathline could be consumed by the linesink and terminate, or 2) the pathline could continue on underneath the linesink.  Whether option 1 or 2 occurs is determined based on the elevation of the pathline as it approaches the linesink, the discharge/length of the linesink at the intersection, and the normal component of the domain discharge at the intersection.  It is assumed that the linesink is at the top of the domain and draws its water from the upper portion of the domain discharge.  If the result is case 2 with the pathline continuing under the linesink, its elevation will generally jump as it crosses under the linesink, gaining elevation if the linesink is extracting water and losing elevation if the linesink is injecting water.

In multi-level areas of models, pathlines can cross from one level to another vertically.
Where pathlines exit the bottom or top of the model due to recharge or leakage (e.g. at the water table for pathlines traced upstream), Anaqsim draws a circle at the end of the pathline and if you move the cursor over the circle, it will display elapsed time, domain, elevation, etc.

User Interface

User Interface

Overview

The user interface consists of one main menu plus three different tabs:

More information about each of these tabs is given in the following pages.  Change from one tab to another by clicking on the tab at the left.  The current active tab is highlighted in blue.  In the following image, the Plot tab is selected.

PlotTab.PNG

User Interface

Plot Tab

The Plot tab shows the model inputs and results plotted in map view.  This view is automatically shown after opening an existing model, and after making a plot under the Make Plot menu.  Most of the Plot view is a map view of the model that can display a basemap, model elements, simulated heads, flow vectors, pathlines, etc.  The plot area has scroll bars that allow you to shift the view left/right and up/down while retaining the same scale.   The scroll wheel on most mouse devices will cause the view to zoom in and out.  Pressing down on the scroll wheel and moving the mouse will allow you to pan the view with most mouse devices.

PlotTab.PNG

On the upper left is a separate plot view menu (Plot File, View Manager,...Zoom Previous) that applies just to the plot.  Choices in this menu allow you to zoom to a different view, save or print the plot, digitize and edit coordinates, or add annotations to the plot.  See the tutorial videos at the website to see the various functions in the plot view menu explained and demonstrated.  Right-clicking your mouse over the plot brings up a context menu with many choices for digitizing, editing line boundaries, and generating outputs related to the cursor location.

Context Menu (right click over plot)

When the cursor is over the plot, you may bring up a context menu by clicking your right mouse button.  This menu allows the following options, which are handy short cuts while building, editing, and analyzing a model:

Data at Cursor Location

To the left of the plot and below the plot menu is an area that displays the coordinates of the cursor, model information and model results (X,Y Coordinates, Model Level,  Domain Name, Head,...) at the location of the cursor.  As you move the cursor, this data updates based on the cursor location.  

Each item may be hidden or visible; to toggle this, click on the triangle to the left of the label.  If the window is not tall enough to display all items, use the scrollbar immediately to the right of this area.  

In transient models, the values reflect the time step of the selected period, which ends at the time listed.  Head and interface values are at the end of the time step at the time listed.  Discharge-related values apply over the duration of the time step listed.

The model results shown are described below.

User Interface

Data Tab

The data tab allows you to edit model inputs, plot inputs, and analysis inputs with a data grid component that displays data from the underlying data tables.  To display and edit a table, make a selection under the Model Input, Plot Input, or Analysis Input menus.

DataTab.PNG

There is a context menu that pops up when you right-click over the grid.  Options in this menu include

Using the Data Grid

A data table is displayed in the grid when you select an item under the Model Input, Plot Input, or Analysis Input menus.  The displayed data is linked to one of several database tables, and when you edit the displayed data, the underlying data table is updated.

The table of data is displayed with headers that define each column, such as Label, Domain, Parameters_per_line, ... as shown below.  

DataTabNewRowNotRegistered.PNG

You can move from cell to cell with the arrow keys or using the mouse.  The current row is highlighted blue. You can enter new values by navigating to a cell and typing a new entry, or you can double-click on a cell to edit cell contents with a text editor, as shown below, where the contents of the cell with "101" is being edited.

DataTabEditCell.PNG

When you enter a value in a grid cell, the underlying database is updated when you press enter or move to a different cell.  At this point the cell value is checked to make sure it is compatible (e.g. a positive real number for hydraulic conductivity).  If the value is incompatible, an error message is displayed and you must correct the cell entry.  Be sure to remember to press enter or move to another cell after editing the value in a cell, otherwise the value will not be changed in the database.

New rows are created by editing the blank row at the bottom of the table.  A new row of data is entered into the underlying data table only when you press enter after editing the row, at which point a new blank line appears below the line just entered.  The following two screen shots shows a new 2nd row before it has been entered in the database (no blank row shows below it), and after (blank row below 2nd row).

DataTabNewRowNotRegistered.PNG

DataTabNewRowRegistered.PNG

In data tables that contain multiple rows, the leftmost field is often called Label, and it is always displayed even if you scroll far to the right.   No entry is required in this field, and it accepts any text.  It is wise to fill in a text label in this field (e.g. “PW-103” for a pumping well).  The label will help you know which feature this row represents, and many analysis outputs make use of this label.  Also you can sort the data based on entries in this column to easily find the row you want.  The contents of the table can be sorted by clicking on the column header.  Clicking a second time reverses the sort order.  It is a good idea to choose labels that easily allow you to sort features.  For example, if you want to easily find a group of wells on property A, you could give them labels such as "A_MW102", "A_MW105", "A_MW113"... so they would be grouped together after sorting by the label column.

Column widths are automatically adjusted to fit the contents.  You can increase or shrink column widths by dragging the left or right the vertical line that separates columns in the header (top) row.  Double-clicking on this vertical line automatically resizes the column width to fit the contents.

Some columns, like the Parameters_per_line column in the table shown above, are edited using a drop-down list of choices.  To see the list, double-click the cell, then select the item you want.

Other columns, like the Coordinates column, contain buttons to edit or select data; these are edited by clicking on the button.

Number Formats

All data grid cells that expect numerical input have common format constraints.  You can input real numbers with formats such as the following:

The last one is scientific notation for 1.4x10-2.

You should not insert commas to mark thousands, millions, (e.g. 1,200,000) as the comma may be interpreted as a decimal mark.  In North America, the convention is to use a period for the decimal marker.  In Europe, the comma is often used as a decimal marker. There is a Windows operating system setting to switch between these modes.  Often, European users need to adjust these settings to use Anaqsim.

Editing Coordinates

In many of the data input tables, there are columns and cells that display an "Edit" button in the Coordinates column.  When you click the button, a text box window pops up and you enter coordinate data there:

CoordinatesWindow.PNG

Often, you will digitize the coordinates in the plot tab and then paste the coordinates into this text box window.  Alternately, you can just type coordinates in.  The OK button records the edited coordinates and the Cancel button does not.

Once input, coordinates can be edited graphically by selecting the line boundary and then moving the vertexes or inserting or deleting vertexes.

Deleting Data Rows

Delete one or more rows of data in the data table by selecting rows and then pressing the Delete key.   Row(s) are selected by clicking (and dragging for multiple rows) in the leftmost column of the grid.  A dialog will ask you if you really want to delete those records from the data table. 

Importing and Exporting Data

To import data from Excel into a data table, highlight a block of data in an Excel sheet that corresponds to row(s) of data in a data table, copy that block in Excel, then right-click over the data grid and select Paste New Rows.  This will add these copied rows to the data table.  Make sure that the columns in the copied block match the columns in the data table.  Data in Coordinates columns cannot be be pasted in due to their multi-line structure, but all other columns can be pasted in.  In the case of a Coordinates column, a paste operation leaves that blank and you must enter the coordinates by clicking on the Edit button in that column.

To export rows of data to Excel or a text file, select rows of data (see section above) and then right-click over the data grid and select Copy Selected Rows.  After doing this the rows of data are in the computer’s clipboard as tab-delimited data, which can then be pasted into Excel or into text files.

User Interface

Log Tab

The Log tab holds the run log, which is an area that displays text output from the program.  The run log continues to accrue more text as you execute various tasks such as updating license information, opening a file, solving the system of equations, checking boundary conditions, checking calibration results, or closing a file.  If the text in the run log gets long enough, a scroll bar will appear to let you scroll through the entire log, as shown below.  You can select all or a portion of the text in the run log and cut, copy, and paste this text. This is an easy way to move text results to another document.

LogTab.PNG

User Interface

Menu Keyboard Shortcuts

You can access common menu items with keyboard shortcuts by pressing the key sequences as listed below.   Many are standard Windows shortcuts. 

Ctrl-O File/Open
Ctrl-S File/Save
F12 File/SaveAs
Ctrl-W File/Close
Alt-FE File/Exit
Alt-S Solve
Alt-PA Make Plot/All Selected Features
Alt-PE Make Plot/Elements Only
Alt-V Switch View
Alt-H Help


General Modelling Sequence

Creating a model follows this general sequence:

  1. You can start a new model either right after starting the program or after selecting File/Close which closes the current input and begins a new input data set.  Once either of these steps is taken, you may edit data tables under the Model Input, Plot Input, or Analysis Input menus.
  2. Create model input using the Model Input menu.  Make sure to define Domains before adding Well, Line Boundary, or Area Source/Sink elements.  This sequence is necessary because the input for the elements includes specification of the domain(s) they are in.  When adding elements, it helps a lot to use a basemap and digitize coordinates on top of the basemap.
  3. Define what you want displayed in plots with the Plot Input menu.
  4. Define what analysis features you want with the Analysis Input menu.
  5. Save your model frequently as you build your input.
  6. When the model input is complete, select  Solve to solve the system of equations.  This is required after making any model input changes and before making output plots or using the Analysis menu.
  7. View plots of the model results with Make Plot.
  8. Examine model results with the Analysis menu.
  9. Loop back through steps 2-8 to revise the model, re-solving the system after revision and before examining results.

Menus

Menus

File Menu

This menu allows you to open and save input files and create files that are used for creating initial head conditions for transient models.

Open

This selection opens a dialog that allows you to find and open existing input files (.anaq extension).  These files store the data you edit under the Model Input, Plot Input, or Analysis Input menus in XML file format.  XML is a common ASCII database file format.  You could edit these directly with a text or XML editor, but that is not recommended since it risks corrupting input with improper values or format.  When you open a file, the layout of elements in the model is drawn to the plot view.

If you want to be able to open .anaq files by double-clicking on them in Windows Explorer, in addition to opening them from the File/Open menu, the Windows operating system must associate .anaq files with Anaqsim.  In case this association was not established during installation you can manually do it with Windows Explorer.  To do this, locate a .anaq file in Windows Explorer.  Right click on the file and then select Open with, then select Chose default program.  In the dialog that pops up, check the box next to Always use the selected program to open this kind of file and then select the Browse button and browse to find the Anaqsim.exe file in the Program Files / Fitts Geosolutions / Anaqsim software directory.  Now Windows will associate .anaq files with Anaqsim.exe, and you can open any .anaq file directly from Windows Explorer by double-clicking on it.

Save, Save As

The Save As option brings up a dialog that allows you to save your input to a file with a new name.  Using Save saves the input to the same file name.  If you have yet to save input and have no filename, it will function like Save As.  When you save, you save the input data tables to an XML format database file with the .anaq extension.

Close

This closes the input you are working on and clears all the associated data tables in memory.  After selecting Close, you may begin editing a new model.

Save locations for Initial Transient Heads

A transient model needs initial heads so it can compute the head change that occurs during the first time step.  These values are needed at the location of each basis point in each spatially-variable area sink, which account for storage fluxes.  The initial head values come from a pre-existing model, which could be steady or transient.  Initial heads are also retrieved for discharge-specified wells, hydrograph points, and transient line conditions (see Analysis Input Menu for the last two items).  

The initial conditions model must have the same number and extent of layers as the transient model, at least in areas with basis points, wells, hydrograph points, or transient line condition lines.  When the initial head locations are written, each location is identified by its x,y coordinates and its layer.  This is new in release 2020-1; prior releases wrote the x,y coordinates and the internal domain number.  The change made in release 2020-1 allows different domain configurations between the initial and the transient models, which can be helpful.  Because of this change, you must not mix initial head location or initial head files created prior to release 2020-1 with a release 2020-1 or later model.  To avoid incompatibility when you switch to release 2020-1, re-create the initial head location file and the initial heads file as outlined below using release 2020-1.

To create a transient model that has a proper set of initial heads, these steps are necessary:

  1. Make sure the transient model you begin to create has been saved to it's own unique file name, different from the file that contains the input for the model that will provide the initial condition heads.
  2. Set up the transient model (i.e. uncheck Steady under Model Input/General, establish the time step sequence under Model Input/Time Steps, adjust input for the transient case, set up all spatially-variable area sinks, make the appropriate settings under Analysis Input/Hydrograph Points and Analysis Input/Transient Line Conditions, etc.
  3. Select File/Save Locations for Initial Transient Heads, which saves the locations for transient starting heads from the transient model (these are the locations of all basis points associated with spatially-variable area sinks in the transient model and locations of hydrograph points, wells, and transient line conditions.  This saves the level and the coordinates of each of these to a binary file with the .ihl extension.
  4. Close the transient model.
  5. Open the initial conditions model (the one that represents conditions at the start of the transient run).  Solve it.  Select File/Write Initial Transient Heads, click on the initial heads file you would like to use for this simulation, and click Open. This reads in the locations saved from the .ihl file saved in step 3.
  6. A dialog opens asking you to name the binary initial heads file.  The default name is the same as the initial conditions input file but with the .hds ending.  Anaqsim then writes the initial heads at the locations in the .ihl file to a binary file with the .hds file extension.
  7. Close the initial conditions model.
  8. Open the transient model.  After checking that all model parameters are set correctly for the transient run, select Solve. At this point Anaqsim will ask you to select the .hds file containing the initial heads created in step 6.

When you solve the transient model, the heads are read in and used to determine the head change in the first time step at each basis point.

Write Initial Transient Heads

See the discussion under  Save Locations for Initial Transient Heads for an overview of setting  up initial heads for transient models.

Save Solution

This allows you to save the model solution after you have solved.  Later, you can open the model input file, then load the saved solution, and avoid the "Solve" step.  This is particularly handy for large models that have longer solve times, and allows you to save your solution and come back to it later for making plots or doing analysis of the solution.  All model objects with their strengths are saved in a binary format, to a file that has the same name as the input file, but with the ".solu" filename extension instead of ".anaq".

Load Saved Solution

This allows you to load in a previously saved model solution.  To make use of this, first open the model input file for the model, then load the saved solution, which avoids the need for the "Solve" step.  This is particularly handy for large models that have longer solve times, and allows you to save your solution and come back to it later for making plots or doing analysis of the solution.  All model objects and their strengths are read in from a binary file that has the same name as the input file, but with the ".solu" filename extension instead of ".anaq".

Export Input Data to Excel File

This causes the entire input database to be written to one excel file in the same directory as the input file (*.anaq), written to a file with the same name but the excel suffix (*.xlsx).  The Excel file has multiple sheets, one for each data table.  Each sheet contains the same headers as the data tables plus all rows of input.  This is a handy way to document model inputs all in one readable file.

Exit

This exits Anaqsim.  A dialog asks if you want to save the current input before exiting.  The same is achieved by clicking on the red "x" at the upper right corner of the Anaqsim window.

Menus

Edit Menu

This is like edit menus in most other Windows applications with Cut, Copy, and Paste menu choices.  These functions are also available with the usual keyboard shortcuts: control-x (cut) control -c (copy) control -v (paste).

Menus

Model Input Menu

General

This item has only one line of input.  The first item is checked if the model is steady-state and not checked if the model is transient.  To simulate storage fluxes in transient models, spatially-variable area sinks (SVAS) are required.  If you try to solve a transient model without any SVAS, Anaqsim gives an error message.

The other three items are text values that document the length and time units used in the model, and provide comments to document the run.  The model uses consistent length and time units throughout.  For example, if you chose meters and days, then hydraulic conductivity, specific discharge, and average linear velocity are in m/day, well discharges are in m3/day, and time markers on pathlines are in days.

Solution

The two data tables under this menu define settings involved in solving the system of equations in your model.   The first defines parameters involved in solver iterations, and the second lays out the solution accuracy needed before iteration ceases.

Solve Settings

Check Settings

These settings define the accuracy of boundary conditions required of the solution; iteration continues until these conditions are met.   If when Solve is pressed the solution converged before reaching the maximum number of iterations, all boundary conditions were met within the tolerances specified here.

These settings also affect the function of Analysis/Check Boundary Conditions at Latest Iteration, which is used to check how well the solution meets specified boundary conditions.  Such conditions include heads at head-specified wells and linesinks, extraction at spatially-variable area sink basis points, etc.  When you select Analysis/Check Boundary Conditions at Control Points, each boundary condition is checked, and if the discrepancy between the specified condition and the model-simulated condition is greater than a threshold you specify here, the program prints the discrepancy to the run log.  If the discrepancy is less than the threshold, nothing is printed.  In cases where the solution did not converge to within these tolerances during the Solve process, the offending boundary conditions are listed along with their accuracy.  This can be a help to home in on which boundary conditions are holding up the Solve process.

Four kinds of boundary condition tolerances are defined as follows.

Time Steps

This input is used only for transient models.  If you are doing a transient model, make sure you uncheck Steady under Model Input/General.  Each row of input in the Time Steps table defines a time period, during which all boundary conditions are constant. For example, a model could have three time periods with different recharge rates, river stages, or well discharge rates in each of the three periods, but within each period the values remain constant.  

For each time period, you specify the total length of the time period (Period_Length), the number of time steps the period is divided into (Steps_in_period), and the time step multiplier (Step_multiplier).  The multiplier causes the length of successive time steps to grow by a factor equal to the time step multiplier.  The following table illustrates the lengths of time four time steps for a period that is 100 time units long, using various time step multipliers.

Time Step Multiplier = 1.0 Multiplier = 1.5 Multiplier = 2.0
1 25.00 12.31 6.67
2 25.00 18.46 13.33
3 25.00 27.69 26.67
4 25.00 41.54 53.33
Total Time: 100.00 100.00 100.00

In all cases, the total time of the period is 100, but the lengths of the four steps change as the time step multiplier changes.  This scheme is the same as employed in MODFLOW.  Using a multiplier larger than 1.0 helps concentrate computing power early in the time period when there is more transient change occurring.  Transient storage fluxes, which are part of spatially-variable extraction, are computed for each time step using a finite-difference approximation of the governing equation (Equation 6 of Fitts, 2010).

Domains

The properties of each domain (called a subdomain in Fitts, 2010) are set with data tables under this menu.  Different tables define the properties of different kinds of domains.  A domain is a polygonal region of the model in a certain model level.  Inside a domain, the aquifer properties (hydraulic conductivities, base elevation, storativity, porosity, etc) are homogeneous.

The boundary of a particular domain is defined by a combination of line boundaries that, in their input, are listed as external to the domain.  Head-specified, normal flux-specified, and inter-domain boundaries can be external boundaries for domains.  Other line boundaries like river and discharge-specified line boundaries are internal to domains and do not define domain boundaries.  See the discussion under Subdomains and Model Levels for more detail and some examples.

All domain input data tables may be accessed through the main menu or by using a pop-up context menu when the cursor is over the plot.

Boundaries of Domains

The geometry of the boundary of each domain is not specified in the domain data tables, but is determined by the distribution line boundaries that define the external domain boundaries.  Line boundaries that can be external domain boundaries are head-specified, normal flux-specified, and inter-domain.  The data that is input for these types of line boundaries include information about which domain(s) that they bound.  All domains should be completely bounded by such line boundaries, so that their geometry is unambiguous.  See the discussion under Subdomains and Model Levels for more detail and some examples.

For the best accuracy, make sure the coordinates of the starting and ending points of adjacent external line boundaries match exactly (copy them).  For example, if a domain boundary has two line boundaries defining it - one head-specified and the other inter-domain, make sure that the start/end points where these two line boundaries join have the exact same coordinates.

Input Common to All Domains

Several parameters are common and required input for any type of domain:

Details about Average_head

In other two-dimensional AEM programs such as TWODAN, the flow region is open to infinity, and one unknown that needs to  be solved for is the amount of flow that goes between the modeled area and infinity.  In these programs, to generate an equation to solve for that additional unknown, you specify a head at one location ("reference head" in TWODAN).  

In Anaqsim, each domain model is closed and finite, so there is not that extra unknown.  You specify the average head in each domain. which in turn defines a constant that is added to the potential for that domain.  Since there are linesinks that bound each subdomain, the flow field outside those linesinks does not matter (the flow to/from infinity doesn't affect the solution inside the domain boundary).  You could specify a variety of different average head values, within a reasonable range (close to the actual average), and get essentially identical results.

Say you have a simple Anaqsim one-domain model that has head-specified boundaries all around the external boundary, with h=100.  There is zero recharge, so h should be 100 everywhere inside the domain.  If you specify the average domain h=100, the program adds a constant to the potential that is the potential corresponding to h=100.  On solving, it will turn out that the boundary conditions are met perfectly everywhere on the boundary and the boundary linesinks all have zero discharge; the analytical model will boil down to the simple equation h(x,y)=100.  With zero discharges in the boundary linesinks, there is no flow to or from infinity to the model boundary from the outside (even though you never see this part of a domain model, it exists).

Now imagine that instead you set the average domain head to 110, which adds a larger constant to the potential for this domain.  Now, to achieve the boundary h=100, the boundary linesinks need to extract water to pull the head surface down.  In this case the solution on and inside the boundary will still be approximately h=100, but there will be flow to the outside of the boundary linesinks from infinity.  Likewise, if you set the average domain head to 90, the solution on and inside the boundary will be approximately h=100, but there will be flow from the outside of the boundary linesinks to infinity.  When you change the average head for a domain, it changes the part of the domain solution that you never see - the part that lies outside the external boundary of the domain.  

If you use long line elements with few parameters and the average head is not close to the actual average, the differences in the external, unseen part of the model may have some visible impact on the model within the domain boundary.  The most likely manifestation will be some lumpiness in the head surface near those boundary elements.  Correct this by choosing a more representative average head and/or shortening line boundary elements and increasing the number of parameters per line.

Confined and/or Unconfined

Starting with release 2015-1, confined, unconfined, and confined/unconfined domains are in the same data table, which allows the user to quickly switch between these domain types.  For confined and/or unconfined domains, these parameters are needed in addition to those that are common to all domains:

Never put an unconfined domain beneath an overlying domain, because the unconfined domain saturated thickness is always computed as head minus base elevation. If you think an underlying domain may become unconfined, use confined/unconfined rather than unconfined

For numerical stability where the saturated thickness of an unconfined or confined/unconfined domain approaches zero, Anaqsim imposes a minimum saturated thickness.  When heads drop near or below the bottom, the domain reverts to a confined-type domain with a fixed minimum saturated thickness.  This facet of Anaqsim is governed by a parameter called Almost_dry_fraction under Solution/Solve Settings.

Confined Interface

For confined interface domains, these parameters are needed in addition to those that are common to all domains:

Interface domains in Anaqsim are based on the Ghyben-Herzberg approximation:

The confined interface domains are based on the techniques presented by Strack (1989) on pages 101-106 and in Fitts et al (2015). These domains are confined with fresh water from top to bottom when heads are high enough that there is no interface, or they are confined with an interface and some salt water if heads are low enough.  Confined interface domains would go to zero fresh water saturated thickness when the fresh water head drops to a level where the fresh water pressure at the top of the domain equals the salt water pressure at that elevation. This occurs where the freshwater head = Top_elevation + (Salt_elevation - Top_elevation) * DensityRatio.  For numerical stability where the fresh water saturated thickness approaches zero, Anaqsim imposes a minimum saturated thickness.  When heads are low enough, the domain reverts to a confined-type domain with this minimum saturated thickness.  This facet of Anaqsim is governed by a parameter called Almost_dry_fraction under Solution/Solve Settings.

Generally transient simulations with interface domains will be inaccurate because it is assumed that the salt water has a hydrostatic distribution of pressure on the interface.  In most transient situations, the salt water is moving, and when that movement has a vertical component, the hydrostatic pressure assumption is violated.  If you feel the hydrostatic salt water assumption is still reasonable, you may proceed with a transient simulation but Anaqsim will issue a warning.  See Storage Parameter Details for more on how storage parameters apply to this domain type.

Unconfined Interface

For unconfined interface domains, these parameters are needed in addition to those that are common to all domains:

Interface domains in Anaqsim are based on the Ghyben-Herzberg approximation:

The unconfined interface domains are based on the techniques presented by Strack (1989) on pages 108-111 and in Fitts et al (2015). These domains are unconfined with fresh water from the water table to the bottom when heads are high enough that there is no interface, or they are unconfined with an interface and some salt water if heads are low enough. Unconfined interface domains would go to zero fresh water saturated thickness when the fresh water head drops to Salt_elevation. To avoid dry conditions, keep all heads in the domain above Salt_elevation.  For numerical stability where the fresh water saturated thickness approaches zero, Anaqsim imposes a minimum saturated thickness.  When heads are low enough, the domain reverts to a confined-type domain with this minimum saturated thickness.  This facet of Anaqsim is governed by a parameter called Almost_dry_fraction under Solution/Solve Settings.

Generally transient simulations with interface domains will be inaccurate because it is assumed that the salt water has a hydrostatic distribution of pressure on the interface.  In most transient situations, the salt water is moving, and when that movement has a vertical component, the hydrostatic pressure assumption is violated.  If you feel the hydrostatic salt water assumption is still reasonable, you may proceed with a transient simulation but Anaqsim will issue a warning.  See Storage Parameter Details for more on how storage parameters apply to this domain type.

Storage Parameter Details

Storage parameters are defined differently for different domain types as explained below.

In all but confined domains, the storage parameter is a function of head.  The head at the start of a time step is used to determine the storage parameter that applies for the time step, even though the head at the end of the time step may correspond to a different storage parameter.  This approximation helps convergence and is minor if time steps are small enough.

Pumping Wells

Pumping wells may be either discharge-specified or head-specified.  The discharge-specified type may be screened in one domain or across multiple domains if the well screen spans multiple model levels.  All well input data tables may be accessed through the main menu or by using a pop-up context menu when the cursor is over the plot.

Input Common to all Pumping Wells

With all types of pumping wells, the following parameters are required.

SelectedWell.jpg

When highlighted in this way, the well can be moved by clicking on the purple box and dragging it.  This will automatically alter the coordinates of the well in the model input table. To stop graphic editing, press Esc to de-select the well.

Discharge-Specified

With discharge-specified wells, negative rates are used for extraction from the aquifer and positive rates are used for injection into the aquifer.  Additional parameters defined here are:

Discharge-Specified (Multi-Domain)

Use this type of well to simulate a well with a screen that spans multiple domains and levels in the vertical direction.  Anaqsim computes the appropriate discharge from each domain spanned so that the total discharge equals the specified discharge, and the heads at the well radius in each domain match each other.  With discharge-specified wells, negative rates are used for extraction from the aquifer and positive rates are used for injection into the aquifer.

Head-Specified

With head-specified wells, you specify a head that applies at the well radius and Anaqsim computes the discharge needed to achieve that head.  The discharge of a head-specified well may be checked after solving from the Analysis menu.

HSpecWellOffPeriods.png

Line Boundaries

A variety of line boundary conditions are available in Anaqsim.  Each line boundary is a multi-segmented line (polyline) and the user inputs a list of vertexes in sequence from one end of the polyline to the other.  The line boundary condition is approximated using linesink elements similar to those described by Jankovic and Barnes (1999).

Most line boundaries have a parameter that varies from one value at the starting vertex to another value at the ending vertex.  The  interpolation scheme between the end points is described in the next topic.

Anaqsim approximates the specified boundary conditions along line boundaries, as discussed by Fitts (2010).  You may check the accuracy of line boundary condition approximations under the Analysis menu.

For internal line boundaries, the coordinates of all polyline points must not be outside the subdomain boundary, otherwise numerical havoc will be wreaked!  It is possible for the start or end point of an internal line boundary to coincide exactly with a corner point of an external line boundary.

All line boundary input data tables may be accessed through the main menu or by using a pop-up context menu when the cursor is over the plot.

Input Common to all Line Boundaries

The following input items are common to all of the line boundaries:

SelectedVertexes.jpg

When highlighted in this way, the vertexes can be moved by clicking on the purple box and dragging it.  This will automatically alter the coordinates of the line boundary in the model input table. To de-select a line boundary, press Esc. Procedures for graphic editing of line boundaries are covered in the tutorial videos on the website.   To reverse the order of the vertexes (this can be handy if you digitized in the wrong direction), click the Reverse button.

Most line boundaries have additional parameters defined at the start and end points, such as heads for head-specified line boundaries.  With all such parameters, the same algorithm is employed to interpolate the specified values along the line boundary:

  1. Apportion the intermediate values to the vertexes based on the number of line segments in the polyline.  For example, if there are 4 segments and the end values are 100 and 110, the values at the vertexes would be 100, 102.5, 105, 107.5, and 110.  If there are 5 segments, the values at the vertexes would be 100, 102, 104, 106, 108, and 110.
  2. Linearly interpolate values to the control points within a line segment, assuming a linear distribution from one end to the other.

The additional parameters specific to each type of line boundary are listed in the following topics.

Head-Specified

With head-specified line boundaries you specify these additional items:

HSpecLineOffPeriods.png

Boundary condition equations are written at each control point on each line segment.  The equation specifies that the modeled head = specified head (interpolated between endpoints of the line boundary).  The specified head condition is approximated between control points and may be checked graphically.

Normal Flux-Specified

With normal flux-specified line boundaries you specify these additional items:

When the boundary is external, it is necessary to list the coordinates of the polyline in counter-clockwise order with the domain to the left of the boundary as you proceed along it.  If coordinates are specified in the wrong (clockwise) order, there is a check in the program that will detect and report this error.  This error can occur if you mistakenly specified the coordinates in clockwise order around the outside of the domain.  This message can also result if you have made errors in specifying additional external line boundaries either at these same coordinates (e.g. have two external line boundaries in the input that share the same vertex coordinates), or have erroneous external line boundaries to the right of this one (see discussion of left/right algorithm).

Boundary condition equations are written for sub-intervals in each line segment (e.g. three subintervals for 3 parameters/line).  The equation specifies that the total discharge across the line over the subinterval equals the total to interpolated specified fluxes over the interval.  The accuracy of this approximation may be checked graphically.

Head-Dependent Normal Flux (3rd type)

This allows head-dependent normal flux into or out of the model, depending on the modeled head at the boundary.  Boundary conditions like this are sometimes called 3rd type, Robin, general head (GHB in MODFLOW), or mixed boundary conditions; they involve both head and flux.  The boundary must be an external boundary of a domain.  It is necessary to list the coordinates of the polyline in counter-clockwise order with the domain to the left of the boundary as you proceed along it.  If coordinates are specified in the wrong order, there is a check in the program that will detect and report this error.   This error can occur if you mistakenly specified the coordinates in clockwise order around the outside of the domain.  This message can also result if you have made errors in specifying additional external line boundaries either at these same coordinates (e.g. have two external line boundaries in the input that share the same vertex coordinates), or have erroneous external line boundaries to the right of this one (see discussion of left/right algorithm).

This kind of boundary is illustrated conceptually in the vertical profile sketched below.  It is as though there is a fictional domain beyond the boundary (orange) outside of the domain (blue) , and at a distance b outside the boundary, there is a fixed head h*. The head difference between h* and the head at the boundary (h) drives a component of discharge normal to the boundary.

3rd type boundary.png

You specify these additional items with this type of boundary:

The component of aquifer discharge normal to the boundary is Qn [L2/T], determined by this equation: 

Where Φ* is the aquifer discharge potential computed for the domain using h*, and Φ is the aquifer discharge potential computed using modeled h at the boundary.  Qn is positive for discharge out of the domain.  The equation relating h to Φ depends on the domain type - it is a linear relation for confined domains but is nonlinear for unconfined and interface domains.  Books describing Φ(h) equations in the analytic element method include Fitts (2023), Strack (1989), and Haitjema (1995).  By writing the boundary condition equation this way, the boundary condition is linear, even when Φ(h) is nonlinear.  

For a confined isotropic domain, the normal component of aquifer discharge is:

Where T is the transmissivity of the domain and h is the modeled head at the boundary.  

For an unconfined isotropic domain, the normal component of aquifer discharge is:

Where K is the horizontal K of the domain, and h and h* are measured from the base of the domain.

The boundary condition equation 

is written at each control point on each line segment.  The values of conductance and Φ* are interpolated between the values specified at the start and end of the boundary.  The modeled boundary condition is approximated between control points and may be checked graphically.

Discharge-Specified

With discharge-specified line boundaries you specify these additional items:

With this type of line boundary, the discharge per length of line is constant along the entire length of the polyline. Negative discharge implies extraction from the aquifer and positive discharge implies injection into the aquifer.  In transient simulations, this parameter may vary from one time period to the next. This type of line boundary must always be internal, not on the external boundary of a domain.  To specify discharge into or out of the external boundary of a domain, use Normal Flux-Specified boundaries.  

River

With river line boundaries you specify these additional items:

RiverGraph.jpg

Boundary condition equations are written at each control point on each line segment.  The equation specifies that the discharge/length of the linesink be related to the stage and conductance(interpolated between endpoints of the line boundary) as described above.  The specified head condition is approximated between control points and may be checked graphically.  In the graphical check, the sign of the discharge is negative for flow from the domain to the river, consistent with other discharging elements.

Instead of digitizing rivers and adding line boundaries to the data table one row at a time, you may import river line boundary data from tab-delimited text that has been copied into the clipboard from a file or from a spreadsheet (e.g. Excel).  This may be a useful way to transfer large amounts of river data from other software into Anaqsim.

Import River Data from Clipboard

This menu selection is an alternate way to create new river line boundaries, in addition to Model Input Menu / Line Boundaries / River.  This alternative, found under Model Input Menu / Line Boundaries / Import River Data from Clipboard,  allows you to import text data to build river line boundary input multiple rows at a time, instead of digitizing and creating river boundaries one at a time. This could be useful for importing river data from GIS, for example.  

This command reads tab-delimited text from the clipboard and creates new River data rows in the database.  If you have the data in an Excel spreadsheet, you can highlight and copy the portion of the sheet into the clipboard, and then execute this command to import that data.  An example of the correct data format is shown below in the selected area of an Excel spreadsheet bounded by the green dotted line:

ExcelRiverDataSelection.png

First Row

The first selected row (row 2 of the spreadsheet) contains data that applies to all subsequent rows.  In this first row of input data are:

Vertex Rows

The subsequent rows (rows 3-9 of the above spreadsheet) contain data for each vertex of the river line boundaries.  In these rows, the data are:

In the above example, two river line boundaries are input.  The first one includes the vertex data from rows 3-6 and the second one includes vertex data from rows 6-9.  If a vertex row contains only the X, Y coordinates (like rows 4,5,7,8), those vertexes are within a line boundary, not at the start or end of one.  A vertex at the start or end of a river line boundary must have all 5 columns of data to specify beginning and ending values of Conductance, Base_resisting_layer, and Stage.  All 5 columns of data are required of the first vertex row (e.g. row 3) and the last vertex row (e.g. row 9).  The example data above, when imported, created these two rows of river line boundary input:

RiverImportNewRows.PNG

Note that the label for these two rows took the label specified in the first row of the clipboard data and then added ":#1", ":#2"...to the labels of the multiple river line boundaries created.  This gives each a unique label, and the common root of the label ("test label:#" in this case) is used by Anaqsim in Analysis / River Line Boundary Discharges to sum up the discharges of all river line boundaries with this common root, in addition to the discharge of each river line boundary.  For the example above, the coordinates of "test label:#1" are:
1, 2
3, 4
5, 6
7, 8
and the coordinates of "test label:#2" are:
7, 8
9, 10
11, 12
13, 14

Drain/Fracture

Drain/Fracture line boundaries allow modeling of thin features like drains or fractures that conduct water at a high rate compared to the surrounding domain.  The drain or fracture is represented in the model as a line with zero actual width using line dipole functions.  With these line boundaries, specify these additional items:

Boundary condition equations are written at each control point on each line segment.  The equation specifies that the modeled discharge within the drain (jump in stream function across drain) equals Conductance/K (interpolated between endpoints of the line boundary) times the gradient of the aquifer discharge potential in the direction of the drain.  This condition is approximated between control points and may be checked graphically.  In the graphical check, the discharge is positive for flow from the start of the boundary toward the end of the boundary, as defined by the order of vertexes.  To achieve better accuracy of this approximation, use shorter line segments and/or more parameters/line.  Shorter segments are particularly helpful at the ends of the line boundary, where the boundary condition changes rapidly.

Leaky Barrier

Leaky Barrier line boundaries allow modeling of thin features like sheet pile walls or slurry walls that create a barrier to flow, but allow some leakage.  The leaky barrier is represented in the model as a line with zero actual width using line doublet functions. With these line boundaries, specify these additional items:

Boundary condition equations are written at each control point on each line segment.  The equation specifies that the modeled aquifer discharge component normal to the barrier equals Conductance/K (interpolated between endpoints of the line boundary) times the jump in aquifer discharge potential across the barrier.  This condition is approximated between control points and may be checked graphically.   In this check, discharge is positive  for flow going from left to right as you proceed along the boundary from the start towards the end.  To achieve better accuracy of this approximation, use shorter line segments and/or more parameters/line.  Shorter segments are particularly helpful at the ends of the line boundary, where the boundary condition changes rapidly.

Inter-Domain

Inter-domain line boundaries define the boundaries between abutting domains.  It is possible to use these boundaries to abruptly shift the layering (levels) in the model.  For example, there could be a single level on one side of the boundary and multiple levels on the other side.  For inter-domain boundaries, you specify these additional items:

It is easy to make a mistake specifying Domains_left or Domains_right, so Anaqsim checks this and will alert you with an error message if it detects an error.  This error can occur if you mistakenly specified the left domain(s) on the right or vice versa.   This message can also result if you have made errors in specifying additional external line boundaries either at these same coordinates (e.g. have two external line boundaries in the input that share the same vertex coordinates), or have erroneous external line boundaries to the right of this one (see discussion of left/right algorithm).

On one side of the inter-domain boundary, there should be a single domain.  The reasons for this are explained in the Anaqsim Modeling Concepts section.  At inter-domain boundaries, the domain discharges normal to the boundary are matched so that over sub-segments of each line segment, the total normal discharge of domains to the left matches the total normal discharge of domains to the right. The number of sub-segments per line segment equals the number of parameters per line.  The heads in all domains match at control points along the line segment.  The number of such control points equals the number of parameters per line.  Fitts (2010) provides more discussion of how boundary conditions are approximated at inter-domain boundaries.  The accuracy of the modeled boundary conditions may be checked graphically.

Head-Specified External with Gradient

This is a useful line boundary for simple models where you want to impose a uniform groundwater flow across your area of interest, but do not want to specify a lot of other details.  Head-specified line boundaries are placed around a roughly circular outer boundary, and the specified heads create a uniform cross-flow in the absence of other elements.  This feature creates a 12-sided approximately circular boundary consisting of specified head line boundaries, which forms the entire external boundary of the domain.

With this type of line boundary you specify these additional items:

Boundary condition equations specifying head are written at each control point on each line segment.  The specified head condition is approximated between control points and may be checked graphically.

In all types of domains, this boundary by itself produces a uniform flow across the circle, with a uniform aquifer discharge (specific discharge * saturated thickness), and head at the center of the circle will equal the Average_head specified for the domain.  With a confined domain, the specified gradient will be the gradient everywhere along the circle boundary and everywhere within the circle in the absence of other elements.  With unconfined or interface domains and no other elements, the gradient changes with saturated thickness (higher gradient with less saturated thickness), and the specified head gradient will occur at the center and along the midline of the circle.  

The head contours below show a model with only this type of line boundary and an unconfined domain where the saturated thickness ranges from 33.4 to  11.5 across the circle; note the larger hydraulic gradient where the saturated thickness is smaller.  The aquifer discharge is constant within the circle, as is the saturated thickness * hydraulic gradient.  In this case, the average head of 25 and the specified gradient occur at the center and midline.

HSpecExternalWithGradientUnconfined.png

Area Source / Sink

Area sources or sinks are used to distribute extraction/discharge over an area in a domain as opposed to wells and line boundaries, which have extraction/discharge at a point or line.  Area source/sink extraction/discharge rates are in units of volume/time/area [L3/T/ L2] = [L/T], like is typical of precipitation or recharge rates.  Area source/sinks can represent recharge, vertical leakage, or storage fluxes in transient models.  See the Recharge, Leakage and Transient Storage section for more discussion.

In steady-state models in domains that are in a single-level part of the model, it can be efficient and appropriate to use a uniform (extraction rate independent of x,y) area source/sink over the entire domain to represent a constant rate of recharge, for example. The Uniform, Domain area source/sink is for such cases.  In these cases, the governing equations for aquifer flow are satisfied exactly.

In other cases where the vertical leakage or storage fluxes vary with location (x,y), you'll need to use spatially variable area sinks (SVAS).  SVAS are usually needed in multi-level areas of a model, and in transient models.

SVAS and uniform area sinks are mutually exclusive.  To avoid this dilemma, no SVAS basis points are placed inside any area that is also covered by a uniform area sink.

All area sink input data tables may be accessed through the main menu or by using a pop-up context menu when the cursor is over the plot.

Uniform, Domain

With this, the model simulates a constant rate of recharge/leakage over the entire domain.

Spatially Variable Area Sink Overview

With non-uniform vertical leakage or transient flow, the area source/sink extraction/discharge needs to be spatially variable (varies with x,y) because leakage and/or storage fluxes are not constant over the entire domain.  Anaqsim uses multi-quadric interpolator functions to simulate spatially variable area source/sinks (SVAS) (see Fitts (2010) or Strack and Jankovic (1999)).  With SVAS, the governing equations of aquifer flow are approximated, and this approximation can be quite good if the density of basis points is high enough (Fitts, 2010).  You can check the accuracy of the approximation with the Analysis/Conditions Along a Line which does the same check as shown in Figures 10 and 11 of Fitts (2010).

When you use SVAS, you may assign them over the area of a domain or over the area of a polygon.  In either case, SVAS are created in all domains at all levels that are within the area of the specified domain or polygon.   If there is a multi-level area of the model, you only input SVAS in one of the levels in the stack.  Anaqsim automatically assigns SVAS in the other subdomains that are vertically above or below the ones you specify the SVAS in.   When you specify a SVAS by domain or polygon, you specify the condition at the top of the top layer of the model and at the bottom of the bottom layer of the model in the area of the domain or polygon.  This condition may be flux-specified, or head-dependent flux -specified.  The top or bottom condition may be a specified constant, or it may be defined by an irregular surface (new in release 2017-1).

You have two ways of assigning SVAS and associated basis points:

  1. spreading basis points in all model levels at a specified spacing over the area of a domain (Spatially Variable, Domain), and
  2. spreading basis points in all model levels at a specified spacing over the area of a polygon (Spatially Variable, Polygon).  SVAS polygons are used to refine the top condition, bottom condition,  and/or basis point spacing.   SVAS polygons first erase any basis points that were inside the polygon and then replaces them at the specified top/bottom conditions and spacing.

In addition, you can refine basis point spacing (but not top/bottom conditions) in the near vicinity of wells (Spatially-Variable, Well Basis Points).  This places basis points with an efficient radial, logarithmic spacing to achieve accurate solutions near wells.

The spatially-variable area sink functions are smooth within a domain, but can change abruptly across a domain boundary.  An example of this is the pond boundary in the example model in the Fitts (2010) paper.  This is a nice feature because at some boundaries like the pond shoreline, you want the extraction to change abruptly.

The rules governing SVAS specifications are summarized below:

Spatially Variable, Domain

This sets up a spatially-variable area source/sink over a whole domain with a uniform spacing of basis points.  The governing equation is met perfectly at the basis points, which are distributed on hexagonal centers at the specified spacing.  The governing equation is approximated in between basis points.

Spatially Variable, Polygon

This modifies spatially-variable area source/sinks within a polygonal area.  This can be used in addition to the Spatially Variable, Domain option to make the spacing of basis points denser in some areas, and to specify different flux or head-dependent flux conditions in some areas.

Spatially Variable, Well Basis Points

Here you can define special, efficient spatially-variable area sink (SVAS) basis point spacings that apply near pumping wells, to improve the accuracy of modeled vertical leakage and storage fluxes.  The basis points are drawn with density that is high near the well and decreases with radial distance from the well.  The closest basis points to the well are placed at a radius two times the radius of the well.  Basis points are placed on larger and larger circles out from the well, where the distance between circles increases logarithmically between adjacent circles (like a steady well flow flow-net).   The outer limit of these basis points is determined by the Max_node_spacing parameter - circles of basis points continue to be added in the outward direction, until the basis point spacing would exceed Max_node_spacing.  Every other circle has all the basis point locations rotated by an angle that is half the angle between basis points on a circle.   For example, if you chose 4 Points_per_circle, the angle between basis points on a circle would be 360/4 = 90 degrees, and every other circle would have these positions rotated by 45 degrees compared to adjacent circles of basis points (see figures below). These special well basis points replace basis points in this area that were established with SVAS domain or polygon input.  The well basis point input only refines the basis point spacing and does not alter the top and bottom conditions that are determined by the SVAS domain or polygon input.

These data are input:

The algorithm for placing basis points is illustrated below with a well flow-net plot and basis point placement shown with green triangles for the case of 6 points per circle (basis points shown for 5 outermost circles).

WellBasisPointsAlgorithm.PNG

An Anaqsim plot showing well basis points with 8 points per circle is shown below, with a circle drawn in red around the area of special well basis points.  Outside this circle is the regular hexagonal basis point spacing defined by SVAS domain or polygon inputs.

welBasisPoints.png

SVAS Top/Bottom Condition Surfaces

This allows you to input a surface, so that spatially-variable area sink (SVAS) top and bottom conditions can be a assigned using an interpolation function of (x,y) position instead of being constant and independent of (x,y).   Some possible applications of this include:

The data points  that define these surfaces do not correspond to basis points in the SVAS - these data points only define the surface that defines flux or head-dependent flux that is assigned at each basis point.  Such surfaces may be referenced by both SVAS, domain and SVAS, polygon input.  The surface is created using interpolation between data points that are specified as x,y,value triplets.   You must specify at least 3 data points.  

If you specify exactly 3 data points, the surface will be a planar surface that passes through each of the 3 points, using the function:

Value(x,y) = Ax + By + C   (A, B, C are scalar constants)

If you specify 4 or more data points, the surface is defined using an interpolation function described by Hardy (1971):

Value(x,y) = a1 r1 + a2 r2 + a3 r3 + ... + D  (a1, a2 ,a3... and D are scalar constants and r1, r2 ,r3... are radial distances from each (x,y) data point)

This surface passes through each data point and is a smooth but irregular surface.

You can enter the data manually, you can paste the data in from other software (e.g. a copied block of cells in an Excel spreadsheet), or you can digitize the surface data within Anaqsim.

When you use a surface for an SVAS top or bottom condition, be sure to read about how the surface is scaled by the number(s) you input for the Top_flux_or_head  in the SVAS domain or SVAS polygon input.

Input of Transient Model Parameters

Many parameters in Anaqsim models may vary during a transient simulation. In all cases, the parameters must be constant during each time period, but may change from one time period to another.  The following Model Input parameters may be transient:

For each of these parameters, you may enter one value that applies through the entire simulation, or you may enter multiple values separated by commas, one value per time period.  If you enter fewer values than the number of time periods, the last value entered applies to all subsequent time periods.

Menus

Plot Input Menu

Items under this menu control what appears in the plot created when you select Make Plot/Level... from the menu.

What to Plot

This line of input controls what gets plotted when you select Make Plot/Level 1, Level2, etc.

Set Plot Window to Current View

Selecting this sets the plot view coordinates in the What to Plot/Window cell to the coordinates of the current plot window.  Make this selection after using the zoom functions in the Plot View Menu to get the window you want for subsequent plots.

Set Plot Window to Entire Model

Selecting this sets the plot view coordinates in the What to Plot/Window cell to the limits of all elements in the current model, making the window for subsequent plots encompass the entire model extent.

Contour Settings

This selection lets you customize how contours are drawn.

Pathline Settings

These settings control the drawing of all flow pathlines you enter under Plot Input/Pathlines.  In steady simulations, the pathlines are traced through a steady flow field.  In transient simulations, pathlines are generally traced through the simulated transient flow field, and time along a pathline is synchronized with the simulation time.  The exception is if you check Freeze_transient pathlines, as described below.  The rest of this discussion of transient pathlines assumes Freeze_transient  is not checked.  Each time step in a transient model has a flow solution that, for the purposes of pathline tracing, applies from the start to the end of the time step. Transient pathlines are only traced during the simulated time window.  Transient pathlines terminate when one of the following conditions occurs:

  1. the simulation time along the pathline is less than 0 or greater than the total simulation time (sum of time period lengths), 
  2. the total elapsed time exceeds Total_time or, 
  3. the pathline exits the model or enters a well or linesink.  

Steady pathlines terminate when condition 2 or 3 in the previous sentence is reached.

Pathlines can be displayed with three aspects:

You can control which of these three is displayed in the plot by selecting View Manager from the Plot View Menu.  You can toggle the display of these on/off by clicking on the Freeze column in the View Manager. 

Vector Settings

These settings control the drawing of vectors.  Vectors are computed using the domain’s function for the discharge vector.  When vectors are drawn, the center of the vector is at the spot where the vector was computed.

Pathlines

This menu is where you specify the starting points and tracing directions of pathlines that are  drawn.  You can specify single pathlines, pathlines distributed along a line, or pathlines distributed along a circle.  Well pathlines are like circle pathlines but linked to a particular well.  Pathlines are demonstrated in detail in the tutorial videos at the website.

Single

This table allows input for single pathlines.

Line

This allows starting a number of pathlines equally spaced along segments of a polyline.

Area

This allows starting a number of pathlines equally spaced within an area defined by a polygon.  This can be useful for tracing pathlines from a source area, or for defining capture zones for wells.

Circle

Circle pathlines start equally spaced on a circle that the user specifies.  For wells, the well pathline is a better choice, since it is linked to the well and will move with the well if its location is changed.

Well

Well pathlines are like circle pathlines, but are linked to a specific well.  When you move a well graphically, the reference to the well is maintained and pathlines will be drawn correctly.  The circle that the pathlines start on is centered on the well center and has a radius that is 1.2 times the well radius.  The direction of tracing is upstream if the well is extracting and downstream if the well is injecting.

Menus

Analysis Input Menu

Items under this menu allow you analyze the results of a simulation after the system of equations is solved (Solve).

Hydrograph Points

These allow you to track head (or drawdown) vs. time at specific points during a transient simulation.  They may be used to check the simulated water level at some other point such as an observation well location.  After solving, you can make hydrographs with the model-simulated head (or drawdown) and observed values read from a file;  this is done with Analysis / Graph Head Hydrographs or Analysis / Graph Drawdown Hydrographs.  This output is also available in automated runs.

A similar functionality is available in the plot context menu (right-click over the plot), which allows you to create hydrographs of all model levels at any location in a transient model.  However, hydrographs created with the plot context menu lack initial (t=0) heads, and the location is determined by the cursor position.

The locations of hydrograph points can be included in plots.  These locations may also be edited graphically, like can be done with well locations: click on a hydrograph point, then drag the purple square to the new location.

Transient Line Conditions

This allows you to track head or extraction along a line during both a steady and a transient simulation.  Tracking extraction along a line is useful for checking the accuracy of the governing equation approximation in transient simulations.  Tracking head along a line allows you to see how head profiles evolve during a transient simulation.  After solving, use these menu selections to make graphs: Analysis/Transient Line Conditions.  This output is also available in automated runs.

These lines can be displayed on plots.  These lines may also be edited graphically, like can be done with line boundaries: click on a line, then drag the purple squares at the vertexes to new locations.

Calibration Targets

Here is where you input information about targets for calibration.  Targets may be heads or head differences between two locations.

Head

Head calibration targets may be imported from spreadsheets like Excel.  Start by creating a spreadsheet table with the same columns as Anaqsim's head calibration table.  Then highlight and copy the block of data you want to paste, like is shown in the first image below for an Excel spreadsheet.  Then right-click over the Anaqsim head calibration table and select Paste New Rows.  The new rows will appear as shown in the second image below.  If your data has X and Y in separate columns, you can use Excel's CONCATENATE function to combine the X and Y columns with a "," between them into one column.

CopyExcelHeadCalibrationData.jpg

HeadCalibrationImport.PNG

Head Difference

This allows comparison of model-calculated head differences to target head differences.  The difference is computed between two head targets listed in the Analysis Input/Calibration Targets/Head table.   This may be used to calibrate to temporal variations in head at one location during a transient simulation (e.g. rate of drawdown) , or to spatial head differences (e.g. head gradients).  The labels are selected from drop-down lists generated from the head calibration targets data.

Velocity

This option is useful for calibrating a model to a known discharge direction indicated by an observed chemical plume.  You can specify the direction of the observed horizontal velocity parallel to the observed plume and compare this to the modeled horizontal velocity direction.  If you also know the magnitude of velocity in the plume, you can compare modeled to observed horizontal and vertical velocity components.

Head-specified Well Discharges

Here you select one or more head-specified wells to compare their simulated total discharge to some target or observed value of total discharge.  This could be used to calibrate to an observed total discharge from a group of flowing artesian wells, for example.

Internal Line Boundary Discharges

Here you select one or more internal discharging line boundaries (head-specified internal or river) to compare their simulated total discharge to some target or observed value of total discharge.  This could be used to calibrate to an observed discharge at a stream gauge or discharge from a pit dewatering system, for example.  

Vertical Leakage Over Polygon Area

This feature allows numerical computation of vertical leakage discharges integrated over a polygon area.  The area may be defined as the area covered by a specified domain or the area covered by a user-defined polygon.  The discharges are computed by evaluating the vertical leakage rate [L/T] at a large number of regularly-spaced points, and numerically integrating contributions over the small increments of area each point represents.  The total leakage discharge [L3/T] over the area is reported.  This tool will examine vertical leakages for each level that exists within the domain or polygon specified.  For example, if levels 1,2,3, and 5 exist in the area of the polygon, the output will include:

After solving, use Analysis / Write Vertical Leakages Over Polygon Areas to Run Log to view computed total leakage discharges.  This output is also available in automated runs.

Input parameters for this feature are:

These polygons can be displayed on plots.  They may also be edited graphically, like can be done with line boundaries: click on a polygon, then drag the purple squares at the vertexes to new locations.  You may also insert or delete vertexes once the polygon is selected.

Menus

Solve and Cancel Solve

Solve

Pressing Solve begins the process of solving the system of equations associated with your model.  The program constructs the system of equations and then invokes a direct LU solver to determine the unknown strength parameters associated with wells, line elements, and area sink elements.  Boundary conditions like river boundaries in unconfined aquifers generate nonlinear equations. When a model contains some nonlinear equations, the solution is found by repeated iterations, where the non-linear equations are linearized (an approximation) with the linearization updated at each iteration.  The program displays iteration information in the run log as iterations proceed and when they terminate due to one of two conditions: 1) the solution converged within the check settings, or 2) the solution did not converge within the check settings but stopped iterating after the maximum number of iterations.   The solve process is executed on a background thread, so you may continue with some input editing tasks as the solve process runs.  You can abort the solve process by selecting Cancel Solve.

Solve must be executed after any change to the Model Input so that results examined in the Make Plot or Analysis menus reflect the current input.  Changes to the Plot Input do not require re-solving.  In transient models, changes to Analysis Input/Hydrograph Points or Analysis Input/Transient Line Conditions requires you to re-establish the initial heads files and to Solve again before running related items under the Analysis menu.

Solving takes longer for more complex simulations with more equations.  It is good modeling practice to start with a relatively simple model and incrementally add complexity, so you can monitor the level of complexity, number of equations, and solve times as you proceed.  The spatially-variable area source/sinks can add large numbers of equations to the system if the spacing of basis points is small.  To save computation time, you can increase the basis point spacing of spatially-variable area sinks and reduce the number of parameters per line on line boundaries.  When you want to make a final, presentation-quality model, you can alter these for more accuracy and better aesthetics.

Another way to keep computation minimal and start simple is to make as much of the model linear as possible (linear boundary conditions can solve in a single iteration, as opposed to non-linear boundary conditions).  You can do this by making domains confined (fixed T and saturated thickness).  You can also employ head-specified line boundaries (linear) instead of river line boundaries (often nonlinear).  For complex problems, it probably makes sense to do most of the modeling work in with linear features and then change to nonlinear features later in the modeling process.

You may adjust Solve Settings and Check Settings to control the Solve process.

Cancel Solve

This allows you to abort the ongoing solve process.  Use this if you don't want to wait for solve to finish and you know the input is not what you want.  If you select Make Plot/All Selected Features after canceling the solve process, Anaqsim will attempt to make a plot with the available solution.  For example, a transient solution canceled after 5 time steps were complete will be able to display plots and pathlines up through this point in the simulation.  In a steady simulation, the plot will show the last iteration results before canceling.

Menus

Make Plot Menu

Selections here cause a plot to be generated.  The view is automatically shifted to the map view with any of these selections.

All Selected Features, Choose Level / Time

After selecting a model level and time step (for transient models) in the pop-up window, this creates a map-view plot of the model results, using your settings from the Plot Input menu.  To use this selection, you must have solved a model.

Everything shown in the plot will be specific to the selected level and time step , except for pathlines, which may traverse multiple levels and progress through time.  Regardless of the level and time selected, entire pathlines are plotted.

All Selected Features, Same Level / Time

This creates a map-view plot of the model results, using your settings from the Plot Input menu.  The level and time of the plot are the same as in the prior plot.  If this is the first plot made, it defaults to level 1 at the first time step.  To use this selection, you must have solved a model.

Everything shown in the plot will be specific to the selected level and time step , except for pathlines, which may traverse multiple levels and progress through time.  Regardless of the level and time selected, entire pathlines are plotted.

Model Elements Only

This selection is used if you are part way through constructing a model and want to digitize features or see what model input features you have so far, without solving the partially-constructed system.  This allows you to see the layout of model elements and of control points (points where boundary conditions are met).  The control points are collocation points along line boundaries (“x” symbols) and the basis points for spatially-variable area source/sinks (“+” symbols).  To see control points and basis points, make sure to select "elements w/details, control points" under Plot Input / What to Plot / Elements.

Along line boundaries, there are circles at the line segment end points.  If you move the cursor over one of these circles, information about the line boundary condition at that corner is displayed.  At the start and end points of line boundaries, these circle are slightly offset away from the start or end point, which is helpful when multiple line boundaries start/end at the same point.

The pop-up window allows you to select the model level of the elements you want to display.

When you make a plot this way, there is no valid solution to examine, since the Solve step is bypassed.  So, you can't use any of the post-solve analysis features such as Make Plot /All Selected Features or any of the options under the Analysis menu, and some of the options under the Plot Context menu.

SVAS Top/Bottom Condition Surface

Use this to contour and examine a SVAS top/bottom condition surface that you have defined.  When you select this, a dialog will pop up that asks you to select one of the surfaces you have defined.  Then a plot will be made that shows contours of the surface using contours settings defined under Plot Input/Contour Settings.   The plot will also show dark blue circles at each surface data point location, and if you move the mouse over the circle, it will display the specified value at that data point.

Depending what you have selected under Plot Input/What to Plot, the plot may or may not also show the basemap, elements, and SVAS polygons.

When you make a plot this way, there is no valid solution to examine, since the Solve step is bypassed.  So, you can't use any of the post-solve analysis features such as Make Plot /All Selected Features or any of the options under the Analysis menu, and some of the options under the Plot Context menu.

Menus

Analysis Menu

Under this menu there are many choices for analyzing a model after the system of equations has been solved.  Remember to Solve the system after making input changes and before using this menu.  Some choices generate graphs, others generate text output to the run log.  Many of the functions under this menu are demonstrated in detail in the tutorial videos at the website.

Check Boundary Conditions at Latest Iteration

Selecting this causes the program to run through a check of all boundary conditions at the end of the most recent iteration (solved model of last time step if it converged, or last iteration in the case of a model that didn't converge), to see if they are met within the tolerances specified under Model Input/Solution/Check Settings.  The results are written to the run log and the view is switched to the view with the run log.  This can be useful to see which boundary conditions are causing non-convergence, if your model doesn't converge.  It may steer you to relax certain check settings or reconfigure the model.

In the following example, all of the boundary conditions met the check tolerances, so no specific boundary condition is listed:

CheckBC_allOK.jpg

After decreasing the Qn_check_tolerance to 2 x 10-9 and the Extraction_check_tolerance to 4 x 10-7,  the same model had some of the boundary conditions exceeding their check tolerances:

CheckBC_notAllOK.jpg

This output may also be written in automated runs.  

Head-Specified Well Discharges

Under this menu, selecting Write Discharges to Run Log writes a listing of head-specified well discharges to the run log. If the model is steady, it will list one discharge per well.  If the model is transient, it will list period, step, time, and discharge at each time step.  The time listed is the time at the end of the step.  The discharge listed applies from the start to the end of the step. Discharges of such wells are not known prior to solving the system (Solve).  

If you select Write Discharges to CSV, a dialog pops up to select an output file location.  The discharges of all head-specified wells are then written to that file location, providing period, step, time and discharge at each time step.

If you select Graph Transient Discharges, a dialog pops up where you select one well, and a graph is made of the discharge vs. time at the selected well.  Discharges are constant during a time step, so plots show abrupt changes in discharge between steps. Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Discharge-Specified Well Heads

Under this menu, selecting Write Heads to Run Log writes a listing of heads at all discharge-specified wells to the run log. This is head at the specified well radius.  If the model is steady, it will list one head per well.  If the model is transient, it will list period, step, time, and head at each time step.  Heads at such wells are not known prior to solving the system (Solve).  

If you select Write Heads to CSV, a dialog pops up to select an output file location.  The heads of all discharge-specified wells are then written to that file location, providing period, step, time and head at each time step.

If you select Graph Transient heads, a dialog pops up where you select one well, and a graph is made of the head vs. time at the selected well.   Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Multi-Domain Well Discharges by Domain

Under menu, selecting Write Discharges to Run Log writes a listing of the discharge contributed by each domain in a discharge-specified multi-domain well to the run log. If the model is steady, it will list one discharge per domain.  If the model is transient, it will list period, step, time, and discharge at each time step in each domain.   The time listed is the time at the end of the step.  The discharge listed applies from the start to the end of the step.  The discharges in each domain are not known prior to solving the system (Solve).

If you select Write Discharges to CSV, a dialog pops up to select an output file location.  The discharge of all multi-domain wells are then written to that file location, providing period, step, time and discharge at each time step in each domain.

If you select Graph Transient Discharges, a dialog pops up where you select one  discharge-specified multi-domain well, and a graph is made of the discharge contributed by each domain vs. time at the selected well. Discharges are constant during a time step, so plots show abrupt changes in discharge between steps.  Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Internal Head-Specified Line Boundary Discharges

Under this menu, selecting Write Discharges to Run Log writes a listing of internal head-specified line boundary discharges to the run log. If the model is steady, it will list one total discharge per line boundary.  If the model is transient, it will list total discharges vs. time, with period, step, time, and discharge at each time step.  The time listed is the time at the end of the step.  The discharge listed applies from the start to the end of the step.  The discharges of such line boundaries are not known prior to solving the system (Solve).  

If you select Write Discharges to CSV, a dialog pops up to select an output file location.  The discharges of all internal head-specified lines are then written to that file location, providing period, step, time and discharge at each time step.

If you select Graph Transient Discharges, a dialog pops up where you select one internal head-specified line boundary, and a graph is made of the total discharge vs. time at the selected line boundary.   Discharges are constant during a time step, so plots show abrupt changes in discharge between steps.  Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

River Line Boundary Discharges

River line boundary discharges are split into two sections, individual reaches and grouped reaches.  Anaqsim will sum a group of river line boundary discharges if your river line boundaries have labels with a common root. A common root consists of any label that contains the common character string "____:#".  For example, if you had three river line boundaries and their labels were dark creek:#1, dark creek:#2, and dark creek:#3, the discharges of each of these 3 are available individually as well as their total discharge.  The discharges of river line boundaries are not known prior to solving the system (Solve).

Selecting Write Discharges to Run Log writes a listing of river line boundary discharges to the run log. If the model is steady, it will list one total discharge per line boundary.  If the model is transient, it will list period, step, time, and total discharge at each time step.  The time listed is the time at the end of the step.  The discharge listed applies from the start to the end of the step. Discharges are negative for flow out of the domain into the river and positive for flow from the river into the domain.

If you select Write Discharges to CSV, a dialog pops up to select an output file location.  The discharges of all river line boundaries are then written to that file location, providing period, step, time and discharge at each time step.

If you select Graph Transient Discharges, a dialog pops up where you select one river line boundary, and a graph is made of the total discharge vs. time at the selected line boundary.   Discharges are constant during a time step, so plots show abrupt changes in discharge between steps.  This option is not yet available for grouped reaches.  Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Conditions Along a Line

This selection allows you to create graphs of head, domain elevations, interface elevations, aquifer discharge, or extraction rate along a line.

There are three options:

Pre-defined lines are defined prior to solving the model, and must be defined in Analysis Input/Transient Line Conditions. Graphing outputs from a new line can be specified after model solve, but graphs are limited to a single time step.

Whilst the predefined lines are called 'Transient Line Conditions' they can be used to provide outputs from both steady and transient models.

The options for choosing a variable to plot and/or write to CSV file are:

When Graphing outputs from a new line, some additional options are present. A dialog box pops up which requires the following input:

If you select Vertical profile, you have the option of showing head, domain boundaries, fresh/salt interface elevations, pathlines, and/or pathline time markers. Depending on what you select under Level, you will make a profile of the selected levels.  

When you have made a graph, it shows the selected item(s) vs. distance along the selected line.  You may export a bitmap graphic of the graph or the underlying data (see the Exporting X-Y Graphs topic).  For a transient simulation, this shows the conditions at the end of the simulation.

The location of this line can be displayed on plots.  The line may also be edited graphically, like can be done with line boundaries: click on a line, then drag the purple squares at the vertexes to new locations.

Fresh/salt interface profiles

There are two options for plotting fresh/salt interface profiles.  The Dupuit option computes the interface position using the model-simulated head for the domain, regardless of the elevation of the interface within the domain.  This assumes that there is no vertical resistance to flow within a domain and no vertical head gradients within a domain (this is commonly called the Dupuit approximation, which is inherent in Anaqsim's domain discharge model).   The Dupuit interface position is always computed using the model-simulated head, and assuming pressure equilibrium between this fresh water head and static salt water.  

The Dupuit plotting option can be used for single- and multi-level domain interface models. In multi-level models where there are significant head differences between levels, the Dupuit option will generate an interface that has discontinuities at boundaries between levels.  This saw-tooth shaped interface is consistent with the Dupuit and Ghyben-Herzberg approximations used in Anaqsim.  With the Dupuit approximation, head jumps abruptly at horizontal boundaries between domains at different levels, so the interface elevation computed with the Ghyben-Herzberg equation must also jump.  

Such discontinuities in the interface may be realistic for cases where a thin aquitard, included in the Anaqsim model by adjusting the K3 of an aquifer domain above or below, is the main cause of vertical resistance between levels.  On the other hand, if the main source of vertical resistance is not an aquitard but the actual K3 of the domains involved, the interface discontinuities are just an artifact of the Dupuit approximation.  These discontinuities can be smoothed by selecting the Non-Dupuit plotting option.

The Non-Dupuit option uses heads that are calculated in a post-processing step, heads that do vary with elevation within a domain.  In multi-level models simulating vertical leakage between levels, there is information available to approximate the vertical distribution of head within a domain.  Using the simulated heads in the domain and in overlying or underlying domains, and the vertical hydraulic conductivity of the domains (K3), and assuming that the simulated domain head applies at the mid-height of a domain, is is possible to construct an estimated vertical profile of heads within a domain at a point.  This profile is non-Dupuit, since head varies with elevation in a domain. For example, if the K3 of the lower half of  level 1 domain A equals K3 of the upper half of level 2 domain B, the approximated head would vary linearly from the midpoint of domain A to the midpoint of level B.  On the other hand, if the K3 of the lower half of  level 1 domain A were twice the K3 of the upper half of level 2 domain B, the approximated head would vary linearly in the lower half of domain A and linearly in the upper half of domain B, but the vertical head gradient in the upper half of B would be twice that in the lower half of A.  If you elect the Non-Dupuit option for interface position, the interface position is computed so that this approximated head balances pressure with static salt water.  The Non-Dupuit option will have these characteristics compared to the Dupuit option:

Where no vertical leakage can be computed, no non-Dupuit interface can be computed, so none can be displayed.  This is true in single-level areas of models.

Pathlines

When you check pathlines, the profile will show thin lines along each pathline, which is projected onto the line using a normal (right angle) projection.   If you check pathline time markers, a dot is displayed at each time marker (arrow in the plot) location. The pathlines and markers drawn will be those from the most recent plot made with the open model.  In a transient model, the pathline is transient, and not based on the flow field just at the selected time step.

This output may also be written in automated runs.  

Sum Discharge Across a Polyline

This sums the domain discharge [L3/T] across a polyline that has been digitized and is currently residing in the clipboard after being digitized.  You must first digitize a polyline in the plot view (Digitize/Polyline) before making this selection.  The discharge is written to the run log.  Discharge is positive for flow going left to right across the polyline as you proceed from the first vertex to the last.  For a transient simulation, discharges at each time step are written to the run log, so you can see how discharge evolved during the simulation.  

The discharge is computed by numerically summing normal components of aquifer discharge at 1000 equally-spaced points on each segment of the digitized polyline.

Sum Discharge Across External Boundaries

This sums the domain discharge [L3/T] across all external boundaries (head specified, normal flux-specified, and head-dependent normal flux). Discharge is positive for flow going left to right across the boundary as you proceed from the first vertex towards the last.  The discharge is computed by numerically summing normal components of aquifer discharge at 1000 equally-spaced points on each segment of the boundary.  The polyline vertexes that are used for this is computation are very slightly displaced into the interior of the boundary from the actual vertexes (within 10-4 of the segment length from the actual vertexes).

Selecting Write Heads to Run Log writes these discharges to the run log.  For a transient simulation, discharges at each time step are written to the run log, so you can see how these discharges evolve during the simulation.

If you select Write Discharges to CSV, a dialog pops up to select an output file location.  The heads of all discharges across external boundaries are then written to that file location, providing period, step, time and discharge at each time step.

If you select Graph Transient Discharges, a dialog pops up where you select a boundary, and a graph is made of the discharge vs. time at the selected boundary.   Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Vertical Leakage Over Polygon Areas

This causes Anaqsim to estimate and output leakages [L3/T] over polygon areas.  The leakages will be computed in all model levels over x-y plane areas defined in Analysis Input / Vertical Leakage Over Polygon Area.  These polygons can be displayed on plots. They may also be edited graphically, like can be done with line boundaries: click on a polygon, then drag the purple squares at the vertexes to new locations.  You may also insert or delete vertexes once the polygon is selected.

Under this menu, selecting Write Leakage to Run Log writes a listing of leakage at all defined polygons to the run log.  If the model is steady, it will list one leakage per model level per polygon.  If the model is transient, it will list period, step, time, and leakage at each time step.  The output text also includes the area of the polygon.  

If you select Write Leakage to CSV, a dialog pops up to select an output file location.  The leakage of all polygons are then written to that file location, providing period, step, time, level and head at each time step.

If you select Graph Transient Leakage, a dialog pops up where you select one polygon, and a graph is made of the leakage vs. time at the selected polygon.   Exporting the graph or the underlying data is described here.

This output may also be written in automated runs.  

Write Number of Displayed (Captured) Pathlines to Run Log

Selecting this causes the number of displayed pathlines to be written to the run log.  This can be handy if you are trying to optimize the capture of pathlines originating from a contaminant source area.  Use in combination with the capture constrain option, so only pathlines captured by selected wells are displayed.  This information can also be written to the text output file generated by an automated Anaqsim run, which allows you to use PEST or other parameter estimation software to perform the optimization.

Head Hydrographs

After solving a transient simulation, this calculates head vs. time data at the hydrograph points input under the Analysis Input/Hydrograph Points menu.  The data points relate to the end of each time step in the simulation, as defined in the Model Input/Time Steps menu.  To calculate this data, which include initial heads, the following steps must be taken in this sequence:

  1. Hydrograph points must be defined in Analysis Input/Hydrograph Points,
  2. Create initial head files as outlined in the Save Locations for Initial Transient Heads topic.
  3. Solve.
  4. Select this menu choice, which outputs the data in 1 of 3 ways:

If you select Write Head Hydrographs to Run Log, the period, step, time and head will be written at each time step to the log file.

If you select Write Head Hydrographs to CSV, a dialog pops up to select an output file location.  The head hydrographs for all hydrograph points are then written to that file location, providing period, step, time and head at each time step.

If you select Graph Head Hydrographs, a dialog pops up and asks if you want to read in observed hydrograph data from a file and plot those data as well as the modeled hydrograph. If you select Yes, you will then open a text file that has data that is either tab-delimited or comma-delimited.  The file can have as many series and data values as you would like. An example of the file format for a tab-delimited file is shown below. Each row has 2*n columns for n series of data. The first row has the series label in columns 1, 3, 5,...

The second and subsequent rows have time, value pairs for each series. In this example, columns 1 and 2 have time, value pairs for well1, columns 3 and 4 have time, value pairs for well2, and columns 5 and 6 have time, value pairs for well3. Note there can be different numbers of records in different series (e.g. these three series have 11, 7, and 10 records). This tab-delimited format can be generated directly from Excel by saving as a tab-delimited text (.txt) file.

well 1        well2        well3
1    101    1    201    1    301
2    102    2     202     2     302
3     103     3     203     3     303
4     104     4     204     4     304
5     105     5     205     5     305
6     106     6     206     6     306
7     107     7     207     7     307
8     108             8     308
9     109             9     309
10     110             10     310
11     111

The equivalent comma-delimited (.csv) file, a format that can also be saved from Excel, would look like:

well 1,,well2,,well3,
1,101,1,201,1,301
2,102,2,202,2,302
3,103,3,203,3,303
4,104,4,204,4,304
5,105,5,205,5,305
6,106,6,206,6,306
7,107,7,207,7,307
8,108,,,8,308
9,109,,,9,309
10,110,,,10,310
11,111,,,,

You may export a bitmap graphic of the graph or the underlying data (see the Exporting X-Y Graphs topic).

A similar functionality is available in the plot context menu (right-click over the plot), which allows you to create hydrographs of all model levels at any location in a transient model.  However, hydrographs created with the plot context menu lack initial (t=0) heads.

The locations of hydrograph points can be included in plots.  These locations may also be edited graphically, like can be done with well locations: click on a hydrograph point, then drag the purple square to the new location.

This output may also be written in automated runs.  

Drawdown Hydrographs

This item does roughly the same thing as Analysis/Head Hydrographs except that it calculates data for initial head - head to give you drawdown vs. time instead of head vs. time. To  allow log-log graphing of drawdown vs. time, the (time=0, drawdown=0) data point is omitted.  See Analysis/Head Hydrographs for a detailed description of how to set up this sort of analysis and how to display observed drawdown in addition to modeled drawdown.

Three options of writing outputs to Log, CSV and providing graphs are available. This output may also be written in automated runs.  

Calibration Results

Items under this menu allow you to write or graph head calibration results.  You can include all head calibration targets or only the selected ones.

This output may also be written in automated runs.  

Write All Targets to Run Log

This writes the results of calibration to the run log, including all head, head difference, and velocity calibration targets.  All calibration targets are input under the Analysis Input/Calibration Targets menu. 

Write Selected Targets to Run Log

This writes the results of calibration to the run log, including all head, head difference, and velocity calibration targets.  All calibration targets are input under the Analysis Input/Calibration Targets menu. 

Graph All Head Targets

This creates a and x-y graph of modeled heads vs. observed heads for all head calibration targets. Head and head difference calibration targets are input under the Analysis Input/Calibration Targets menu. 

Graph Selected Head Targets

This creates a and x-y graph of modeled heads vs. observed heads for the selected head calibration targets. Head and head difference calibration targets are input under the Analysis Input/Calibration Targets menu.

X-Y Graphs: Exporting, Changing Axes

Several of the choices under the Analysis menu lead to X-Y graphs.  All such graphs are displayed in a separate window like the one shown below, which has two menu items for exporting.  Selecting Save Chart Image lets you export a bitmap graphic of the graph to a file in png, jpg, or bmp formats.  Selecting Save Chart Data exports the underlying data of the graph to a text file in tab-delimited form so that it may be later imported into documents or spreadsheets like Excel.

You can customize the axes of X-Y graphs under the Change Axes menu item.  You can make either the X or Y axis logarithmic, but this only is possible if all values on that axis  are positive.   You can also change the upper and lower limits and the label/grid interval of the X and Y axes.

When the cursor is moved over a curve on the plot, the label of that curve is displayed.

XYGraph.PNG

Menus

License Menu

These are topics about your Anaqsim license - how to activate it and check its status.  

License Status this Computer

Selecting this prints the current license information for this computer to the run log.  If a valid license is present, it prints the expiration date.

License Key Activation Status

When prompted, enter your activation key code (sent via email to the purchaser at the time of the purchase) and press OK.  

The implementation of licenses has been changed from October 2024. Anaqsim version 2024-2-0 or later will be required to check a license key activation status of a license purchased after October 2024.

Each license key provides a single activation license for activation on a single computer.  Each key remains valid whilst an active monthly or annually recurring subscription is in place.  A subscription may be cancelled at any time and the associated license will remain valid until the end of the period that has been paid for (i.e. the full month or year from date of purchase / date of last automatic renewal payment). For more details please see Licensing Anaqsim. You may view and manage your active subscriptions by signing into your Anaqsim Account which will have been created when you purchased your subscription.

For licenses purchased after December 2023 but prior to June 2024 – Each activation key contains a single activation.  If you have purchased multiple licenses, you will receive multiple activation keys.  Each key is valid on one computer for 1 year from the date of purchase. The type of license and expiry date will be printed to the screen.

For licenses purchased prior to December 2023 – Each activation key may contain one or more activations.   Each activation is valid on one computer for 1 year from the time of activation, and there is no time limit for initialising activations. The number of activations initially purchased, the number of activations used so far and the number of activations still available will be printed to the screen.

Activate License on this Computer

Anaqsim licenses must be activated for key program functions to work.  Anaqsim licenses are locked to a specific computer for a specific time period (June 2024 onwards - whilst active subscription is in place, December 2023 to June 2024 - 1 year from purchase; prior to December 2023 - 1 year from activation).  The following process is required for activating a licence:

  1. Make sure your computer is connected to the internet (required).
  2. Select 'License'/'Activate License on this Computer'.  
  3. When prompted, enter your activation key code (sent via email to the purchaser at the time of the purchase) and press OK.  
  4. Anaqsim will activate a license on your computer.
  5. Check that the license is functioning correctly by selecting 'License'/'License Status this Computer'.  The license expiration date will be printed to the run log.

De-activate License on this Computer

An Anaqsim license can be de-activated and then re-activated for example if you upgrade computers and need to move Anaqsim to the new computer.  The following process should be followed: 

  1. Make sure your computer is connected to the internet (required).
  2. Select 'License'/'De-activate License on this Computer'.  
  3. When prompted, enter your activation key code (sent via email to the purchaser at the time of the purchase) and press OK.  
  4. Anaqsim will de-activate the license on your computer.
  5. Follow the Activating a License instructions on the new computer.

De-activating a license is only possible with licenses purchased after June 2024.  The activation key entered must match the activation key that was used to activate a license on that computer.

Menus

Help

Pressing this opens this Anaqsim User Guide Windows help file.  The User Guide gives and overview of Anaqsim modeling concepts and then details about the program's user interface and all menu items.

Use the contents tab at the left to navigate to and open desired sections or use the search tab to search for topics related to specific word(s).  The buttons on the bar at the bottom navigate to the next topic, and previous topic.

Menus

About Anaqsim

This causes the Anaqsim release number and the www.anaqsim.com web site URL to be presented in a pop-up window.

Plot View Options

This menu appears in the upper left below the main menu when you are in the plot view. It does not show in the data view because it only pertains to the plot.

Plot File Menu

These topics allow you to manipulate plot files; these are not the same as input files with the .anaq extension.  These are graphics files of the plots that you create with Make Plot.  You can save plot files to a variety of vector, bitmap, and CAD file formats.  You can also open drawing files in these formats.

This menu allows printing of the plot to any printer installed on your computer.

You may also save the surface data that is the basis of a contour plot, so that you can subtract it from another solution's data to make drawdown plots.

Open

Allows you to open a previously-saved plot.  Plots are saved in various VectorDraw (the CAD drawing component in Anaqsim) file formats, including DXF, which is a universal drawing exchange format.  See the Plot File Menu/Save topic for a list of formats.

Save

Allows you to save the plot to a file in various VectorDraw (the CAD drawing component in Anaqsim) file formats.  The formats include DXF, which is a common CAD file format.  If you have not already saved the plot to file, a dialog pops up to ask you where to save the file, what type of graphics file it is, and the file name.   You can save plot files to a variety of formats which are listed below:

Save As

This is the same as Save, but automatically shows the dialog allowing you to change the filename, format, or destination.

Clear Plot

This clears the plot to a blank view.

Print

This brings up a dialog that allows you to print the plot to any printer available to your computer.  The print dialog has many standard options including paper size, paper orientation, and margins.  There is a plot preview at the left of the dialog, which shows a detailed representation of the plot if you select Full Preview under Preview Options.  You may scale the plot to fit the paper or you may select a specific scale (e.g. 1 cm on printer = 50 m in model units).  The Print Area part of the dialog allows you to print the entire extent of the plot, or select a window to print a smaller portion of the plot.  To do the latter, click on Window and then the Pick button.  When the plot preview is adjusted to your satisfaction, click the Print button to send it to the printer.

Save Contour Grid Data to Binary File

This allows you to save the data that was contoured to a file in binary format.  This is useful if you want to contour the difference between two modeled surfaces using the Subtract feature under Plot Input/Contour Settings.  You might use this to compare the drawdown of simulation A compared to simulation B, for example.  When you do this, make sure that the Plot Input/What to Plot/Window and Plot Input/Contour Settings/Points_Evaluate are the same in the saved contour grid data as in the new plot you create.

Save Contour Grid Data to X, Y, Z ASCII file

This allows you to save the data that was contoured to an ASCII file, which then could be imported into other visualization software programs where you could examine the contoured surface.  You can export either to .csv (comma-delimited) or .txt (tab-delimited) formats.  The data format of that is written is as shown in the following Excel file, which was opened as a .csv file.

SaveContourDataASCIIExample.png

The first row is a header row, and the subsequent rows contain

Where heads drop below the base of unconfined domains, the value in the grid is set at the base elevation. 

Save Contour Grid Data to ASCII Surfer Grid File

This allows you to save the data that was contoured to an ASCII file in a format that can be directly imported into the Surfer contouring software (Golden Software).  You can then import this data into Surfer for analysis and plotting there.  The file is saved with the .grd extension recognized by Surfer.  Below is an example of such a file. which has blank characters as separators.  The first row, "DSAA" identifies the type of file being imported to Surfer.  The second line contains the numbers of data values in the x and y directions of the grid.  The third line contains the minimum and maximum values of x in the grid and the fourth line contains  the minimum and maximum values of y in the grid.  The fifth line contains the smallest and largest data values in the grid.  The sixth and subsequent lines contain the data values starting from xmin, ymin and working up by x rows to xmax, ymax.  

DSAA    
72 70
-427.5754841 315.3007776
-326.9260294 395.4048918
16.85028419 22.93994978
22.93994978    
22.8778982    
22.81579964    
22.75365779    
...

Where heads drop below the base of unconfined domains, the value in the grid is set at the base elevation. 

Save Pathline Start Point Data to ASCII File

This allows you to save the starting point data for the currently-plotted pathlines to an ASCII file, which then could be imported into other spreadsheet or visualization software programs.  You can export either to .csv (comma-delimited) or .txt (tab-delimited) formats.  The data format of that is written is as shown in the following Excel file, which was opened as a .csv file.

PathlineStartPts.PNG

The first two rows are header rows, and subsequent rows have these 5 columns of data:

Save Entire Pathline Data to ASCII File

This allows you to save the data for currently-plotted pathlines to an ASCII file, which then could be imported into other spreadsheet or visualization software programs.  You can export either to .csv (comma-delimited) or .txt (tab-delimited) formats.  The data format of that is written is as shown in the following Excel file, which was opened as a .csv file.

PathlineData.PNG

The data for each pathline starts with three header lines.  The first header line defines says "Start..." and includes the pathline number, which goes from 1...n with n pathlines in the plot.  The second and third lines of the header define the pathline's label under pathline input, and the well or line boundary that captured the pathline, if capture constraint is checked under Pathline Settings.  Subsequent rows have these 5 columns of data:

The data for each pathline ends with the line End pathline n, where n is the pathline number.

View Manager

This brings up a dialog that allows you to alter the color, line weight, and visibility of various layers of the plot.  There are separate plot layers for contours, vectors, etc.  To toggle the visibility of a layer of the plot, click the icon in the On column.  To alter the color or line weight, click on those columns.  To omit a layer when printing or saving a plot as a pdf file, toggle the Plot column. When done making changes, press the OK button.  Changes to the On status, line color, line weight persist as long as you keep the Anaqsim application running;  these settings return to defaults when you exit Anaqsim.

For pathlines, there are layers for each line of input in the pathline input tables (point, line, area...).  These can be turned on/off separately, to show certain groups of pathlines.  When a group of pathlines is turned off, the pathline trace and the associated arrow time markers (if checked under Plot Input/Pathline Settings) are turned off.  Also, in the View Manager you can turn off all time markers but leave the pathline traces.  The pathline starting points are all in a separate drawing layer, and these may be turned on/off in the View Manager.

Digitize

These items let you digitize coordinates from the plot, which are stored in the clipboard and from there may be pasted into input data tables or forms with Edit/Paste or control-V.  It is very helpful to employ a basemap for digitizing.  Basemaps are discussed in the Plot Input/What to Plot topic.  Digitizing operations are demonstrated in detail in the tutorial videos at the website.

Point

This allows you to digitize a single point.  The coordinates of the point are stored as text in the form: X, Y in the clipboard.

This same functionality, but without the instructional pop-up windows, is available in the plot context menu (right-click over the plot).

Polyline, Measure Distance

This allows you to digitize a series of points, the vertexes of a polyline.  After the last point, press Esc or right-click.  At this point a message pops up telling you how many vertexes the polyline has and its total length.  Also, if the polygon is closed (first and last points the same), the message reports the area of the polygon. This is a handy way to measure distance or area on the plot.  The coordinates of the vertexes are stored in the clipboard as a series of text lines of the following form:

X1, Y1,
X2, Y2
X3, Y3
...

These coordinates may be pasted into the Coordinates column for any line boundary.

This same functionality, but without the instructional pop-up windows, is available in the plot context menu (right-click over the plot).

Circle Polygon

This allows you to digitize a series of points that are the vertexes of a polygon which lie equally-spaced on a circle.  First you select the number of points on the circle and then you digitize the center point and then digitize a 2nd point on the circle.  As you perform the digitizing operation, the circle you are creating is shown in yellow.  This is useful if you want to approximate a circular line boundary (e.g. inter-domain boundary).

The coordinates of the vertexes are stored in the clipboard as a series of text lines, each line of the form:

X1, Y1,
X2, Y2
X3, Y3
...

Ellipse Polygon

This allows you to digitize a series of points that are the vertexes of a polygon which lie equally-spaced on an ellipse.  First you select the number of points on the ellipse and then you digitize the center of the ellipse, followed by a point that is on the ellipse at one of the two primary axes, and then a third point that defines the final shape of the ellipse.  As you perform the digitizing operation, the ellipse you are creating is shown in yellow.  This is useful if you want to approximate an ellipse line boundary (e.g. inter-domain boundary).

The coordinates of the vertexes are stored in the clipboard as a series of text lines, each line of the form:

X1, Y1,
X2, Y2
X3, Y3
...

Surface Data Points

This allows you to digitize a list of surface data points in an "x,y,value" form, which can be then input under SVAS Top/Bottom Condition Surfaces.  After selecting this, a dialog pops up explaining how to digitize multiple points of input.  You may continue to input a large number of points in one operation, and the data will be written to the clipboard so it can be pasted into the Data column under SVAS Top/Bottom Condition Surfaces.

Clear Digitizing Marks

When you digitize, the features that you’ve digitized show up in the plot.  Selecting this item clears those marks from the plot.

This same functionality, but without the instructional pop-up windows, is available in the plot context menu (right-click over the plot).

Snap Settings

This menu lets you control whether and how the cursor snaps to other objects in the drawing or to a regularly-spaced grid of points.  Snapping is generally useful for precision digitizing.  The first four items are toggled on or off by selecting them.  When a check mark is present next to one of these four items, snapping in that mode is in effect.  The four snap modes are listed below:

The Snap Grid Spacing sets the spacing between points in the grid that is effecting when Snap to Grid mode is checked.

Edit Line Boundary

This menu gives you the ability to move, insert, or delete vertexes from a selected line boundary or spatially-variable area sink (SVAS) polygon.  To insert a vertex, select the line boundary or polygon (its existing vertexes will display purple squares), then select Edit Line Boundary/Insert Vertex, click OK when the dialog pops up, then click where you want the new vertex.  When done, press ESC to de-select the line boundary.   To delete a vertex, select the line boundary, then select Edit Line Boundary/Delete Vertex, click OK when the dialog pops up, then click the vertex you want to delete.  When done, press ESC to de-select the line boundary.  When you make these graphic edits, it changes the coordinates listed for that line boundary in the Model Input database.

The same functionality for inserting and deleting vertexes, but without the instructional pop-up windows, is available in the plot context menu (right-click over the plot).

Annotate

These menu items allow you to add polylines, rectangles, and text to the plot.

Polyline

After selecting this, left-click successively on the desired vertex locations for the polyline.  After the last point, press Esc or right-click.

Rectangle

After selecting this, click at one corner location and drag to the opposite corner and click again to draw a rectangle.

Circle

After selecting this, draw a circle with two left-clicks of the mouse.  The first click defines the center point and the second click defines a point on the circle and the radius.

Ellipse

After selecting this, draw an ellipse with three left-clicks of the mouse.  The first click defines the center point, the second click defines the direction and length of one of the two axes, and the third click defines the length of the other axis normal to the axis defined by the second click.

Text

After selecting this, click where you want the base of the text line to start, then drag in the direction you want the text to run and click a second time.  This allows text to be plotted in any direction.  Then type the text you want and when you are done typing your text, press Enter.

Clear All Annotations

Selecting this will erase all annotations from the plot.

Undo

Selecting this undoes the most recent change such as deleting an annotation.  This can be repeated to undo several recent changes.

Redo

This reverses the most recent Undo action.   This can be repeated to redo a sequence of recent Undos.

Text Styles

This brings up a dialog that allows you to change the characteristics of text displayed on the plot.  Changing any of the text characteristics makes this change for all text in the plot including annotations and calibration residuals.  The only exception is that the size of the contour label text is fixed and determined automatically as a fraction of the plot window dimensions.  

Plot Info

Selecting this causes information about the plot to be printed in a small window.  It shows the coordinates of the plot window.  If there are contours, it shows the surface contoured, the minimum and maximum data values, the minimum and maximum contour levels, and the contour increment.  If there are vectors, it shows they kind of vector shown and the minimum and maximum vector magnitudes. For transient runs, it shows the time period, time step, and time that applies to plot features like contours and vectors.

Zoom All

This causes the plot to zoom out so that the view shows all of the model.

Zoom Window

After selecting Zoom Window, select the new display window by clicking at one corner, drag to the opposite corner, and click again.  The view will zoom to the newly-selected window.

Zoom Out

This makes the plot zoom out incrementally showing more of the model.  Zooming in is accomplished with Zoom Window.

Zoom Previous

This zooms to the previous view.

Computational details

Computational details

Computational Limits and Efficiency

There are limits imposed by the amount of memory that a computer can address and these can limit the maximum size of an Anaqsim model.  The following graph shows data from numerical experiments with 64-bit Anaqsim on a number of different computers.  These data are specific to these machines and each computer will behave differently depending on what other software is running and how the computer is configured, but this at least gives rough guidance.  The vertical axis shows the RAM used by the Anaqsim task - you will need more than this amount of memory to handle the operating system and possibly other tasks.  Thanks to staff at McLane Environmental for providing several of the data points in this graph. When the number of equations approaches the upper limit posed by memory on a given computer, the solve times increase significantly.   If, while running a model, all available memory (RAM) is used by Anaqsim and other tasks running, the windows operating system and .net will swap pages of memory to/from disk, which is a much slower than using RAM.  Symptoms of this condition are a dramatic slowing of all tasks and lots of hard disk activity; this is generally a condition to avoid.  It is best to increase your computer's memory or reduce the complexity of the model so that you can make runs entirely within RAM.

ComputationEfficiency.png

Another potential limit to the application of Anaqsim is where the system of equations gets so large that it takes too long to solve in a reasonable time.   That limit, on present standard personal computers, is probably in the range of several tens of thousands of equations.  Anaqsim can be the right tool for problems of moderate complexity, but not extreme complexity.  Computing power evolves rapidly, and these limits will migrate upward with time.  For situations with extreme complexity, a numerical method like finite differences or finite elements is probably a better choice.

Using multi-level areas in a model adds rapidly to the number of equations in the system.  To keep your problem within a manageable number of equations, use multiple levels sparingly, just in your area of interest and transition to a single level in the far-field.

Some additional suggestions for efficient modeling and limiting computation time are given in the Solve section.

Computational details

Parallel Processing

Starting with release 2023-1, parallel processing was implemented for determining the coefficients of the matrix A, and the vector b, which form the core components of the linear equation solver Ax = b, updated at each timestep in the solve process.

Starting with release 2019-1, parallel processing was implemented for these computations that occur in plot-making:

These can be a time-saver for complex models and plots, if your computer's CPU has multiple cores.  Experiments indicate that:

Computational details

Automating Runs

In addition to running Anaqsim interactively through the graphic user interface, you can make automated runs using the Windows command prompt.  This may be useful for running parameter estimation software such as PEST or for executing a batch of unattended runs.  Two input files are required for each model run:

To run an automated model in the Command Prompt, the command syntax is:

<path_to_Anaqsim>   <path_to_input_file>   <path_to_run_control_file>

The command prompt is accessed in Windows 11 by clicking Start Button and searching for 'Command Prompt'.

Within the command prompt it is necessary to put quotes around the path when the path contains names with spaces such as "program files" or "my documents".

To avoid typing out the full file path it is possible to change the current directory within the command prompt to the location that files are saved, then just type in the file names (no path needed) for every input/output file.

Assuming you've changed the current directory in the command prompt to the directory with all input/output files, the following is an example command that would execute a run of Anaqsim:

"c:\program files\yellow sub hydro\Anaqsim\Anaqsim.exe" run23.anaq run23.txt 

In the above example, Anaqsim is launched, run23.anaq is opened from the command prompt current directory, then execution and outputs are controlled by lines in the run control file run23.txt, also in the command prompt current directory.  
An optional 'batch' command can be added to the command which will force Anaqsim to work in the background and not open a user-interface.  An example command that would execute a run of Anaqsim in the background is:

"c:\program files\yellow sub hydro\Anaqsim\Anaqsim.exe" run23.anaq run23.txt batch

The section below shows all the possible commands that can be included in the run control file, their output options, and examples of each.  Some output files are dynamically named based on the input file name, and labels of elements in the model.  Where <name> is specified this relates to the filename of the .anaq input file. Where <well_label> is specified, it relates to the label associated with each well in the model. Similar syntax is used for lines, rivers, etc which have labels within the model.

Starting from version 2023-1 additional outputs and output options are available.

Run Control File Commands

All of the commands listed in the run control file are lower case (case sensitive).  The lines may appear in any order.

Initial Heads File

Command: initialheadsfile filename.hds
Required: required for transient runs
Explanation: Tells Anaqsim to use file filename.hds (replace with your own filename) as the initial heads for a transient run.  As written with no path, the file must be located in the command prompt current directory.  If it's located elsewhere, you must write the entire path+filename here instead of just the filename.  The two parameters on this line must be separated by any combination of spaces and/or tab characters.  This line is only needed for transient runs where the starting heads are to be read from a file.
Output options: N/A
Examples: initialheadsfile run23.hds

Output Log File

Command: outputfile filename.out
Required: Yes
Explanation:  Tells Anaqsim to write text outputs from the automated run to a new text file named filename.out (replace with your own filename). As written with no path, filename.out will be written to the command  prompt current directory.  If you want it written elsewhere, you must enter the entire path+filename here. The two parameters on this line must be separated by any combination of spaces and/or tab characters 
Output options: N/A
Examples: outputfile run23.out

Write Head Locations

Command: writeheadlocations filename.ihl
Required: No
Explanation:  Tells Anaqsim to write the initial head locations from the automated run to a new file named filename.ihl (replace with your own filename). This command (combined with the Save Initial Heads command) is useful if you wish to automate running a steady state model, and creating the initial conditions for a subsequent transient model. As written with no path, filename.ihl will be written to the command prompt current directory.  If you want it written elsewhere, you must enter the entire path+filename here. The two parameters on this line must be separated by any combination of spaces and/or tab characters 
Output options: N/A
Examples: writeheadlocations run23.ihl

Save Initial Heads

Command: saveinitialheads filename.hds
Required: No
Explanation:  Tells Anaqsim to save the initial head locations from the automated run to a new file named filename.hds (replace with your own filename). This command (combined with the Write Head Locations) is useful if you wish to automate running a steady state model, and creating the initial conditions for a subsequent transient model. As written with no path, filename.hds will be written to the command prompt current directory.  If you want it written elsewhere, you must enter the entire path+filename here. The two parameters on this line must be separated by any combination of spaces and/or tab characters 
Output options: N/A
Examples: saveinitialheads run23.hds

This command will fail if you have not also specified 'writeheadlocations' as Anaqsim requires the head locations to be written first before the initial heads can be saved at those locations.

Head Specified Wells

Command: headspecifiedwells
Required: No
Explanation: Directs Anaqsim to write the discharges of head-specified wells to the output file.
Output options:

Examples:

Discharge Specified Wells

Command: dischargespecifiedwells
Required: No
Explanation: Directs Anaqsim to write the heads at discharge-specified wells to the output file.
Output options:

Examples:

Discharge Specified Multilayer Wells

Command: dischargespecifiedmultilayerwells
Required: No
Explanation: Directs Anaqsim to write multi-level discharge-specified wells in the model.  For these the breakdown of discharges by domain will be written to the output file.
Output options:

Examples:

Head Specified Lines

Command: headspecifiedlines
Required: No
Explanation: Directs Anaqsim to write the discharges of internal head-specified line boundaries to the output file.
Output options:

Examples:

Rivers

Command: rivers
Required: No
Explanation: Directs Anaqsim to write the discharges of river line boundaries to the output file.
Output options:

Examples:

River Groups

Command: rivergroups
Required: No
Explanation: Directs Anaqsim to write the cumulative discharge of grouped rivers to the output file.
Output options:

Examples:

External Boundaries

Command: externalboundaries
Required: No
Explanation: Directs Anaqsim to write the discharges across external boundaries to the output file.
Output options:

Examples:

Vertical Leakage

Command: verticalleakage
Required: No
Explanation: Directs Anaqsim to write the vertical leakages over polygon areas to the output file.
Output options:

Examples:

Conditions along a Line

Command: conditionsalongline
Required: No
Explanation: Directs Anaqsim to write steady and/or transient conditions along a line to the output file.  All variables are output for all preset lines.
Output options:

Unlike other csv options, you do not specify a filename following the csv key word

Examples:

Head Hydrographs

Command: headhydrographs
Required: No
Explanation: Directs Anaqsim to write head hydrographs for preset hydrograph points to the output file.
Output options:

Examples:

Drawdown Hydrographs

Command: drawdownhydrographs
Required: No
Explanation: Directs Anaqsim to write drawdown hydrographs for preset hydrograph points to the output file.
Output options:

Examples:

Captured Pathlines

Command: capturedpathlines
Required: No
Explanation: If no csv key word provided, directs Anaqsim to write the number of captured pathlines to the output file.  This is useful for running parameter optimization problems where you want to maximize or minimize the number of pathlines captured by specified wells or line boundaries.   Use this with capture constrain in pathline settings.
If csv is specified and a filename is provided, then the x,y,z vertices of all pathlines (whether captured or not) are saved to a file.  
Output options:

Examples:

Head Output File

Command: headoutputfile
Required: No
Explanation: Directs Anaqsim to evaluate heads according to the current plot settings (Plot Input / What to Plot / Window and Plot Input / Contours Settings / Points_Evaluate) in each model level and at each time step if it is a transient simulation.  
Output options:

Examples:

Calibration

Command: calibration
Required: No
Explanation: Directs Anaqsim to write the calibration to the output file.  All types of calibration information is written.
Output options:

Examples:

Check Boundary Conditions

Command: checkboundaryconditions
Required: No
Explanation: Directs Anaqsim to write boundary checks to the log file. 
Output options: N/A
Examples: checkboundaryconditions

Save

Command: save
Required: No
Explanation: Directs Anaqsim to save the solution file to the specified location.
Output options: A filename must be provided with extension .solu after the save key word. The solution file will be saved to this file.
Examples: save run23.solu

Exit

Command: exit
Required: No
Explanation: Directs Anaqsim to close after having solved and written the specified outputs.  If a line with "exit" is not in the control file, Anaqsim will remain open so that the user could continue with other ways of analyzing the solution or making plots.
Output options: N/A
Examples: exit

Example Run Control File

An example file for a transient model that uses initial head levels from file run23.hds, writes text outputs to file run23.out, outputs head levels at discharge specified wells to a csv file, outputs discharge from grouped river reaches to graphs, and then saves the solution before exiting is as follows:

initialheadsfile run23.hds
outputfile run23.out
dischargespecifiedwells csv run23_Discharge_Wells.csv
rivergroups graph
save run23.solu
exit

Checks of Anaqsim

Anaqsim has been checked in many ways against exact analytic solutions and against numerical models like MODFLOW.  These checks and the input files associated with them are available at https://docs.anaqsim.com/books/checks-of-anaqsim.

References

Fitts, C. R. (2002), Groundwater Science, Academic Press, San Diego.

Fitts, C. R. (2004), Discrete analytic domains: a new AEM formulation for modeling
anisotropy and heterogeneity, Proceedings of EPA/NGWA Fractured Rock Conference,
Portland Maine, September 2004.

Fitts, C. R. (2006), Exact solution for two-dimensional flow to a well in an anisotropic
domain, Ground Water, 44(1), 99-101.

Fitts, C. R. (2010), Modeling Aquifer Systems with Analytic Elements and Subdomains, Water Resources Research, 46, W07521, doi:10.1029/2009WR008331.

Fitts, C. R. (2023), Groundwater Science 3rd edition, Academic Press, San Diego.

Fitts, C.R., J. Godwin, K. Feiner, C. McLane, and S. Mullendore (2015), Analytic Element Modeling of Steady Interface Flow in Multilayer Aquifers Using Anaqsim, Groundwater, 53 (3), 432–439, doi: 10.1111/gwat.12225

Fitts, C. R. (2018) Modeling Dewatered Domains in Multilayer Analytic Element Models, Groundwater, 56 (4), Early view article DOI: 10.1111/gwat.12645.

Hardy, R.L. (1971.)Multiquadric equations of topography and other irregular surfaces. Journal of Geophysical Research 76, 1905–1915.

Haitjema, H. (1995), Analytic Element Modeling of Groundwater Flow, Academic Press, San Diego.

Haitjema, H. M., and O. D. L. Strack (1985), An initial study of thermal energy storage
in unconfined aquifers, Tech. Rep. PNL-5818 UC-94e, Pac. Northwest Lab., Battelle
Mem. Inst., Richland, Wash.

Hansen, D. (2002), Analytic modeling of leakage in confined aquifer systems, MS thesis, Univ. of Minnesota, Minneapolis.

Jankovic, I. and Barnes, R. (1999), High-order line elements in modeling two-dimensional groundwater flow, Journal of Hydrology, 226, 211-223.

Strack, O. (1984), Three-Dimensional Streamlines in Dupuit-Forcheimer Models, Water Resources Research, 20 (7), 812-822.

Strack, O. (1989), Groundwater Mechanics, Prentice Hall, Engle- wood Cliffs, NJ.

Strack, O. (2003), Theory and applications of the analytic element method. Reviews of
Geophysics, 41(2), 1005.

Strack, O. and Jankovic, I. (1999), A multi-quadric area-sink for analytic element modeling of groundwater flow, Journal of Hydrology, 226, 188-196.