Software

MAFIC Software Information (continued)

Matrix Equation Solver

MAFIC uses an incomplete-Cholesky conjugate-gradient (ICCG) algorithm to solve the matrix equations of flow. This approach was first suggested by Meijerink and van der Vorst (1977), and is based on the conjugate-gradient method for efficient location of the minimum of a function (Hestetnes and Steifel, 1952). The incomplete Cholesky technique creates an approximate Cholesky decomposition of the flow matrix by decomposing only the non-zero terms in the matrix. For typical MAFIC meshes, the matrix is very sparse, and storing only the non-zero terms results in a substantial savings in memory requirements.

The approximate Cholesky decomposition is used to pre-condition the conjugate-gradient algorithm, and results in quite rapid convergence compared to PSOR or L-U solution algorithms. There is thus a substantial savings in memory, and a useful savings in CPU time using this algorithm. It has been shown that the conjugate gradient algorithm will always converge, and will require no more iterations than the number of degrees of freedom in the system.

The incomplete Cholesky factorization does not work unless the matrix is diagonally dominant. When finite elements containing obtuse angles or extreme aspect ratios are used, the matrix may not be diagonally dominant. In this case, a modification suggested by Kershaw (1978) is employed in MAFIC: if the diagonal term of the decomposed matrix becomes negative (so the necessary square root cannot be taken), the original diagonal is increased by a small arbitrary amount. (It is set to BOOST times the amount which is subsequently subtracted from it, where BOOST is a user-input parameter with a default value of 2.0.) This adjustment, made in subroutine ICDCMP, stabilizes the decomposition and does not impede the convergence of the ICCG algorithm.

The user specifies a parameter, TOL, which defines the conditions necessary for convergence of the algorithm. TOL, which typically has a value of 0.0001, is used in two tests of convergence. The largest absolute change in head at any node must be less than TOL times the largest nodal head minus the smallest nodal head. The largest unbalanced (residual) nodal flow rate must be less than TOL times the sum of the absolute values of all net nodal flows (which is approximately twice the total throughflow of the system).

In general, the algorithm appears to converge to a high level of accuracy using a number of iterations roughly equal to 0.1 times the number of degrees of freedom (the number of nodes which are not at a fixed head or on a group-flux boundary).

For steady-state problems, the flow matrix becomes indefinite (and hence unsolvable) if there are any finite elements which are not connected, directly or indirectly, to a fixed-head node. MAFIC uses a subroutine called XFLOAT which identifies groups of elements/nodes which "float" in this manner. As each "floater" is identified, its nodes are forced to have a fixed head equal to 999.99. Removal of any floaters is performed automatically by MAFIC, and sometimes results in a significantly smaller system of equations to solve. Removal of floaters may be disabled by setting input parameter RFLOAT false.

Modeling of Solute Transport

As discussed in the introduction, solute transport is currently simulated primarily within the fracture elements. Solute transport in the rock matrix is modelled only within the context of matrix diffusion between fractures and generic rock matrix blocks.

Solute transport in one dimension can be described by the equation (Bear, 1972):

(2-12)

where: V = the true groundwater velocity (L/T)
dL = the longitudinal dispersivity (L)
D = the coefficient of molecular diffusion (L2 /T)
x = the distance coordinate (L)
c = solute concentration (dimensionless)
t = time (T)
Qs = external source (T-1)
Cs = concentration of solute at external source (dimensionless)

The coefficient of molecular diffusion is ignored in the current formulation. This is a reasonable assumption for flow through fracture networks since fluid velocities are normally sufficiently large that V × dL >> D.

The solution to Equation (2-12) subject to the boundary conditions:

c(0,0) = Co
c(x,0) = 0.0
V(x,t) = a constant

is given by Bear (1972) as:

(2-13)

The form of Equation (2-13) is identical to that of a normal distribution with a mean of Vt (the convective travel distance) and a variance of 2dLVt. Hence dispersion can be modeled as a random stochastic process about the mean convective travel distance. The dispersive travel distance in the direction of motion (longitudinal dispersion) is given by Prickett et al. (1981):

(2-14)

where: Xd = longitudinal dispersive travel distance (L)
Xc = convective travel distance: V×t (L)
dL = lateral dispersivity (L)
NL = a normal random variable with a mean of zero and a variance of one
(dimensionless)

A second dispersive component (transverse dispersion) orthogonal to the first dispersive component, is defined in a similar manner:

(2-15)

where: Yd = transverse dispersive travel distance (L)
dT = transverse dispersivity (L)
NT = a normal random variable with a mean of zero and a variance of one (dimensionless)

Description of Particle Tracking Approach

Solute transport is simulated using a particle tracking approach. Similar versions of this approach have previously been applied to two-dimensional discrete fracture models (Smith and Schwartz, 1984; Hull et al., 1987). The particle tracking approach represents the concentration of solutes within the solvent (normally water) by a finite number of discrete particles of equal mass. Each particle represents a fraction of the total mass of solute present. Particles are introduced into the modeled region at specified solute sources and removed at encountered sink nodes. At each time step, particles are moved according to a deterministic convective component and a stochastic dispersive component. The convective component, Vt, is proportional and parallel to the velocity vector at the current particle location. The dispersive component, given by Equations (2-14) and (2-15), is proportional to the square root of the convective component.

Average concentrations are determined at the end of each timestep by summing the particle mass within each fracture element and dividing by the mass of fluid within the element. The equation for determining particle concentrations within a specific element is:

(2-16)

where: Np = number of particles in element (dimensionless)
Mp = mass of a single particle (M)
Pw = density of solvent (M/L3)
Ae = area of fracture element (L2)
be = fracture aperture (L)

[more]