influence of numerical precision and equation solution algorithm on computation of kriging weights

41
Computers & Geosciences Vol. 18, No. 9, pp. 1127-1167, 1992 0098-3004/92 $5.00+ 0.00 Printed in Great Britain.All rights reserved Copyright© 1992PergamonPress Ltd INFLUENCE OF NUMERICAL PRECISION AND EQUATION SOLUTION ALGORITHM ON COMPUTATION OF KRIGING WEIGHTS DAN W. MCCARN1 and JAMES R. CARR 2 *P. E. LaMoreaux & Associates, P.O. Box 2310, Tuscaloosa, AL 35403 and 2Department of Geological Sciences, Mail Stop 168, University of Nevada, Reno, NV 89557, U.S.A. (Received I1 December 1991; accepted 12 May 1992) Al~tract---Gausselimination, with and without iterative improvement, is compared to LU decomposition, with and without iterative improvement, for the solution of kriging and universal kriging weights. Two levels of numerical precision, single and double precision, are compared to an extended precision benchmark for accuracy in equation solving. Gauss elimination and LU decomposition yield equivalent accuracies when iterative improvement and double precision are used for each. Without iterative improvement, LU decomposition yields errors which are up to one order of magnitude less than what is obtained with Gauss elimination when double precision is used. The order of the covariance matrix used to solve for kriging weights is an important consideration when attempting to minimize solution errors. In universal kriging, the order of the drift model also exerts an important influence on the errors. Kev Words: Gauss elimination, LU decomposition, Single precision, Double precision, Kriging weights. INTRODUCTION Computer algorithms for kriging may use a Gauss elimination procedure with single precision accuracy for solving for kriging weights (e.g. Carr, Myers, and Glass, 1985; Carr, 1990a; David, 1977; Journel and Huijbregts, 1978, REMS subroutine). Some kriging algorithms solve for kriging weights through iteration (see Journel and Huijbregts, 1978, Reiter subroutine). Double precision for Gauss elimin- ation is employed in some algorithms (e.g. Yates, Warrick, and Myers, 1986). Finally, LU decompo- sition is the preferred equation solution algorithm in many other algorithms; for example, in Geo-EAS (Englund and Sparks, 1988); for indicator simu- lation in Gomez-Hernandez and Srivastava (1990); and for nonconditional/conditional simulation in Davis (1987a, 1987b). Efficiency of Gauss elimination in comparison to LU decomposition is discussed at length in Press and others (1986). Gauss elimination requires approximately 2N3/3 operations to solve for x in the Ax = b linear algebraic system, where N is the order of the square matrix, A. In kriging, because A also is symmetric and diagonalized, the efficiency of Gauss elimination is improved to N3/3 oper- ations by Carr (1990b); also, see Carr and Myers (1990). LU decomposition involves N3/3 oper- ations, regardless of whether the matrix, A, is symmetric and diagonalized, or asymmetric. Fur- thermore, LU decomposition results in less round- off error in comparison to Gauss elimination (see Press and others, 1986, p. 31-38). 1127 CAOEO 181~-C Little, if any, research has been devoted to the investigation of errors inherent to the solution of kriging weights. These errors may be attributable to: (1) the equation solution algorithm; (2) the numerical precision designed into the computer algorithm for kriging (i.e. single, double, or extended precision); and (3) the relationship between these errors and sample geometry. Errors inherent to the equation solution process are not equal in numerical magni- tude to the minimum numerical precision of the computer used for computations; errors are greater than the minimum numeric resolution of the com- puter due to inherent roundoff in Gauss elimination or LU decomposition. Herein we examine errors introduced by the equation solution algorithm. We also examine the spatial aspects of these errors. We also examine the influence of numeric precision on these errors. Finally, a new version of UVKRIG (Carr, 1990a) is presented to take advantage of research discoveries. A BRIEF REVIEW OF EQUATION SOLUTION ALGORITHMS Given a set of linear equations, Ax = b, Gauss elimination is used to solve for x as follows (e.g. Yakowitz and Szidarovszky, 1989, eqs. 2.9 and 2.10, p. 52): Step (I): forward reduction of the matrix, A: (k- 1) __ al~ - 1) a~ ) = a0 a~k-1)a~k -II (1)

Upload: independent

Post on 07-Mar-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Computers & Geosciences Vol. 18, No. 9, pp. 1127-1167, 1992 0098-3004/92 $5.00 + 0.00 Printed in Great Britain. All rights reserved Copyright © 1992 Pergamon Press Ltd

INFLUENCE OF NUMERICAL PRECISION A N D EQUATION SOLUTION ALGORITHM ON COMPUTATION

OF KRIGING WEIGHTS

DAN W. MCCARN 1 and JAMES R. CARR 2 *P. E. LaMoreaux & Associates, P.O. Box 2310, Tuscaloosa, AL 35403 and 2Department of Geological

Sciences, Mail Stop 168, University of Nevada, Reno, NV 89557, U.S.A.

(Received I1 December 1991; accepted 12 May 1992)

Al~tract---Gauss elimination, with and without iterative improvement, is compared to LU decomposition, with and without iterative improvement, for the solution of kriging and universal kriging weights. Two levels of numerical precision, single and double precision, are compared to an extended precision benchmark for accuracy in equation solving. Gauss elimination and LU decomposition yield equivalent accuracies when iterative improvement and double precision are used for each. Without iterative improvement, LU decomposition yields errors which are up to one order of magnitude less than what is obtained with Gauss elimination when double precision is used. The order of the covariance matrix used to solve for kriging weights is an important consideration when attempting to minimize solution errors. In universal kriging, the order of the drift model also exerts an important influence on the errors.

Kev Words: Gauss elimination, LU decomposition, Single precision, Double precision, Kriging weights.

INTRODUCTION

Computer algorithms for kriging may use a Gauss elimination procedure with single precision accuracy for solving for kriging weights (e.g. Carr, Myers, and Glass, 1985; Carr, 1990a; David, 1977; Journel and Huijbregts, 1978, REMS subroutine). Some kriging algorithms solve for kriging weights through iteration (see Journel and Huijbregts, 1978, Reiter subroutine). Double precision for Gauss elimin- ation is employed in some algorithms (e.g. Yates, Warrick, and Myers, 1986). Finally, L U decompo- sition is the preferred equation solution algorithm in many other algorithms; for example, in Geo-EAS (Englund and Sparks, 1988); for indicator simu- lation in Gomez-Hernandez and Srivastava (1990); and for nonconditional/conditional simulation in Davis (1987a, 1987b).

Efficiency of Gauss elimination in comparison to L U decomposition is discussed at length in Press and others (1986). Gauss elimination requires approximately 2N3/3 operations to solve for x in the A x = b linear algebraic system, where N is the order of the square matrix, A. In kriging, because A also is symmetric and diagonalized, the efficiency of Gauss elimination is improved to N3/3 oper- ations by Carr (1990b); also, see Carr and Myers (1990). L U decomposition involves N3/3 oper- ations, regardless of whether the matrix, A, is symmetric and diagonalized, or asymmetric. Fur- thermore, L U decomposition results in less round- off error in comparison to Gauss elimination (see Press and others, 1986, p. 31-38).

1127 CAOEO 181~-C

Little, if any, research has been devoted to the investigation of errors inherent to the solution of kriging weights. These errors may be attributable to: (1) the equation solution algorithm; (2) the numerical precision designed into the computer algorithm for kriging (i.e. single, double, or extended precision); and (3) the relationship between these errors and sample geometry. Errors inherent to the equation solution process are not equal in numerical magni- tude to the minimum numerical precision of the computer used for computations; errors are greater than the minimum numeric resolution of the com- puter due to inherent roundoff in Gauss elimination or L U decomposition.

Herein we examine errors introduced by the equation solution algorithm. We also examine the spatial aspects of these errors. We also examine the influence of numeric precision on these errors. Finally, a new version of UVKRIG (Carr, 1990a) is presented to take advantage of research discoveries.

A BRIEF REVIEW OF EQUATION SOLUTION ALGORITHMS

Given a set of linear equations, A x = b, Gauss elimination is used to solve for x as follows (e.g. Yakowitz and Szidarovszky, 1989, eqs. 2.9 and 2.10, p. 52):

Step (I): forward reduction of the matrix, A:

( k - 1) __ al~ - 1) a~ ) = a0 a~k-1)a~k -II (1)

1128 D.W. MCCARN and J. R. CARR

for i = k + 1 . . . . , n; j = k + 1 . . . . , n + 1; moreover, k ranges from 1 to n - 1; n is the size of the matrix, A; Equation (1) assumes that the vector, b, is ad- joined as the last column of matrix, A.

It is noted further with respect to Equation (1) that the process is initialized by:

a~)=aq, for i = 1 . . . . . n; j = l . . . . . n + l .

Step (2): solve for the nth value of x:

a(n- I) n,n + I ( 2 )

X n -~- a ( n - 1 ) " nn

Step (3): solve for the remaining n - 1 values of x through back substitution:

_ 1 [-a~,-1)_ ~ L , , .+1

a~- l) xj l ,

k = n - 1 . . . . . 1. (3)

Gauss elimination requires approximately N3/3 multiplications, N3/3 additions, and approximately N2/2 divisions. Roundoff error accumulates through these numerical operations.

LU decomposition obtains the solution of the system, Ax = b, by decomposing the matrix, A, into an upper triangular matrix, U, and a lower triangular matrix, L, such that:

A = LU. (4)

Using the Dolittle reduction method (Yakowitz and Szidarovszky, 1989, p. 86; a similar algorithm, Crout's algorithm, is presented in Press and others, 1986), reduction of A into LU is obtained as:

i--1

uij = aij -- ~ l~ukj, (j = 1 . . . . . n) (5) k ~ l

l~= a~- Y~l~ukj , ( j = l . . . . . i - l ) . (6) k = l

Once the matrix, A, is decomposed into LU, we solve for x in two steps:

then

Lz = b (7)

U x --- z. (8)

In these steps, z is solved through back substitution using L and b by solving for zl first, then using this solution to solve for the remaining values, z2 through zu, in this order [i.e. the reverse of Eq. (8)]. Once the vector, z, is known, the vector, x, is solved using U and z by employing the same back substi- tution algorithm that is used for Gauss elimination [Eq. (3)1.

LU decomposition requires approximately one- half the number of numerical operations as does Gauss elimination (i.e. using Crout's algorithm for implementation of the Dolittle reduction method).

Because there are fewer numerical operations involved with LU decomposition, roundoff error is less for this algorithm in comparison to Gauss elim- ination.

lterative improvement

Accuracy of both Gauss elimination and LU de- composition can be enhanced by incorporating itera- tive improvement in the equation solution procedure. Press and others (1986, p. 41-43) present a clear explanation of iterative improvement:

(1) Given that the objective is to solve for x, given the matrix, A, and the vector, b, the solution yielded by either Gauss elimination or LU decomposition is actually a vector, {x + e}, where e represents error;

(2) Using this representation for the solution, we can compute:

A{x +e} = {b +db}

where db is the resulting deviation from the original vector, b. Using this equation, we can solve for db:

A{x + e } - b = d b ;

(3) Subtracting Ax = b from A {x + e} = {b +db} gives:

4e = db;

(4) Substituting for db in this equation gives:

Ae = A { x +e} - b ;

(5) Recall that {x + e} is the solution obtained by using either Gauss elimination or LU de- composition. Therefore, the term in step (4), A {x + e}, is computed easily by multiplying the solution by the original matrix, A. Once this multiplication is complete, the original vector, b, is subtracted from this product. Then, the equation solver, either Gauss elimin- ation or LU decomposition, is employed to solve for e.

Iteration is required in steps (1)-(5), because of roundoff errors. The original solution, {x +e}, is associated with an error, e. This error is solved for in step (5), but the resultant solution is {e + e'}, where e ' is roundoff error in the solution for e. Therefore, iteration is used as follows: iterate through steps (1)--(5) to solve for e; this is actually {e + e'}; subtract this error from {x + e}:

{x + e } - {e + e'} = {x - e'}.

Then, go back to step (4) and substitute {x - e'} for {x +e}, then solve for e again in step (5). Repeat steps (4) and (5) until e' is less than some acceptable value.

Computing kriging weights

ANALYSIS OF ERRORS IN SOLVING FOR KRIGING WEIGHTS

Solution errors are analyzed using UVKRIG (Carr, 1990a), in its original, published form (single precision, Gauss elimination), and in several modified forms: (1) for double precision, Gauss elimination, with and without iterative improvement; (2) for single precision, LU decomposition, with and without iter- ative improvement; (3) for double precision, LU decomposition, with and without iterative improve- ment; and (4) for extended precision (REAL * 16), LU decomposition, with two iterative improvements, as a benchmark. The data set used for calculations is that published in Carr (1990a).

A summary of average absolute errors is shown in Table 1. Average absolute error is determined relative to the REAL * 16, LU decomposition benchmark, such that:

I(estimate~, 16 - estimateTEsT)l Ave. abs. err. =

N (9)

It is apparent in Table 1 that LU decomposition is more accurate than Gauss elimination (using subrou- tine, SOLN3), when no iterative improvement is used. With iterative improvement, however, Gauss elimin- ation and LU decomposition are equally accurate. It is evident further in Table 1 that double precision is more accurate than single precision when solving for kriging weights. To an extent, this statement is aca- demic, but it draws attention to the differences shown in Table 1.

Iterative improvement increases the amount of computer time necessary to obtain a solution for kriging weights. Table 1 shows that, when iterative improvement with single or double precision is used, Gauss elimination and LU decomposition have iden- tical error characteristics. However, to obtain a pre- cise answer without the additional time required for iterative improvement, LU decomposition used with double precision results in the least amount of error.

On the order o f the intersample covariance matrix

A simple summary of the number of calcu- lations required for each equation solver is given

1129

Table 2. Summary of number of calculations associated with different equation solvers

Gauss LU Singular value elimination decomposition decomposition

2N~/3 N3/3 < x < 2N~/3 > 2N 3

in Table 2. (Note: singular value decomposition as an alternate equation solver is discussed later when UVKRIG, V 2.0 is described; its numeri- cal efficiency is described in Table 2. We have dis- cussed previously the roundoff error inherent to both Gauss elimination and LU decomposition; roundoff error also occurs with singular value decomposition. ) Table 2 shows that the number of calculations performed by each equation solver is directly proportional to N 3. In the situation of kriging (or a form of kriging), N is the number of nearest neighboring sample locations used to obtain an estimate, plus additional information for the unbiased condition and, in the situation of universal kriging, the drift mode. If N is 10, the number of calculations performed in equation sol- ution is proportional to 1000. If N is 20, this number is proportional to 8000, an 8-fold increase!

By this example alone, we see that the number of calculations performed during equation solution increases rapidly as N increases. Roundoff error likewise increases rapidly with N because of the increasing number of required calculations to effect a solution. Advocacy of the use of a large (N > 20) number of nearest neighboring sample locations for kriging can be argued against on the basis of this knowledge alone. A value of N in the inter- val [10, 20] perhaps optimizes kriging in light of round-off error.

On cross-validating variogram models

Carr (1990a, p. 227-228) gives cross-validation results for ordinary kriging. This result is com- pared to one obtained with LU decomposition and double precision arithmetic (Table 3). Notice that the average kriging variance differs by 14.5% for the two solutions, moreover, the jack knife

Table 1. Average absolute errors relative to extended precision

MS-DOS 80386 DEC VAX-8300 Solution method REAL * 4 REAL * 8 REAL*4 REAL*8 REAL*16

Gauss 0.474 1 iteration 0.184E-01 3 iterations 0.139E-02 5 iterations 0.146E-02

L U decomposition 0.176 1 iteration 0.418E-02 2 iterations 0.149E-02 3 iterations 0.144E-02

0.147E-09 0.729 0.185E-09 0.118E-26

0.280E-09 0.195 0.532E-10 - - - - 0.451E-02 0.510E-12 - - - - 0.228E-02 0.510E-12 0t

0.408E- 11 0 .289E-02 0.510E-12

tThis is the extended precision benchmark.

1130 D.W. MCCARN and J. R. CARR

Table 3. Gross-validation comparison, single precision, Gauss elimination vs double precision, LU decomposition

REAL * 4, Gauss REAL * 8, LU decomposition

Ave. est. error -0.149E + 01 -0.144E + 01 Ave. sqr. error 0.198E + 04 0.198E + 01 Ave. krig. var. 0.153E + 04 0.180E + 04 Variance error 0.202E + 04 0.202E + 04 Jack knife mean 0.138E + 01 0.119E + 01 Jack knife var. 0.614E + 01 0.455E + 01

Average kriging variance is 14.5% larger for LU decomposition with double precision arithmetic.

Jack knife variance is 34.9% smaller for LU decomposition with double precision arithmetic.

variance differs by 34.9%. These differences are calculated as follows:

% diff, krig. var. = 100(0.179-0.153)/0.179= 14.5

% diff, jack knife var. = 100(0.614 - 0.455)/0.455 = 34.9.

Table 3 shows how substantial the differences can be between equation solvers when numeric precision is considered. Moreover, these results suggest that it may not be possible to cross-validate accurately a variogram model if the kriging variance is used as a criterion, unless the equation solution method is validated for the model; the kriging variance may be as much related to errors inherent in the equation solver as it is related to the variogram model.

It is acknowledged that the practice of cross- validating semivariogram models using the kriging variance as a metric for judging goodness of fit is controversial. Semivariogram parameters, such as the sill, highly influence the value of the kriging variance for each estimate. Because parameters, such as the sill, are manipulated easily, the value of the kriging variance as a cross-validation metric is diminished. This controversy notwithstanding, the point of this paper is that many factors, including numerical precision in an equation solver, influ- ence cross-validation, therefore diminishing its value as a semivariogram model evaluation tool.

On the spatial dependency of equation solver errors

Figures 1-3 illustrate the nonrandom aspect of errors attributable to the equation solver for univer- sal kriging accommodating a quadratic drift model. In each of these figures, the LU decomposition, REAL* 16 precision, two iterative improvement benchmark is shown as the bottom map. At the top of this map, a second map is shown, produced using an equation solver as noted. The difference (error) map is shown as the uppermost map, and is the difference between the two lower maps. It is this difference map which shows that errors are not random spatially, but instead are spatially dependent.

Patterns of errors of similar magnitude are visible in the difference maps. Figure 1, for instance, shows the differences between single and double precision

for LU decomposition with no iterative improve- ment. In Figure 2, we compare the two precision levels for LU decomposition with 1 iterative improve- ment. Now, a distinct zonation is becoming apparent in the pattern of errors, possibly suggesting an influ- ence on these errors from the quadratic drift model. In Figure 3, the pattern of errors is more strongly zoned, with largest errors occurring at the bottom center of the error map; other errors decrease away from this high zone. The circular, zonal patterns which decrease in magnitude away from the high zone at the bottom, center of the map further suggests that the quadratic drift model is exerting an influence on the errors resulting from the equation solver and numeric precision.

Of further note, Figures 4-6 supplement the three previous figures. Figure 4 shows scatter plots of errors, single versus extended precision, for LU de- composition with no iterative improvement. Figures 5 and 6 show similar plots, but for LUdecomposition with 1 and 5 iterative improvements, respectively. In all three of these figures, the plots of kriging variance for extended precision (VARR 16) versus kriging vari- ance error (extended minus single precision) and of the estimate from extended precision (ESTR16) ver- sus estimation error (extended minus single precision) are of note. In Figure 4, vague suggestions of ray patterns are evident in these two plots. In Figure 5, this pattern becomes more visible as one iterative improvement is used for LU decomposition. By Figure 6, ray patterns in the two scatter plots are apparent once 5 iterative improvements are used with LU decomposition. By the time 5 iterative improve- ments are used, errors are close in value to the minimum numeric precision of the computer. We believe these interesting patterns are directly attribu- table to this numeric resolution limit.

UVKRIG, VERSION 2.0

Because LU decomposition is identified as a superior equation solution algorithm, especially when iterative improvement is used, a new version of UVKRIG, V 2.0, is listed in the Appendix. Pro- gram capabilities are listed at the beginning of this program listing.

Estimate E

rror

l j

ABOVE

3.6

IZ~

3.

o-

3.6

~i~,

l~

2.4-

3.

0 m

1.8-

2.4

m

1.2-

1.8

l

0.6-

1.2

0.0

- 0.

6 m

-0.6-

0.0

~m

-1

.2-

-0.6

m

-1.8

- -1

.2

m

-2.4-

-1.8

m

BELO

W

-2.4

ER

RO

R

RE

AL

*4

RE

AL

*16

Kriging Estimates

i I

ABOV

E 12

0.0

!i)iiiT

I 80.0-

12o.

o ~j~

4o.o- 80.0

L[m

0

.0-

40

.0

mm

-4

0.0

- 0.0

m

8o

o

-~o.o

[~

-12o

.o-

-8o.

o m

-160.0- -120.0

l -200.0- -160.0

m

-24

0.0

- -2

00.0

m

-,8o.o- -,~o.o

m BE

LOkJ

-280.0

Fig

ure

1. E

rro

r (d

iffe

renc

e) m

ap f

or L

l; d

ecom

posi

tion

, R

EA

L *

4 p

reci

sion

, w

ith

no

ite

rati

ve i

mp

rov

emen

t, c

om

par

ed w

ith

LU

dec

om

po

siti

on

, R

EA

L *

16

prec

isio

n, w

ith

two

it

erat

ive

imp

rov

emen

ts. T

wo

low

er m

aps

are

esti

mat

ion

res

ults

for

RE

AL

* 4

an

d R

EA

L *

16

prec

isio

n, r

espe

ctiv

ely.

Up

per

mo

st m

ap i

s di

ffer

ence

bet

wee

n tw

o m

aps,

whe

re d

iffe

renc

es

are

attr

ibu

tab

le s

olel

y to

dif

fere

nce

in n

um

eric

al p

reci

sion

.

e- g r~.

<a,

a

Est

ima

te Error

I I

ABOVE

0.07

i lZ~i

i~il)

O. 06-

O. 07

?~

0.0

5-

0.0

6

m

0.0

4-

0.05

1 0

.03

- 0.04

m

oo

2

0.03

1~

ooi-

o o~

m

oo

o

0.01

m

-o.o,- o.oo

m

-o.o~- -o.o,

m

-o.o~- -o.o~

m

BE~O. -o.o3

ER

RO

R

RE

AL

*4

RE

AL

*16

Kriging

Estimates

[ _i

} ABO

VE

120.0

I~

a

o.o

-12

0.0

~

4

0.0

- 8

0.0

m

o

.o-

40

.0

m -4o.o-

o.o

m

-80

.0-

-40

.0

-12o

.o-

-8o.o

m

-160

.0-

-120.0

m

-2oo.o- -160.0

m

24oo ~ooo

m -280.0-

-240.0

m

BE

LOW

-2

80

.0

Ul

Figu

re 2

. E

rror

(,d

iffe

renc

e) m

ap f

or L

U d

ecom

posi

tion

, R

EA

L *

4 p

reci

sion

with

1 it

erat

ive

impr

ovem

ent c

ompa

red

wit

h L

U d

ecom

posi

tion

, R

EA

L *

16

prec

isio

n w

ith 2

ite

rati

ve

impr

ovem

ents

.

Z)

>

Z p-

>

Est

imat

e E

rro

r

i 1

AB

OV

E

0.0

22

i~ii~]

0.016- 0.022

0.0

11

- 0

.01

6

/ 0.006-

0.0

11

1

0.000- 0.006

1 -0

.006

- 0

.00

0

~ -o

.o11-

-0.0

0s

1 -0

.016

- -0

.011

m

-0

.02

2-

-0.0

16

1 -0

.027

- -0

.022

/

-0.0

33-

-0.0

27

1 B

ELO

N -

0.03

3

ER

RO

R

RE

AL

*4

RE

AL

*1

6

Kri

gin

g E

stim

ates

[ j

ABO

VE

120.

0 17

(:ilil

8o.o

- 1

20

.0

~

4o.o 8o.o

l 0.

0-

40.0

-40.0-

0.0

~l

-80.

0-

-40.0

t3

-120

.0-

-80.

0 I1

-1

60.0

- -1

20.0

l

-200

.0-

-160

.0

-240

.0-

-200

.0

I1

-280

.0-

-240

.0

II

BELO

W -

280.

0

I

3. E

rror

(di

ffer

ence

) m

ap f

or L

U d

ecom

posi

tion

, R

EA

L *

4 p

reci

sion

wit

h 5

iter

ativ

e im

prov

emen

ts c

ompa

red

wit

h L

U d

ecom

posi

tion

, R

EA

L

* 16

pre

cisi

on w

ith

2 it

erat

ive

impr

ovem

ents

.

o e" _.

Figu

re

~_,

1134 D.W. McCARN and J. R. CARR

, , , , , , , ,

(% "ulna) £amnb~j

¢, 4,

÷ ¢.

¢ . ¢. ¢,

4*.,. ¢. ¢.

h'i~l:~IVA

00~0~

O0~D

O00tg

0

¢'o

**¢.

% ¢.¢.

\

r

" 1 1 0 ~

" 0 ~

0

~ °

.~t~ ~ '

,pt,

÷

~ ~ o

I l I U I l t ~ A

£

! 0

I

£-

.::°" •

% "

v v

091

O~

• 0

¢.

091

O~

0

O~

O~

O~

~ o

*oo

~ .Z 8 ~

~'_~ =

, ~

,~'~ ~ , . ~

7 • "~ ~

' ~

. ~ ~

~ ~ ' . ~

Computing kriging weights 1135

0 1 " 0

g0"0

90"0

~0'0

T,O'O

00"0

t,O'O"

'~0'0"

~0'0"

o •

o ~,

i,

" 00111g

0

% • o

* o

¢% %

l i

-OOOO8

- 0 0 1 ~

i

0 °

÷ ¢

+

* * * ~ 4 ~ • 4, ,

¢

| ! i f

I l I I ~ t l I ~ A

q,

q Ol'O I ~ 90"0

- ~0"0

. 00"0

. ~,0"0-

~. t'O'O"

I 90"0-

"4

Z [ ' d X £ S 3

0

0 ~

0gq

09[

• 0

m + " 091

e~ o

.r~

0

r~ .

• .i ,4~

.0 < ~ >

2~U

E- u~

eq

0

=

~2

1136 D.W. McCARN and J. R. CARR

" ~0'0 " ~0"0

" ~.0"0 : ~ " f.,O'O

" IO'O " IO'O

- I0"0 - 10'0"

- ~0"0 * * ~ 4" '~"* • ~0"0"

- ~ 0 ' 0 . ~ 0 " 0 "

, , , • r , ~' , , , , , ~0"~ , , ~ , , ~0"0"

(% "iun3) ,(31r~l);uj ] ~ i V A

. [ oooos ~|

I

. , ; | : . ~ |

~ ~ ~ ~ ~ r ~ o or.£.

1

Illt~ntV4A

i

%

i

%

|

~h~IVA

• 000~9

°i " 0000~

0

o

\,

! i i

~UJS~J

@91

- 08

" 0

*%. ~ ~

*%

..o ,-.t

~ 8 0~,. ~ O.,d

~ ~~

... ~ .

~ ' ,~ ~.

~~ ~.

~ ~[-~

8 d z o ~ .;I..7 ~.~

~~

e E

Computing kriging weights 1137

Table 4. Summary of subroutines used for different equation solution algorithms

Algorithm Gauss elimination LU decomposition Singular value decomp.

SOLN3 LUDCMP SVDCMP LUBKSB SUBKSB

lterative improvement Gauss elimination LU decomposition Singular value decomp.

GMPROV MPROVE N/A

Note: to invoke iterative improvement for either Gauss elimination or LU decompo- sition, set the ITER option (see User Documentation at the beginning of UVKRIG V2.0), to a nonzero value in the interval [1, 10].

New capabilities, other than equation solvers, in V 2.0 of UVKRIG include: (1) allowance for up to five nested variogram models; (2) eight (8) different vari- ogram models; (3) an option for grid angle rotation; (4) option for assigning a default value when an estimation location is not kriged; and (5) zonal as well as geometric anisotropy is accommodated. A complete guide for data input, as well as example data sets, is included at the beginning of the program listing.

option greater than zero and less than, or equal to, ten (10) (please see the User's Guide listed at the beginning of the Appendix). Subroutine MPROVE provides iterative improvement for LU decompo- sition, whereas subroutine GMPROV provides iterative improvement for Gauss elimination.

A summary of the subroutines used for the differ- ent equation solvers is provided by Table 4. This table provides some help in understanding the computer algorithm listed in Appendix 1.

Equation solvers

Three different equation solvers are listed in their entirety in the Appendix: SOLN3, a subroutine for Gauss elimination; this subroutine was listed in the original version of UVKRIG (Carr, 1990a); the com- bination of subroutines, LUDCMP and LUBKSB, for LU decomposition; these subroutines are from Press and others (1986); and the combination of subroutines, SVDCMP and SUBKSB is included as a third alternative for singular value decomposition; these subroutines also are taken from Press and others (1986). Singular value decomposition is a preferred equation solver for least-squares problems. We determine that SVD is identical to Gauss elimin- ation or LU decomposition for ordinary kriging; for universal kriging, however, we learn that there is a large difference in the solution yielded by SVD from that yielded by either Gauss elimination or LU decomposition. Nevertheless, in some spatial situ- ations, a solution for the kriging weights may not be possible if the matrix, A, is nearly singular. In this situation, SVD is useful for diagnosing this problem and yielding a solution.

The program listing in the Appendix shows an option for IMSL subroutines, and calls to these subroutines are included in the program. The IMSL subroutines, however, are not listed in the Appendix. These are proprietary subroutines. We leave the calls to these subroutines in the program for users having access to the IMSL library. For these users, UVKRIG V 2.0 is linked simply to the library and the appropriate option for equation solution is selected to make use of these subroutines.

Iterative improvement is allowed in UVKRIG, V 2.0, for both Gauss elimination and LU decompo- sition. Iteration is invoked by setting the ITER

CONCLUSION

Errors in the kriging weights can be substantial depending on the equation solver and the numerical precision employed in the calculations. Gauss elimin- ation and LU decomposition are equally accurate if iterative improvement is used for each. Other- wise, LU decomposition, preferably used with double precision, is the most accurate algorithm.

There is a spatial dependency to the errors whir" occur in solving kriging equations. This was demo, strated herein for universal krig~t~g accommodating a quadratic drift model. In this situation the differences between maps created using single and extended precision showed patterns suggesting a strong influ- ence exerted by the quadratic drift model. This suggests that higher numeric precision is desirable for universal kriging when considering second, or higher, order drift models.

Equation solvers are associated inherently with roundoff error. The number of calculations required is proportional to N 3 and the larger the N, the greater the roundoff error. For this reason, N should be kept as small as is reasonably possible. With kriging, N is roughly equal to the number of nearest neighboring sample locations used for estimation. In using this interpolator, N should be large enough to capture enough spatial information to allow an estimate to be representative, but small enough to minimize roundoff error; we suggest N be restricted to the interval [10, 20].

Acknowledgments--Most of the research presented herein was performed by the senior author while he was a guest scientist at Joanneum Research, Institut F(ir Umwelt Infor- matik, Leoben, Austria. Special thanks is expressed for the

1138 D. W. MCCARN and J. R. CARR

support of Prof. J. Wolf bauer, Joanneum Research, for his support in this research effort. Further thanks are expressed to Forschungsinstitut Ffir Geo-Datenerfassung und -Sys- temanalyse, Montanuniversitaet, Leoben, Austria. The comments of two reviewers substantially improved this manuscript.

REFERENCES

Carr, J. R., 1990a, UVKRIG: a FORTRAN-77 program for universal kriging: Computers & Geosciences, v. 16, no. 2, p. 211-236.

Cart, J. R., 1990b, Rapid solution of kriging equations using a banded Gauss elimination algorithm: Intern. Jour. Mining and Geol. Engr., v. 8, no. 4, p. 393-399.

Carr, J. R., and Myers, D. E., 1990, Efficiency of differ- ent equation solvers in cokriging: Computers & Geosciences, v. 16, no. 5, p. 705-716.

Carr, J. R., Myers, D. E., and Glass, C. E., 1985, Cokrig- ing--a computer program: Computers & Geosciences, v. l l , no. 2, p. 111-128.

David, M., 1977, Geostatistical ore reserve estimation: Elsevier Scientific Publ., Amsterdam, 364 p.

Davis, M., 1987a, Production of conditional simu- lations via the LU triangular decomposition of the

covarianee matrix: Jour. Math. Geol., v. 19, no. 2, p. 91-98.

Davis, M., 1987b, Generating large stochastic simulations-- the matrix polynomial approximation method: Jour. Math. Geol., v. 19, no. 2, p. 99-108.

Englund, E. J., and Sparks, A. R., 1988, Geo-EAS (Geo- statistical Environmental Assessment Software): EPA/600/4-88/033, U.S. EPA (Environ. Protect. Agency), Environmental Monitoring Systems Labora- tory, Las Vegas, Nevada (the user's guide to this program is 170 p.).

Gomez-Hernandez, J. J., and Srivastava, R. M., 1990, ISIM3D: an ANSI-C three-dimensional multiple indi- cator conditional simulation program: Computers & Geosciences, v. 16, no. 4, p. 395-440.

Journel, A. G., and Huijbregts, Ch. J., 1978, Mining geostatistics: Academic Press, London, 600 p.

Press, W. H., Flannery, B. P., Teukolsky, S. A., and Vetterling, W. T., 1986, Numerical recipes: Cambridge Univ. Press, 818 p.

Yakowitz, S., and Szidarovszky, F., 1989, An introduction to numerical computations: Macmillan Publ., New York, 462 p.

Yates. S. R., Warrick, A. W., and Myers, D. E., 1986, A disjunctive kriging program for two dimensions: Computers & Geosciences, v. 12, no. 3, p. 281-314.

APPENDIX

UVKRIG, V2.0 PROGRAM UVKRIG

~WWtWW1kQ~W~1~P~WtWWQWWWWWW~WWWWW~WWWWWWWWWW~WWWWtWW~WtWWW~W~WW~WW~tt~W~W~WW C UVKR IG V2.0

THIS PROGRAM PERFORMS ORDINARY PUNCTUAL KRIGING OR UNIVERSAL PUNCTUAL KRIGING (FOR THREE ORDERS OF DRIFT).

PROGRAM AUTHOR: JAMES R. CARR DEPT. OF GEOLOGICAL SCIENCES UNIVERSITY OF NEVADA'RENO RENO, NEVADA 89557 TEL: 1-702-784-4244 FAX: 1-TO2-784-1T66

NOGIFIED BY:

11 NOV 1990

DAN W. NCCARN (GUEST SCIENTIST) JOANNEUN RESEARCH ROSEGGERSTRASSE 15 A-8700 LEOBEN. AUSTRIA

PRESENT ADDRESS: DAN W. NCCARN P.E. LAMOREAUX & ASSOCIATES P.O. BOX 2310 TUSCALOOSA, ALASAMk 35403 (U.S.A.) TEL: (205)'7~2"5543 FAX: (205)-752-4043

PROGRAM HISTORY: RECEIVED FROM JAMES CARR, U OF NEVADA, OCTOBER 1990 UPDATED THROUGH DECENBER 1990 BY

[NSTITUT FUER UI4WELT INFORI,U~TiK, JOAHHEUN RESEARCH

AND

FORSCHUNGSINSTITUT FUER GEO-DATEHERFASSUHG UHD -SYSTENANALYSE MONTANUNIVERSITAET LEOBEH

Computing kriging weights 1139

BY

D.MCCARN, GUEST SCIENTIST

LAST MODIFICATION: NOVEMBER 14, 1991 BY Jo CARR TO ADD ITERATIVE IMPROVEMENT TO GAUSS ELIMINATION

1. UNIVERSAL KRIGING WITH POLYNOMIAL DRIFT MODEL (UP TO ORDER 3) 2. ORDINARY KRIGING (NAY BE CROSS-VALIDATED WITH COKRIG) 3. CROSS-VALIDATION AT EACH DATA POINT

A. FOR EACH POINT 1. VALUE 2. KRIGING ESTIMATE 3. ERROR 4. KRIGING VARIANCE 5. JACK KNIFE VALUE (ERR**2)/KRIG_VARIAHCE 6. SQRT JACK KNIFE VALUE

B. ERROR SUMMARY 1. AVERAGE ERROR 2. AVERAGE SQUARE ERROR 3. AVERAGE KRIGING VARIANCE 4. VARIANCE OF ERROR (ERROR-NEAN_ERROR)**2/(NKOUNT-1) 5. JACK KNIFE MEAN SUM(JACK_KNIFE VALUES)/MKOUNT 6. JACK KNIFE VARIANCE SUM(J_K_VALUE - J_K_MEAN)**2/(NKOUNT-1) 7 JACK KNIFE S.D.

C. OUTPUT FOR COMPARISON PLOT 1. UVKRIG.GRD (MAXIMUM DEFAULT PRECISION) 2. UVKRIG.OUT

Y,X,VAL,EST,ERR,ERR**2,KRIG_VAR,JH_VAL,SQRT(JN_VAL) 4. GRIDDING

A. CUSTOM OUTPUT FILE CREATION: UVKRIG.LIS: LISTING OF PROGRAM OPTIONS/RESULTS UVKRIG.GRD: ROW,COL,Y-COORD,X-COORD,EST#VAR,SD,PCT.DEV

OUTPUT IS MAXIMUM PRECISION DEFAULT FOR TYPE OF REAL NUMBER FOR USE MITH BENCHNARKING AND NAY BE MULTILINE

UVKRIG.OUT: IOUT = O: Y-COORD,X-COORD,ESTIVAR,SD#PCT.DEV IOUT = 1: BLK NO.,EST,VAR,SD,PCT.DEV

UVKRIG.VAL: EST, VAR, S.D., PCT.DEV B. ORDER OF OUTPUT

IORD = O: SURFER ORDER FOR OUTPUT IORD = 1: UNIRAS ORDER FOR OUTPUT

C. GRID ANGLE ROTATION ANGLE IS MEASURED CLOCKWISE AS A POSITIVE ANGLE OR NEGATIVE FOR COUNTERCLOCIGdlSE. CENTER OF ROTATION IS UPPER RIGHT-HAND CORNER (GXMAX, GYMAX)

D. DEFAULT NOT-KRIGED VALUE ASSIGNS KRIGIHG ESTIMATE, VARIANCE, S.D., AND PCT.DEV TO A DEFAULT MISSING OR NOT-KRIGED VALUE

5. UP TO 5 NESTED VARIOGRAM MODELS AND 10 TYPES: 1 SPHERICAL VARIOGRAM 2 QUADRATIC VARIOGRAM 3 PENTA-SPHERICAL VARIOGRAN 4 EXPONENTIAL VARIOGRAM 5 GAUSSIAN VARIOGRAM 6 H TO THE LAMBDA POldER 7 HOLE EFFECT VARIOGRAM 8 CUBIC VARIOGRAN

6. ZONAL ANISOTROPISM SUPPORTED WITH RATIOS FOR EACH STRUCTURE 7. GEOMETRIC ANISOTROPISM SUPPORTED 8. FORMAT DIRECTED OR DATA DIRECTED READ 9. CHECK FOR NEGATIVE KRIGING VARIANCES

10. SEARCH CRITERIA MILL TAKE ALL POINTS IN SEARCH RADIUS (NOT SET ARBITRARY MAXIMUM LIKE JOURNEL)

C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C

PROGRAM CAPABILITIES:

1140 D . W . McCAR~ and J. R. CARa

11. SELECTABLE EQUATION SOLVER A. DIRECT NAXINUN PIVOT GAUSS ELIMINATION

1, ITERATIVE IMPROVEMENT USING GAUSS ELIMINATION B. DIRECY LU DECORPOSITION USING CROUT'S ALGORITNN

1. ]TERATIVE IMPROVEMENT USING LU DECONPOSITION C. IMSL LOW PRECISION CROUTS ALGORITHM GAUSS ELIMINATION D, IMSL HIGH PRECISION CROUTS ALGORITHM GAUSS ELIMINATION

WITH AUTOMATIC ]TERATIVE IMPROVEMENT

PROGRAM LIMITATIONS: 1. 1500 DATA LOCATIONS (SEE PROGRAMMER'S NOTE BELOW) 2. THREE DRIFT ORDERS (LINEAR, GUADRATIC, OR CUBIC) 3. PUNCTUAL ESTIMATION ONLY

CWWWWWWWWtWWW~WW~WWtWW~WtWt~t~WW~WWWttW~WWW~W~WWW~tWtWWW~WWtW~WWWWW~WW~W CWWQWWwWWWWWW~WWWWwWWWwWtwWWWWwWW~wtWwwW~wwWWwWwtwWwWWWWWWwWWWWWWwW~WWWWwWWWw C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C c C C C C C C C

GUIDE TO DATA INPUT

ALL DATA INPUT IS CONROLLED BY FREE-FORMAT READ STATEMENTS

LINE 1: TITLE OF KRIGING RUN LINE 2: DATA FILE NAME OR * FOR 'THIS FILE'. LINE 3: ISELECT

READ(5,*) ISELECT = 1 (CROSS'VALIDATION) = 2 (GRIDDING)

- LINE 4: VARIOGRANS: NUMBER, NUGGET, GEO.ANIS.ANGLE, RATIO LINE 4A-E: VARIOGRAN TYPE, SILL, RANGE, ANIX, ANIY

READ(5,*) NVARIO, CO,ANGLE,HORIZ CO = NUGGET VALUE FOR VARIOGRAN ANGLE = DIRECTION (0 TO 360) FOR MAJOR AXIS

OF ANISOTROPY (ANGLE = 0.0 FOR ISOTROPIC CASE)

HORIZ = RATIO OF NAJOR AXIS/MINOR AXIS FOR ANISOTROPY (HORIZ = 1,0 FOR ISOTROPIC CASE)

READ(5,*) ITYPE, SILL, RANGE, ANIX, ANIY ITYPE : TYPE OF VARIOGRAN SILL = SILL OF VARIOGRANS RANGE = RANGE OF VARIOGRANS ANIX = RATIO OF X TO Y AXIS ANIY = RATIO OF Y TO X AXIS

LINE 5: ESTIMATION PARAMETERS READ(5,*) N,RADIUS,XNOVAL

N = NININUN NUMBER OF CLOSEST NEIGHBORS USED FOR ESTIMATION RADIUS = SEARCH WINDOU RADIUS XNOVAL = DEFAULT NOT-KRIGED VALUE

LINE 6: STATIONARITY + EQUATION SOLVER OPTION: READ(S,*) ISTAT, ISOLVE, ITER

ISTAT: =0 (STATIONARITY) =1 (1ST ORDER NON-STATIONARITY) =2 (2ND ORDER NON-STATIORARITY) =3 (3RD ORDER NON-STATIONARITY)

ISOLVE: =0 MAXIMUM PIVOT GAUSSIAN METHOD :1 LU DECOMPOSITION WITH ITERATIVE IMPROVEMENT =2 INSL LEQT1F: MAX PIVOT CROUTS ALGORITHM GAUSS ELIM =3 INSL LEGT2F: MAX PIVOT CROUTS ALGORITHM GAUSS ELIN

MITH EQULIBRATION AND PARTIAL PIVOTING =4 SINGULAR VALUE DECONPOSTION NOTE: IMSL ROUTINES ARE NOT [NCLUOED WITH

THIS PROGRAM LISTING; INSL IS A COMNERCIAL, PROPRIETARY SOFTWARE PACKAGE. TO USE INSL ROUTINES WITH THIS PROGRAM, THESE ROUTINES NUST BE LINKED WITH THIS PROGRAN.

Computing kriging weights

ITER: (FOR LU DECOMP ONLY) =0 NO ITERATIVE IMPROVEMENT >0 NUMBER OF ITERATIONS (1 IS USUALLY ENOUGH), MAX 5

LINE 7': DATA FORMAT: DATA, Y'CORDINATE, X'CORDINATE (MAY USE X OR T POSITIONAL COMMANDS) * - FREE FORMAT

FROM NAMED FILE (OR * ~HERE') LINES 1 " ?: SPATIAL DATA:

READ (4,FMT) DATA VALUE, Y'COORDINATE, X-COORDINATE

C * * * * * * * * t , , t * * * , ~ . w , t . ~ w . l t ~ . , ~ . , ~ , t t ~ t w w w w ~ t w w t t ~ w w t ***. i t t , t , ~ . t w * * * ~ w w , t w t t t ~

C GUIDE TO DATA INPUT (CONTINUED) C C NOTE: IF ISELECT = 2 FOR GRIDDING, THEN 2 LINES OF DATA C INPUT MUST BE ADDED BETWEEN LINES 6 AND 7 ABOVE: C C IF (ISELECT = 2) THEN: C C LINE OA: GRID DEFINITION: C READ(S,*) NROW, NCOL, GYMAX, GXI4A~, DIMY, DIMX, ROTGR C NROW = TOTAL NUMBER OF ROIdS IN GRID C NCOL = TOTAL NUMBER OF COLUMNS IN GRID C GYMAX AND GXMAX ARE THE COORDINATES OF THE UPPER C RIGHT HAND CORNER OF THE GRID C DINY = THE DISTANCE IN Y BETWEEN ADJACENT GRID ROWS C PIMX = THE DISTANCE IN X BETWEEN ADJACENT GRID COLUMNS C ROTGR= THE ROTATION ANGLE FOR THE GRID MEASURED AS AN C ANGLE CLOCKWISE FROM THE HORIZONTAL. THE ANGLE C IS FROM GX-GYMAX. C C LINE OB: GRID OUTPUT FILE ORGANIZATION: C READ(S,*) IOUT, IORD C lOUT AND IFMT DEFINE IS OUTPUT TYPE TO FILE 7: C lOUT = O: Y-CCN3RD, X'COORD, EST, VAR C IOUT = 1: BLK NO., EST, VAR C loRD = O: SURFER STANDARD OUTPUT C IORD = 1: UNIRAS ORDER C CWWWWWWWWWWWWIIrW*WWWWWWWWWW*WWttWWWWWW~r * w i t Wllrlt lit wi t www/r wwwwwwwwwt www~w~wwww~wwwww~

Clltllr W,*Wil t * * * * i t **/tWWWltWWWWWWWWWWWWW/r/Ir WWWWWWWWWW~WWWWWW*WWWWWWWWWW~W WWW~WWWWWW~W

C C EXAMPLE 1. OF INPUT DATA: KRIGING VALIDATION C C LINE 000000000111111111122222222223333333333444444444455555555556 C ===u 123456789012345678901234567'89012345678901234567'8901234567890 C 1, UVICRIG: VALIDATION WITH PUBLISHED BENCHMARK APP.2 DATA C 2. * C 3. 1 ISELECT: 1-CROSS-VALIDATION; 2-GRIDDING C 4. 1 ,600.0 ,0 .0 ,1 .0 NVARIO, CO, ANGLE-MAJ.AXIS., HORIZ=I FOR ISOTROPY C 4.A 1,2340.0,10.0,1 .0 ,1 .0 STRUCT 1: ITYPE, SILL, RANGE, ANIX, ANIY RATIOS C 5. 20,100000.0,0.0 N CLOSEST NEIGHBORS, SEARCH RADIUS, DEF.NOKRIG C 6. 0,1,1 STATIONARITY: O=STAT; 1-3=ORD.DRIFT,ISOLVE,ITER C 7. * C 8 . - 172.9,108.399,48.281 C 223.80,107'. 101,66.473 C 87,70,103,764.45.577 C 86.30,102.836,44.97'6 C 135.60,102.283,42.259 C 54.30,100.431,40.756 C (UNTIL EOF ENCOUNTERED) C CWWW*/rWWWWW**It/~WWWWW*WW/tWWWWllr W * / r W W W ~ W ~ W W W * ~ W W W W W * * W t t ~ W W W W * ~ t ~ W ~ W W ~ t ~ t t

C C EXAMPLE 2. OF INPUT DATA: GRIDDING DATA FOR CONTOURING C C L ] NE 000000000111111111122222222223333333333~44444455555555556 C = : := 12365678901234567'890123~567'8901234567'890123~5678901234567'890 C

1141

1142 D . W . McCAg~ and J. R. CAge

C 1. BENCHMARK NO.1 FROM CARR FOR UVKRIG: GRIDDING C 2. * C 3. 2 ISELECT: 1-CROSS-VALID; 2-GRIDDING C 4. 1 ,0 .5 ,0 .0 ,1 .0 NVARIO, CO, ANGLE-MAJ.AXIS ANIS., HORIZ=I FOR ISOTROPY C 4.A 1,2.0,50.0,1.,1." STRUCT 1: ITYPE, SILL, RANGE, ANIX, AMIY RATIOS C 5. 10,100000.0,0.0 N CLOSEST NEIGHBORS, SEARCH RADIUS, DEF.NOKRIG C 6. 2,1,1 STATIONARITY O,~STAT; I-3:0RDER OF DRIFT, ISOLVE, ITER C 6.A 8 ,55 ,36 .15 ,250.0 ,4 .55 ,4 .55 ,0 .0 NROUS,NCOLS,GYNAX,GXNAX,DINY,DINX,ROTGR C 6.B 1,0 IOUT: 0 OR 1, loRD: O-SURFER; 1-UNIRAS. C 7. * C 8.- 6.0,137.86,136.65 C 6.0,94.50,141.59 C 4.0,107.84,143.34 C 7.0,86.72,118.50 C 7.0,66.71,1&3.11 C (UNTIL EOF 1S ENCOUNTERED) C

EXAMPLE 2. OF INPUT DATA: GRIDDING DATA FOR CONTOURING

LIME 000000000111111111122222222223333333333444444444655555555556 ==== 123456789012365678901236567890123656789012365678901236567890

1. TEST FOR UVKRIG USING TULLN CA NG/L 2. * 3. 2 ISELECT: 1-CROSS-VALIDATION; 2"GRIDDING 6. 1 ,100.0 ,0 .0 ,1 .0 NVAR]O, CO, ANGLE-MAJ.AXIS OF ANIS., HORIZ=I FOR ISOTROPY 4.A 1,900.0,2.2,1.,1. STRUCT 1: ITYPE, SILL, RANGE, ANIX, ANIY RATIOS 5. 3,10000.0,0.0 N CLOSEST NEIGHBORS, SEARCH RADIUS,DEF.NOKRIG_VAL 6. 0,2,1 STATIONARITY OuSTAT; I-3uORD.DRIFT, ISOLVE,ITER 6.A 20,65,370.0,755.0,1.0,1.0,0.0 NROMSoNCOLS,GYMAX,GXMAX,DINYoDIMX 6.B 1,1 lOUT-output format; IoND-order O-surfer; 1-uniras 7. (T2,3,F9.0,T1,F9.0,2x,F9.0) 8.0 364.9800 698.7500 90.0000

363.3500 698.7500 59.0000 361.9600 711.6600 77.0000 365.1700 706.0800 115.0000 368.3100 704.1200 101.0000 3&3.3300 714.0600 104.0000 (UNTIL EOF IS ENCOUNTERED)

C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C

STATIC STRUCTURE DIAGRAM FOR IJVKRIG

UVKRIG -CROSSJ-ECHO -EUKRIGI-LEQT1F

~-LEOT2F I-LUBKSS I-LUOCNP I-NPROVEI-LUBKS~ I I I-SOLN31-[option:GNPROV]

"HEAP "REDAT -REOPT -XGAM

I -GRID> -ECHO -EUKRIGI-LEQT1F

I-LEQT2F I-LUa[S. l -LUOONP I "NPROVE ~ - LUBKSB I I I-SOLN31-[option:GNPROV] I-XG~

- HEAP "REDAT -REOPT "XGAH

Computing kriging weights

C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C

C

EQUATION SOLUTION VALIDATION: THE USER SHOULD CROSS-CHECK THE GRIDDED RESULTS AGAINST A HIGHER PRECISION VERSION OF THE RUN USING PROGRAM KRGCNP. THIS PROGRAH USES THE OUTPUT OF UVKRIG.GRD TO COMPARE THE RESULTS. THE HIGHER-PRECISION VERSION SHOULD BE RENAMED:

==========> UVK XX.GRD THE LOWER-PRECISION VERSION SHOULD BE:

= = : = : = = : = : > UVKRIG.GRD OUTPUT IS TO THE FILE:

= : : : = : : : : = > UVKCCI4.LIS THE USER MAY ENTER A 1 LINE TITLE

IF COMPARISON IS SOUGHT AGAINST THE BENCHMARK, THE PROGRAN KRGC16 MAY BE RUN. AFTER USING BENCH1.DAT TO SUPPLY A TEST RUN FOR A PARTICULAR EQUATION SOLVER, KRG16C EXPECTS: THE RESULTS OF THE VAX REAL*16 BENCHNARK TO BE 1N FILE:

==========> UVK 16.GRD THE LOWER-PRECISION INPUT SHOULD BE:

==========> UVKRIG.GRD OUTPUT IS TO THE FILE:

==========> UVKCON.LIS THE USER MAY ENTER A 1 LINE TITLE

BENCHMARK ACCURACY ANALYSIS: A DETAILED STUDY OF THE GRIDDING BENCHMARK (BENCH1.DAT) IS AVAILABLE ON DEMAND FROM JOANNELIN RESEARCH. THE HIGH-ACCURACY BENCHMARK USED WAS OBTAINED AT REAL*16 PRECISION USING LU DECOMPOSITION MITH Z NPROVE ITERATIONS

THIS REPORT DETAILS THE NATURE AND FREQUENCY OF ESTIRATION ERRORS USING TWO HARDMARE PLATFORNS (PC AND VAX), THREE PRECISIONS (REAL*4, REAL*8 AND REAL*16), AND SEVERAL TYPES OF EQUATION SOLVERS.

EFFORT WAS NADE TO ENHANCE THE PRECISION OF THE REAL*4 RESULTS ON THE VAX FOR USE ON THE PC. THE RESULTS INDICATED THAT UNPREDICTABLE, LARGE ERRORS CAN RESULT FRON ILL" CONDITIONED NATRICES AND THAT THE ERROR CAN BE CONTROLLED THROUGH ADEQUATE ANALYSIS AND SOLUTION NETHOOS. A SUNNARY OF AVERAGE ERRORS FOLLOWS NEASURED AS THE SUN(ABS(ESTINATE(REAL*16) - ESTIMATE(TEST)))/N :

. . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I METHOD PC-REAL*6 I PC-REAL*8 I VAX-REAL*4 I VAX-REAL*8 I VAX-REAL*16:

. . . . . . . . . . , . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I I " I I

SOLN3 0.4736 I 0.1465E-08 0.7"285 [ 0.185E-09 I 0.1176E-26 . . . . . . . . . . . . . . . . . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . .

I I !

LEQTIF . . . . . . . . I . . . . . . . . 0.3606 I 0.132E-11 I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II . . . . . . . . . . . . . . . . . . . . . . . . II . . . . . . . . . . . . I . . . . . . . . . . . .

LU DECONP 0.1755 [ 0.2796E-09 0.1954 I 0.53ZE-10 I . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . . I . . . . . . . . . . . .

I I I I " ~ P R O V E D . 0 0 ~ 1 8 I I 0 . 0 0 ~ 5 0 7 I 0 . 5 1 0 E - I ~ I . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . | . .

I .......... I ............ I ............ I ............ I

2*NPROVE 0.00149 I I 0.002876 I 0.510E-12 BENCHMARK . ......... ~ ............ I ............ I . . . . . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . .

I I " I

3*NPROVE 0.00144 I 0.4078E-11 I 0.002891 I 0.510E-12 . . . . . . . . . . " ......... ~ ............ II ............ II ............ I| ............ I ............ i

LEQTZF . . . . . . . . I . . . . . . . . I 0.002891 I 0.510E-12 I . . . . . . . . . . ' I . . . . . . . . . . . . . . . . . . . . . . . | . . . . . . . . . . . . | . . . .

I t . . . . . . . . . . . I . . . . . . . . . ~ . . . . . . . . . . . . I

C C LEQT1F AND LEQT2F ARE PROPRIETARY LICENSED PRODUCTS OF INSL C ~ W ~ t ~ t ~ Q ~ t t t t t ~ t t ~ t ~ t t t t ~ t ~ t t t ~ t t ~ t t t t t ~ t t t ~ t t t t ~ t ~ t t ~ t t t ~

C PROGRNe~ING NOTES: C THESE CODES ARE TO A LARGE DEGREE HARD~ARE INDEPENDENT C TO ALLOW EASY HIGRATION FRON ONE NACHINE TO ANOTHER. HOWEVER, CERTAIN C VERY LINITED DEPARTURES FROM FORTRAN 77 FOR THE VAX ARE AS FOLLOWS: C C O P E N : NINOR VARIATIONS IN THE OPEN STATEMENT NAY REQUIRE C CHANGES FOR THE PC VERSION.

1143

CAGED i S / 9 - - D

1144 D . W . MCCARN and J. R. CARR

C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C c C C C C C C C

REAL*16: NOT AVAILABLE ON THE IBM PC

IMSL: ALL IMSL CALLS ARE RESTRICTED TO ALTERNATIVE MATRIX SOLVERS. THESE ROUTINES ARE NOT SUPPORTED ON THE IBM PC. THEIR USE IS CALLED FOR IF THE FIRST TWO MATRIX SOLVERS CANNOT FUNCTION.

MEMORY LIMITATIONS: THE FOLLOWING PARAMETERS ARE USED THROUGHOUT ALL HOOULES TO DEFINE THE MAXINIJN NUMBER OF DATA POINTS (NPROBE), MAXIMUM NUMBER OF POINTS USED IN CALCULATING A KRIGED ESTIMATE (NSIZE), AND EVENTUALLY THE DIMENSIONS OF THE WORK AND TEMPORARY ARRAYS IN SOME OF THE MODULES.

MEMORY MAY BE A PROBLEM ON THE PC ENVIRONMENT. REQUIREMENTS MAY BE REDUCED SIGNIFICANTLY BY CHANGING THE FOLLOWING PARAMETER STATEMENT IN ALL MODULES:

PARN4ETER (NPROBE = 1500, NSIZE = 50)

IMPLICIT REAL: THREE VERSIONS OF THIS CODE ARE SUPPORTED ON THE VAX:

REAL*4 REAL*8 REAL*16

TWO VERSIONS ARE SUPPORTED ON THE PC: REAL*4 REAL*8

IN ORDER TO CHANGE THE PRECISION, CHANGE IN EVERY NOOULE IMPLICIT REAL*4(A'H,O-Z) TO THE CORRECT PRECISION.

PLEASE NOTE THAT THE ERROR TERM ISDPJ SHOULD, IF POSSIBLE, BE A HIGHER PRECISION THAN THE IMPLICIT REAL.

REAL*8 SOP OR REAL*t6 SDP

VALUES FOR THE SUMMATION MUST BE CONVERTED TO A HIGHER PRECISION BEFORE ADDING: (SUBROUTINE MPROVE)

SDP m SDP + DBLE(A(I ,J))*DBLE(X(J)) SDP = SDP + OEXT(A(I,J))*QEXT(X(J))

EOUAT I ON SOLVERS: PROGRAHNERS AND USERS MAY REFER TO DISCUSSIONS ON THE STABILITY AND ACCURACY OF MATRIX SOLUTIONS IN A NUMBER TEXTS ON NUMERICAL ANALYSIS. THE DISCUSSION IN CHAPTER 2:

PRESS AND OTHERS, 1986, NUMERICAL RECIPES IS AN EXCELLENT INTRODUCTION TO THIS SUBJECT. PLEASE ALSO NOTE THAT THE SOLUTIONS OF THE VARIOUS EQUATION SOLVERS NAY SHOW A DIFFERENT DISTRIBUTION OF ERRORS.

IMSL OPTIONAL SOLVERS SHOULD BE DELETED IN EUKRIG BEFORE MIGRATING TO THE PC. CODE IS FLAGGED INLINE

**************************************************************************** C UVI(RIG V2.O *****************************************************************************

PARAMETER (NPROEE - 1500, NSIZE = 50) IMPLICIT REAL*4 (A'H,O'Z) COMMON /SOLVER/ ISOLVE, ITER, XNOVAL CHARACTER*72 FILNAN, TITLE, PRECIS, FMT COIgION/INFILE/FILNAM, TITLE, PRECIS, INFIL, FNT

PRECIS : IV2.0 UVKRIG: REAL*4 SINGLE PRECISION' C C- ' " FILE 10 IS DEFINED IN THE UVKDAN.COH FILE C

OPEN (UNIT : 10, 1 STATUS " 'OLD I, 2 FILE = ~UVI(R|G..CARR.DAT')

READ ( IO, '(A) ')FILNAM CLOSE (UNIT-10)

Computing kriging weights 1145

IF (F ILNAN( I : I ) .EQ. '*')FILNAN='UVKRIG.DAT' OPEN(UNIT = 5,

FILE = FILNNq, STATUS = ~OLO')

INFIL : 5 READ(5, ' (A) ' )T ITLE READ(S,'(A) ')FILNAN MRITE(*,*)TITLE

IF (F ILNAN( I : I ) .NE. ' * ' ) THEN INFIL : 4 OPEN(UNIT = 4,

FILE = FILNAN, STATUS = 'OLD')

ENDIF

OPEN(UNIT = 6, FILE = ~UVKRIG.LIS', STATUS = sUNKNO~N', FORN : *FORNATTED', RECL = 320)

OPEN(UNIT = 1, 1 EILE = 'UVKRIG.GRD', 2 STATUS = *UNKNOMN ~ , 3 FORM : ~FORNATTED ~ )

OPEN(UNIT = T, FILE = 'UVKRIG.OUT' STATUS = *UNKNOMN', FORN = ~FORNATTED ~ , RECL = 150)

OPEN(UNIT = 8, FILE = ~UVKRIG.VAL ~ STATUS = 'UNKNOMN', FORN = ~FORNATTED ~ , RECL = 1S0)

READ SELECTION OPTION FOR CROSS-VALIDATION OR GRIDDING

READ(S,*) ISELECT

iF (ISELECT .EO. 1) THEN CALL CROSS

ELSEIF (ISELECT .EQ. 2) THEN CALL GRiD

ENDIF

MRITE(* , * ) ' MRITE(*,*)* MRITE(*,*)* ~R ITE( * , * ) ' WRITE(* , * ) '

UVI(RIG.LIS: LISTING OF KRIGING RUN' UVKRIG.OUT: BLK NR., EST, VAR, S.D., PCT.DEW OR Y-COORD, X-COORD, EST, VAR, S.D., PCT.DEV' UVKRIG.GRD: ROM, COL, EST, VAR, S.D., PCT.DEV' I.NKRIG.VAL: EST, VAR, S.D., PCT.DEW

CLOSE (UNIT = 1) CLOSE (UNIT = 4) CLOSE (UNIT = 5) CLOSE (UNIT = 6) CLOSE (UNIT = 7) CLOSE (UNIT = 8) STOP ENO

C UVKRIG V2.0 " SUBROUTINE CROSS

SUBROUTINE CROSS PARANETER (NPROSE = 1500, NSIZE : SO) INPLICIT REAL*~ (A-H,O-Z) DIMENSION P1(2) , P2(2)

I146 D. W. MCCARN and J. R. CARR

C C C

CHARACTER*7'2 FILNAN, TITLE, PRECIS, FNT ~ I I N F I L E I F I L N A N , TITLE, PRECIS, INFIL, FNT DINENSION SILL(5), RANGE(5), ITYPE(5),ANIX(S),ANIY(5) COl(NON /VARGAN/ NVARIO,CO, ITYPE,SILL,RANGE,ANGLE,RNGNAX,

1 HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY COIelON /UNAX/ XNAX, YNAX, XNIN, YMIN, VSTAT(IO) COlel(~ /UKRIG/ Y(NPROSE),X(NPROBE),XDATA(NPROBE) CONNN~ /SOLVER/ ;SOLVE, ITER, XNOVAL DIMENSION B(2),DIS(NSIZE),IHOL(NSIZE),WT(NSIZE),XNEAS(NSIZE)',

2 ERR(NPROBE),AKRIG(NPROBE) REAL*4 JACK(NPROBE), SOJK(NPROBE)

INITIALIZE VARIABLES

ASE = 0 .0 SQE = 0.0 SVK = 0.0 NKOUNT = 0

READ VARIOGRAN PARM~ETERS AND OPTIONS

CALL REOPT(N,ISTAT,KSTAT,RADIUS)

READ SPATIAL DATA

CALL REDAT(NKOUNT)

ECHO THE INPUT DATA

CALL ECHO(NKOUNT,N,RADIUS,ISTAT)

ITITIALIZE THE ESTIMATION PROCEDURE

ANGLE = 0.017453292 * ANGLE XCOS = COS(ANGLE) XSlN = SIN(ANGLE)

C C . . . . ESTINATE THE NAXINUM VARIOGRAN VALUE (TOTSILL) ASSUNING THAT THE C . . . . SILLS OF THE VARIOUS MODELS MAY NOT BE SO ADDITIVE. USE SEARCH RADIUS C . . . . FOR THE NAXIMUN. D.NCCARN C

P1(1) = 0.0 P1(2) = 0.0 IF (RNCJ(AX .LT. RADIUS) THEN

WRITE ( * , * )= NAX INFLUENCE USED TO ESTINATE TOTAL SILL" MRITE ( 6 , * ) ' NAX INFLUENCE USED TO ESTIMATE TOTAL SILL' P2(1) = 0.0 P2(2) = RNGNAX

ELSE MRITE ( * , * ) ' SEARCH RADIUS USED TO ESTINATE TOTAL SILL' WRITE ( 6 , * ) ' SEARCH RADIUS USED TO ESTIMATE TOTAL SILL m P2(1) = 0.0 P2(2) = RADIUS

ENDIF VALUE = XGAM(PI,P2) TOTSILL s VALUE WRITE(*,*) ' TOTAL SILL ASSIGNED AS: ',TOTSILL WRITE(6,*)' TOTAL SILL ASSIGNED AS: ',TOTSILL

46

START THE UNIVERSAL KRIGING: CROSS'VALIDATION NODE

WRITE(6,46)PRECIS,TITLE WRITE(*,47)PRECIS,TITLE FORMAT(1H1,9X,A,/,IOX,A,//,

I 45X, iCROSS VALIDATION l~OEl , / , 2 l X , ' LOC', 3 IX , ' Y-COORDINATE', 4 l X , ' X-COORDINATE', 5 IX , ' SANPLE VALUE', 6 IX,'KRIG ESTIMATE ~, 7 I X , ' ABS. ERROR', 8 1X, IKRIG VARIANCE l ,

Computing kriging weights 1147

C 47'

90

95

96

9 1X,'JACKKN]FE VAL', A 1X,'JACKKNIFE S D ' , / )

FORMAT(1H1,9X,A, / ,10X,A, / / , 1 30X,'CROSS VALIDATION NODE', l , 2 l X , ' LOC', 3 l X , ' Y-COORD', 4 l X , ' X-COORD', 5 1X, ' VALUE', 6 1X, ZKRIG EST. ' , 7 1X,'ABS. ERR.', 8 1X,'KRIG VAR', 9 1X, 'JNIFE V A L ' , / )

DO 100 ] ] = 1,NKOUNT DAT1 = XDATA(I I) B(1) = X ( ] I ) B(2) : Y(II)

FIND THE N CLOSEST LOCATIONS TO LOCATION I ]

KK = 0 DO 90 JJ = 1,NKOUNT IF (JJ .EQ. ] I ) GO TO 90 DX = B(1) " X (JJ ) DY = B(2) " Y(JJ) D]ST = SQRT((DX*XCOS + DY*XSIN)**2 + HOR]Z *

(DYtXCOS " DX*XSIN)**2) IF (D]ST .GT. RADIUS) GO TO 90 KK = KK + 1 ]HOL(KK) = JJ D]S(KK) = DIST IF (KK .GT. 1) THEN

IF (KK .LE. N) THEN SORT DISTANCE VALUES SMALLEST TO LARGEST CALL HEAP([HOL,DIS,KK)

ELSEIF( KK .GT. N) THEN KK = N IF (DIST .LT. DIS(N)) THEN

DIS(N) = DIST IHOL(N) = JJ CALL HEAP(]HOL,D[S,KK)

END]F ENDIF

ENDIF CORT]NUE IF (KK .LE. KSTAT) GO TO 100 CALL EUKRIG (]HOL,B,KK,WT,XHEAS, ISTAT,KZ) EST = 0 .0 DUM1 = 0 .0 DUM2 = 0 .0 D 0 9 ~ K] = 1,KK LL = IHOL(KI) EST = EST + WT(K[) * XDATA(LL) DUM1 = DUN1 + WT(K]) * XMIEAS(KI) CONT]NUE DO 96 J l = 1,KZ K2 = KK + J l DUM2 : DUN2 + WT(K2) * XNEAS(K2) CONT I NUE ]F (]STAT .EQ. O) DUM2 = MT(KK+I) XKR]G = TOTS]LL - DUN1 - DUM2 CHECK FOR NEG. KRIGING VARIANCE IF (XKRIG .LT. 0) THEN

MRiTE ( 6 , * ) m * * * NEGATIVE KR]GING VARIANCE FLAGGED I WR]TE ( 6 , * ) * * * * TRY ALTERNATE SOLVER OR HIGHER PRECISION' MRITE ( * , * ) ' * * * NEGATIVE KR]G]NG VARIANCE FLAGGED I MRITE ( * , * ) * * * * TRY ALTERNATE SOLVER OR HIGHER PRECISION'

END IF ERR( ] I ) = DAT1 - EST AKRIG( ] ] ) : XKRIG JACK( ] ] ) = ERR( I f ) * * 2 / AKRIG( ] ] ) SDJK( ] [ ) : SQRT(JACK(I[)) XA = X ( ] I )

1148 D.W. MCCARN and J. R. CARR

97 98 99 100 C C C

YA = Y ( l l ) WRITE(Z,97)II ,YA,XA,XDATA(II) ,EST,ERR(II) ,AKRIG(II) ,

JACK(I I ) ,SDJK(I I ) WRITE(1,*)I I ,YA,XA,XDATA(JI),EST,ERR(II) ,AKRIG(I]) ,

JACK(I I ) ,SDJK(I I ) WRITE(6,98)I I ,YA,XA,XDATA(II) ,EST,ERR(II) ,AKRIG(l I) ,

JACK(I I ) ,SDJK( l l ) WRITE(*,99)I I ,YA,XA,XDATA(II) ,EST,ERR(II) ,AKRlG(I I) ,JACK(I]) FORMAT(1X, I4,SE16.8) FORMAT(1X,14,SE14.6) FORMAT(IX,14,TEIO.3) CONTINUE

PRINT THE SUMMARY STATISTICS FOR ESTIMATION

2 3 4 5 6 ?

RETURN END

XNERR = 0.0 AJHEAN = 0.0 VJMEAN = 0.0 DO 200 I = 1,NKOUNT XMERR = XNERR + ERR(l) ASE = ASE + ERR(l) * * 2 SVK = SVK + AKRIG(I) AJHEAN = AJNEAN + JACK(1)

200 CONTINUE XMERR = )(HERR / FLOAT(NKOUNT) AGE = ASE / FLOAT(NKCUNT) SVK = SVK / FLOAT(NKOUNT) AJMEAN = AJMEAN / FLOAT(NKOUNT) ASS2 = 0.0 DO 201 ] = 1,NKOUNT ASS2 = (ERR(l) - XNERR) * * 2 + ASS2 VJNEAN = VJMEAN + (JACK(l) " AJMEAN) * * 2

201 CONTINUE ASS2 = ASS2 / FLOAT(NKOUNT " 1) VJNEAN = VJHEAN / FLOAT(NKOUNT - 1) SDVJ = SQRT (VJNEAN) WRITE(6,20S) )(HERR, ASE, SVK, ASS2, AJNEAN, VJNEAN, SDVJ WRITE(*,205) XNERR, ASE, SVK, ASS2, AJNIEAN, VJHEAN, SDVJ

205 FORMAT(//, lOX, 'AVERAGE EST. ERROR : ' ,E17.7, / / , lOX, 'AVERAGE SQUARE ERROR : ',EIT.7, / / , 1OK, 'AVERAGE KRIGING VAR. = ' ,E17.7, / / , IOX, 'VARIANCE OF ERR. : I ,E17.7, / / , lOX, 'JACK KNIFE NIEAM : ',E17.7, / / , IOX, IJACK KNIFE VARIANCE = ',E1T. T, / / , 1OK, 'JACK KNIFE STD DEV. = ' ,E17.Z)

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

C UVKRIG V2.0 - SUBROUTINE EUKRIG * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - * * * * * * * * * * * * * * * * * * * * * * * * *

SUBROUTINE EUKRIG(IHOL,B,KK,Vr,XNEAS, ISTAT,KZ) PARAMETER (NPROBE = |SO0, NSIZE = 50 ) PARAHETER (NWRK m NSIZE * NSIZE + 3 * NSIZE) IMPLICIT REAL*4 (A-H,O-Z) C C l ~ /SOLVER/ ISOLVE, ]TER, XNOVAL CHARACTER*72 FILNAM, TITLE, PRECIS, FHT COHNON/INFILE/FILNAM, TITLE, PRECIS, INFIL, FNT DIHENSION SILL(S), RANGE(S), ITYPE(S),ANIX(S),ANIY(S) CC/4MON /VARGAH/ NVARIO, CO, ITYPE,SILL,RANGE,ANGLE,RNGHAX,

HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY COMMON /UKRIG/ Y(NPROBE),X(NPROBE),XDATA(NPROBE) C(N4NON /LJHAX/ XMAX, YHAX, XMIN, YNIN, VSTAT(|O) DIMENSION IHOL(NSIZE),B(2),WT(NSIZE),XNEAS(NSIZE),

2 A(NSIZE,NSIZE),PI(2),P2(2),U(NSIZE), 3 ALUD(NSIZE,NSIZE),INDX(NSlZE),WORK(NIJRK), 4 TEMP(NSIZE e NSIZE)

THIS SUBROUTINE FORMS THE INTERSAMPLE COVARIANCE MATRIX AND THE POINT-SAMPLE COVARIANCE VECTOR AND CONTROLS SOLUTION OF THE KRIGING WE]GHTS

KK1 = KK + 1

Computing kfiging weights 1149

10

15

C C C C

C

20

C

30

FORN INTERSANPLE COVARIANCE NATRIX PORTION

DO 5 I = I ,NSIZE DO 5 J = I,NSIZE A ( I , J ) = 0 .0 CONTINUE DO 15 K = 1,KK JJ = IHOL(K) P1(1) = X(JJ ) P1(2) = Y(JJ) K I = K + I ZF (KI .LE. KK) THEN

DO 10 J = KI,KK LL = IHOL(J) P2(1) = X(LL) P2(2) = Y(LL) CAN = XGAN(P1,P2) A (K ,J ) = TOTSILL - GAN A(J ,K ) = A(K ,J ) CONTINUE

ENDIF A(K,K) = TOTSILL GN4 = XGAN(B,P1) U(K) = TOTSILL " GAN A(K,KK1) = 1 .0 A(KK1,K) = 1.0 CONTINUE U(KK1) = 1 .0 A(KK1,KK1) = 0 .0

ADD INFORNATION FOR NONSTATIONARITY NODELING IF DESIRED ( I . E . , ISTAT .GT. O)

IF(ISTAT .GT. O) THEN IF (ISTAT .EQ. 1) THEN

1ST ORDER DRIFT IS NOOELED KK2 = KK + 2 KIt3 = KK + 3 DO 20 K = I,KK JJ = IHOL(K) A(K,KK2) = X(JJ) / XNAX A(KK2,K) = A(K,KK2) A(K,KK3) = Y(JJ) / YNAX A(KK3,K) = A(K,KK3) CONTINUE U(KK2) = B(1) / XNAX U(KK3) = B(2) / YNAX KZ = KK + ]

ELSE[F(ISTAT .EQ. 2) THEN 2ND ORDER DRIFT ]S NODELED KK2 = KK + 2 KK3 = KK + ] KK4 = KK + 4 KK5 = KK + 5 KK6 = KK + 6 DO 30 K = 1,KK JJ = INOL(K) A(K,KK2) = X(JJ) / XNAX A(KK2,K) = A(K,KK2) A(K,KK3) = Y(JJ) / YNAX A(KIC3,K) = A(K,KK3) A(K,KK4) = X(JJ) * X(JJ) / (XNAX * XNAX) A(KK4,K) = A(K,KK4) A(K,KK5) = X(JJ) * Y(JJ) / (XNAX * YNAX) A(KK5,K) = A(K,KK5) A(K,KK6) = Y(JJ) * y ( j j ) / (YNAX * YNAX) A(KK6,K) : A(K,KK6) CONTINUE U(KK2) = B(1) / XNAX U(KK3) = B(2) / YNAX U(KK4) = B(1) * S(1) / (XNAX * XNAX)

1150 D. W. MCCARN and J. R. CARR

40

50 C

U(KKS) = B(1) * B(2) / (XNAX * YNAX) U(KK6) = B(2) * B(2) / (YNAX * YNAX) KZ = KK + 6

ELSEXF( ISTAT .EQ. 3) THEN 3RD ORDER DRIFT IS NOOELED KK2 = KK + 2 KK3 = KK + 3 KK4 = KK + 4 KK5 = KK + 5 KK6 = KK + 6 KK7 = KK + 7 KK8 = KK + 8 KK9 = KK + 9 KKIO = KK + 10 DO 40 K = 1,KK JJ = IHOL(K) A(K,KK2) = X(JJ) / XNAX A(KK2,K) = A(K,KK2) A(K,KK3) = Y(JJ) / YNAX A(KK3,K) = A(K,KK3) A(K,KK4) = X(JJ) * X(JJ) / (XNAX ** 2) A(KK4,K) = A(K,KK4) A(K,KKS) = X(JJ) * Y(JJ) / (XNAX * YNAX) A(KK5,K) = A(K,KK5) A(K,KK6) = Y(JJ) * Y(JJ) / (YNAX ** 2) A(KK6,K) = A(K,KK6) A(K,KKT) = X(JJ) ** 3 / (XNAX ** 3) A(KKT,K) = A(K,KKT) A(K,KKS) = X(JJ) * X(JJ) * Y(JJ) / (YNAX*XNAX**2) A(KKB,K) = A(K,KK8) A(K,KK9) = X(JJ) * Y(JJ) * Y(JJ) / (XNAX*YNAX**2) A(KK9,K) = A(K,KK9) A(K,KKIO) = Y(JJ) ** 3 / (YNAX ** 3) A(KKIO,K) = A(K,KKIO) CONTINUE U(KK2) = B(1) / XNAX U(KK3) = B(2) / YNAX U(KK4) = B(1) * B(1) / (XNAX*XNAX) U(KKS) = B(1) * B(2) / (XNAX*YNAX) U(KK6) = B(2) * B(2) / (YNAX**2) U(KKT) = B(1) * * 3 / (XNAX**3) U(KK8) = B(1) * B(1) * B(2) / (YNAX*XNAX**2) U(KK9) = B(1) * B(2) * B(2) / (XNAX*YNAX**2) U(KKIO) = B(2) * * 3 / (YNAX * * 3)

KZ = KK + 10 ENDIF

ENDIF %F (%STAT .EQ. O) KZ : 1 IF (ISTAT.EQ.1) KZ = 3 IF ( ISTAT.EQ.2) KZ = 6 IF ( ISTAT.EQ. ] ) KZ = 10 NNN = KK + KZ

DO 50 I = 1,NNN XNEAS(1) = U ( I )

CONTINUE

IF (ISOLVE .EQ. O) THEN C . . . . . . . . . . . . . . GAUSS ELIN|NATION WITH FULL PIVOTING

DO 55 KI : 1,NNN DO 54 KJ : I,NNN

ALUD(KI,KJ) = A(KI ,KJ) 54 CONTINUE 55 CONTINUE

CALL SOLN3(ALUD, U, WT, NNN) IF (]TER .GT. O) THEN

DO 56 N! = 1 ,NIN( IO, ITER) CALL GNPROV(A, ALUD, NNN, XNEAS, WT)

56 CONTINUE ENDIF

ELSE IF (ISOLVE .EQ. I) THEN C .............. LU DECONPOSITION WITH FULL PIVOTING AND NPROVE

Computing kriging weights

60 70

80

90 C C

DO 70 KI=I,NNN 0060 KJ = 1,NNN

ALUD(KI,KJ)=A(KI,KJ) CONTINUE

CONTINUE CALL LUOCNP(ALUO,NNN,NSIZE,INDX,D) CALL LUBKSB(ALUD,NNN,NSIZE,INDX,U) ]F (ITER .GT, O) THEN

D O 8 0 NI = 1,MIN(IO, ITER) CALL MPROVE(A,ALUO,NNN,NSIZE,INDX,XMEAS,U)

CONTINUE ENDIF DO 90 ! : 1,NNN

MT(1) = U( l ) CONTINUE

C---IMSL ROUTINES FOLLOW: DELETE FROM HERE TO END OF FLAGGED IMSL COOE C C . . . . . . . . . . . . . . ]MSL METHCOS LOW AND HIGH ACCURACY

ELSE IF ()SOLVE .EG. 2) THEN IDGT = 0 CALL'LEQT1F(A, 1, NNN, NSIZE, U, IDGT, WORK, [ER) D095 I = 1,NNN

WT(I) = U( ] ) 95 CONTINUE

IF (IER .EG. 129) THEN WRITE ( * , * ) ' ERROR: LEGT1F: MATRIX SINGULAR' WRITE ( 6 , * ) ' ERROR: LEQT1F: MATRIX SINGULAR'

END IF XF (IER .EQ. 34) THEN

WRITE ( * , * ) ' MARNING: LEQT1F: ACCURACY TEST FAILED' WRITE ( * , * ) ' MARNING: LEQT1F: ACCURACY TEST FAILED'

END IF ELSE IF ([SOLVE .EQ. 3) THEN

IDGT = 0 CALL LEGT2F(A, 1, NNN, NSIZE, U, IDGT, WORK, IER) DO 100 l = 1,NNN

WT(I) : U(1) 100 CONTINUE

IF (IER .EQ. 129) THEN WRITE ( * , * ) ' ERROR: LEQT2F: MATRIX SINGULAR' WRITE ( 6 , * ) ' ERROR: LEQT2F: MATRIX SINGULAR'

END IF IF (IER .EG. 131) THEN

WRITE ( * . ) , WARNING: LEGT2F: ILL CONDITIONED MATRIX' WRITE ( 6 , * ) ' WARNING: LEQT2F: ILL CONDITIONED MATRIX' DO 105 I = 1,NNN

U ( I ) : XMEAS(I) 105 CONTINUE

WRITE ( * . * ) , FIXUP CONTINUING WITH SOLN3' WRITE ( 6 , * ) e FIXUP CONTINUING WITH SOLN3' CALL ~LM3(A,U,MT,NNN)

END IF IF (IER .EQ. 34) THEN

WRITE ( * , * ) ' WARNING: LEQT2F: ACCURACY TEST FAILED' WRITE ( 6 , * ) ' MARNIMG: LEQT2F: ACCURACY TEST FAILED' DO 110 l : 1,NNN

U ( 1 ) : XMEAS(1) 110 CONTINUE

WRITE ( * , * ) ' FXXUP CONTINUING W[TH SOLN3' WRITE ( 6 , * ) ' FIXUP CONTINUING WITH SOLM3 ' CALL SOLN3(A,U,IXr,NNN)

END IF C - - - I M S L ROUTINES: END OF FLAGGED CODE C---DELETE TO THIS POINT FOR PC APPLICATIONS C

ELSEIF (ISOLVE .ED. 6) THEN C---SINGULAR VALUE DECOMPOSITION

DO 212 KI = 1,NNN DO 212 KJ : 1,NNN

ALUD(KI,KJ) : A(KI,KJ)

1151

1152 D. W, McC~a~n and J. R. CARR

Z12 CONTINUE CALL SVDCHP(ALUD, NNN S NHN~ NSIZE, NSIZE, U~ T E l l ) ~AqAX=O.O DO 213 KJ = 1,NNN

IF (U(KJ) .GT. IJNAX) tJMAX = U(KJ) 213 CONTINUE

t@lN = ~lAJ( * 0.000001 DO 214 KJ = 1,NHN

IF (U(KJ) .LT. t&qIN) U(KJ) = 0.0 214 CONTINUE

CALL SUBKSB(ALUD,U,TENP,NNH,HNH,NSIZE,HSIZE,XNEAS,I~r) ELSE

WRITE(*,*) I NATRIX SOLVER NOT DEFINED e, ]SOLVE END]F RETURN END

C LNI~IG V2.0 - SUHOUTINE LUDCI~

SUBROUTINE LUDCNP(A,H,NP, [NOX,D) C FROH: PRESS, ET. AL. , NUNERICAL RECIPES C CROUT~S ALGORITHN - P.31-38

PARAMETER (NPROBE = 1500, NSIZE = 50) PARAMETER (TINY=I.0E-20) [NPLIC]T REAL*~ (A-H~O-Z) DINENSION A(NP,NP)~INDX(N),W(NSIZE) D=I.0 DO 12 [= I ,N

AN4AX = 0.0 DO 1 1 J = I , N

IF (ABS(A(I,J)).GT.AM4AX) ~ = ABS(A( I ,J ) ) 11 CONTINUE

IF (AM4AX .EQ. O.O)PAUSE ~ SINGULAR NATRIX: W ( ] ) = 1.0/AA.NAX

12 CONTINUE DO 19 J = 1,N

DO 1~ [ = 1,J-1 SUN = A ( I , J ) DO 1] K=1,]-1

SUM = SUN - A ( [ , K ) * A ( K , J ) 13 CONTINUE

A ( I , J ) = SUN I~ CONTINUE

AN4AX=O.O DO 16 ] = J,N

SUN = A ( I , J ) DO 15 K = 1,J-1

SUN = SUN " A ( I , K ) * A ( K , J ) 15 CONTINUE

A ( I , J ) = SUN DUN = W(I)*ABS(SUN) IF (DUN ,GE. AN4AX) THEN

IHAX = I AAHAX = DUN

END[F 16 CONTINUE

IF (J .ME. INAX) THEN 00 17 K=I,N

DUN = A(IHAX,K) A(IHAX,K)=A(J,K) A(J,K) = OUN

17 CONTINUE 0 = -D VV(IHAX) = VV(J)

ENDIF INDX(J) = [HAX IF (A (J , J ) .EQ. O.O)A(J,J)=TINY IF (J .HE. N)THEN

DUH = 1 .0 /A (J , J ) DO 18 ]=J+I,N

A( I , J )=A( I , J ) *DUN 18 CONTINUE

Computing kriging weights

ENDIF 19 CONT|NUE

RETURN END

C UVKRIG V2.0 - SUBROUTINE LUBKSB

SUBROUTINE LUBKSB(A,N,NP,|NDX,B) C FROM: PRESS, ET. AL., NUMERICAL RECIPES " P.31-~8

PARAMETER (NPROBE = 1500, NS|ZE = 50) INPLICIT REAL*A (A-H,O-Z) DINENSION A(NPoNP),INDX(N)oB(N) ll=O O0 12 I=I ,N

LL=INDX(I) St.X4=B(LL) B(LL)=B(I) IF (I|.NE.O)THEN

DO 1 1 J = l l , l - 1 SUM=SUN'A(I,J)*B(J)

11 CONTINUE ELSE IF (SUN.NE.O) THEN

II=l ENDIF B(I)=SUM

12 CONTINUE DO 1~ |=N,1,-1

SUM=B(1) IF (I.LT.N)THEN

DO 13 J=I+I,N SUN=SUN-A(;,J)*B(J)

13 CONTINUE ENDIF B(I)=SUM/A(I , I )

14 CONTINUE RETURN END

C UVKR|G V2.O " SUBROUTINE MPROVE

SUBROUTINE MPROVE(A,ALUD,M,NP,INDX,B,X) C FROM: PRESS, ET. AL.~ NUMERICAL RECIPES " P.41"43 C

PARAMETER (NPROBE = 1500, NSIZE = 50) IMPLIC|T REAL*~ (A'H,O'Z) DIMENSION A(NP,NP),ALUD(NP,NP),INDX(N),B(N),X(N),R(NSIZE) REAL*8 SOP DO 12 |=I ,N

SOP=-B(I) DO 11J=I ,N

C==::::==::=:>DOUBLE PRECISION SDP=SDP+DBLE(A(|,J))*DBLE(X(J))

C C=s==-=:u======>EXTENDED PRECISION C SOP=SDP44)EXT(A(|.J))*QEXT(X(J)) 11 CONTINUE

R(1):SDP 12 CONTINUE

CALL LUBKSB(ALUD,N,NP, INDX,R) DO 13 I=1,N

X( I )=X(1) -R(1 ) 13 CONTINUE

RETURN END

C UVKRIGV2.0 - SUBROUTINE OMPROV

SUBROUTINE GHPROV(A, ALUD, N, B, X) C C ADAPTED FROM MPROVE ABOVE; USED MITH SOLN FOR ITERATIVE C IHPROVEHENT FOR GAUSS ELIMINATION C

1153

1154 D.W. MCCARN and J. R. CARS

PARAMETER (NPROBE:1500, NSIZE=50) INPLICIT REAL*4 (A-H,O-Z) DINENSION A(NSIZE,NSIZE), ALUD(NS|ZE,NSIZE)o B(NSIZE) DINENSION X(NSIZE), R(NS|ZE), RR(NSIZE) REAL*8 SOP DO 12 i : 1,N

SOP • -DBLE(B(i)) DO 11 J : 1,N

SOP = SOP + DBLE(A(I,J))*IDBLE(X(J)) 11 CONTINUE

R ( I ) : SOP 12 CONTIMUE

DO 14 I : 1,N DO 14 J • 1,N

ALUD(I,J) = A ( I , J ) 14 CONTINUE

CALL SOLN3(ALUO. R, RR, N) DO 13 I : 1,N

X ( I ) = X ( 1 ) - RR(1) 13 CONTINUE

RETURN END

C UVKRIG V2.0 - FUNCTION SUBPROGRAH XGAN

FUNCTION XGAM(A, B) PARAMETER (NPROBE : 1500, NSIZE : 50) IMPLICIT REAL*4 (A-H,O'Z)

VAR IOGRAM FUNCTION L--wm

C * "

C***

~ .ww

C C C C C C C C

INPUT VARIABLES NVARIO NUMBER OF NESTED VARIOGRAMS CO NUGGET EFFECT SILL(N) C VALUES OF VARIOGRAMS RANGE(N) RANGES OF VARIOGRANS TOTSILL CO PLUS SUN OF C*S ITYPE(NEST) VARIOGRAN TYPE

=1 SPHERICAL VARIOGEAN :2 QUADRATIC VARIOGRAN =3 PENTA'SPHERICAL VABIOGEAN --4 EXPONENTIAL VABIOGRAM =5 GAUSSIAB VARIOGILqM

H TO THE LNqOA POWER =7 HOLE EFFECT VARIOGRAN --8 CUBIC VARIOGEAN

DINENSION SILL(5), RANGE(5), ITYPE(5),ANIXCS),ANIY(5) CCW4ON IVARGAMI NVARIO,CO, ITYPE,SILL,RANGEeANGLE,RNGHAX ~

HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY DIMENSION A ( 2 ) , B ( 2 )

SPHERICAL VARIOGRAM FUNCTION. XGAM IS A VARIOGRAM VALUE. THIS IS USED TO CALCULATE A COVARIANCE VALUE IN SUBROUTINE EUKRIG.

HX m A(1) - S(1) HY - A ( 2 ) - B ( 2 ) COY - CO DO 10000 IVzl,NVARIO

C °- - CALCULATE STRUCTURAL DISTANCE OX m HX * ANIX(IV) DY • HY * ANIY(IV) DIST • SQRT((DX*XCOS + DY*XSlN)**2 + HORIZ *

2 (DY*XCOS - DX*XSIN)**2) H • DIST AA • RANGE(IV) C • SILL(IV) II=ITYPE(IV) IF (II.LE.O.OR.II.GT.IO)GOTO 9000

Computing kriging weights 1155

C C***

100

C C***

200

GO TO (100, 200, 300, 400, 500, 600, 700, 800) ,1I

SPHERICAL VAR IOGRAM CONT l NUE |F (AA.EQ.O)GOTO 9100 1F(H.LT.AA) THEN

HA : H/AA COY = COY + C * (1.5 * HA - 0.5 * (HA*HA*HA))

ELSE COV = COV + C

END I F GO TO 10000

QUADRATIC VAR IOGRAN CONT I MUE IF (AA.EQ.O)GOTO 9100 I F(H.LT.AA) THEN

HA : H/AA COV = COY + C * ( 2 . 0 * HA - HA*HA)

ELSE COV = COY + C

END I F GO TO 10000

C C*** PENTA-SPHERICAL VARIOGRAH

300 CONTINUE IF (AA.EQ.O)GOTO 9100 I F(H.LT.AA) THEN

HA : H/AA COV = COY + C * (1.875*HA'1.25*(HA**3)+O.375*(HA**5))

ELSE COV = COY + C

END ! F GO TO 10000

C C*** EXPONENTIAL VARIOGRAR:

400 CONTINUE IF (AA.EQ.O)GOTO 9100 TEST=-H/AA I F(ABS(TEST). GT .38) GOTO 9300 COV = COY + C * (1.-EXP(TEST)) GO TO 10000

C GAUSSIAN VAR IOGRAH:

500 CONTINUE IF (AA.EQ.O)GOTO 9100 TEST=- (H*H)/(AA*AA) IF(ABS(TEST).GT.~) GOTO 9300 COV : COV + C * (1.-EXP(TEST)) GOTO 10000

C C v~* LINEAR VARIOGRAM C*** C BECOMES THE SLOPE AND M IS 0 < EXP < 2 WHERE ~,=:~ 1 : LINEAR HOOEL

600 CONTINUE IF (AA.LE.O.OR.AA.GE.2) GOTO 9200 COY = COY + C * ( H * * A A ) GO TO 10000

C C e * * HOLE EFFECT VARIOGRAM

700 CONTINUE IF (AA.EQ.O)GOTO 9100 PI=3.141592654"1 .S AHsH*PI/AA IF ( AH .EQ . 0 ) THEN

COV = -1.E+~B ELSE

COV = COV + C * (1 . - (SIN(AH)/AH)) END IF GOTO 10000

!156 D.W. McCAgs and J. R. CARR

C*** CUBIC NGOEL 800 CONTINUE

IF (AA.EQ.O)GOTO 9100 IF(N.LT.AA) THEN

HA = H/AA HA = 7.0*(HA**2)'8.75*(HA**3)+3.5*(HA**S)*O.75*(HA**7) COV = COV + C'HA

ELSE COV = COV+ C

END IF GO TO 10000

C 9000

C 9100

C 9200

C 9300

C 10000

CONTINUE MRITE(*,*) ~COV: INDEX ERROR OCCURRED: HCOEL TYPE : ~ , I I GOTO 10000

CONTINUE MRITE(*,*)~COV: ATTENPT TO DIVIDE BY ZERO (AA)',AA GOTO 10000

CONTINUE MRITE(*.*)~COV: LINEAR HOOEL: 0 < EXP < 2: ~. AA GOTO 10000

CONTINUE MIITE(*,*)*COV: ATTENPT TO EXP >= ABS(~8) ~ GOTO 10000

C C C C

CONTINUE XGAN : COV RETURN END

C UVI(RIG V2.0 - SUBROUTINE SOLN3

SUBROUTINE SOLN3(A,B,C,N) PARAMETER (NPROGE = 1500, NSIZE = 50) PARAMETER (NSIZE1 = NSIZE + 1 ) IHPLICIT REAL*~ (A-H,O-Z) CHARACTER*72 FILNAN, TITLE, PRECIS, FHT COI~/ INFILE/FILNAH, TITLE, PRECIS, INFIL, FMT DINENSION A(NSIZE,NSIZE),B(NSIZE),C(NSIZE),TEMP(NSIZE,NSIZE1) DIMENSION LOC(NSIZE),CK(NSIZE)

HAXIHUMPI~T METH~ ~USS-ELININATION EOUATION ~ L ~ R .

DO 50 I = 1,N CK(1) - 0.0

50 CONTINUE 1 4 P B N ÷ I DO 100 [ = 1,N DO 100 J = 1,N

TEMP(I,J) = A ( I , J ) 100 CONTINUE

DO 200 1 : 1,N TEMP(I,HP) : B ( I )

200 CONTINUE DO600 ! : 1,N

I P z I + I AHAX=O.O DO 300 g - 1,N

IF (N4AX .GE. ABS(TEMP(K,I))) GOTO 300 IF (CX(K) .GT. 0.0) GOTO 300 LOC(|) z g AHAX s ABS(TENP(K,I))

300 CONT I NUE CK(LOC(I)) = 1.0 L " LOC(I) DO 500 J = 1,N

IF (L.EQ.J)GOTO 500 F m - TEMP(J,I) / TEMP(L,I)

Computing kriging weights 1157

DO 400 K = ;P,MP TEMP(J,K) = TEHP(J,K) + F * TEHP(L,K)

400 CONTINUE SO0 CONTINUE 600 CONTINUE

DO 700 I = 1,N L = LOC(I) C(1) = TENP(L,NP) / TERP(L,I) IF (ABS(TERP(Lol)).LT.I.E-6)WRITE(*,*) ' P.D.<I.E-6' ,TEHP(L,I)

700 CONTINUE RETURN END

C UVKRIG V2.0 - SUBROUTINE GRID *****************************************************************************

SUBROUTINE GRID PARAHETER (NPROBE = 1500, NSIZE = 50) IHPLICIT REAL*4 (A'H,O'Z) DINENSION P1(2), P2(2) COMMON /SOLVER/ ]SOLVE, ITER, XNOVAL CHARACTER*72 FILNAN, TITLE, PRECIS, FMT CONMON/INFILE/FILNAN, TITLE, PRECIS, INF1L, FMT C O~140N /IJHAX/ XHAX, YHAX, XHIN, YNIN, VSTAT(IO) DIMENSION SILL(S), RANGE(S), ITYPE(S),ANIX(S),ANIY(5) CONNON /VARGAH/ NVARIO,CO, ITYPE,SILL,RANGE,ANGLE,RNGNAX,

1 HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY CCMNON /UKRIG/ Y(NPROBE),X(NPROBE),XDATA(NPROBE) DINENSION B(2), DIS(NSIZE), ]HOL(NSIZE), WT(NSIZE), XNEAS(NSIZE)

THIS SUBROUTINE CONTROLS GRIDDING. AN OUTPUT FILE IS FORNED: GRID.OUT (UNIT 1) AND TO UNIT 7

READ VARIOGRAN PARANETERS AND OPTIONS

CALL REOPT(N,ISTAT,KSTAT,RADIUS)

DEFINE THE GRID

KOUNT : 0 READ(S,*) NROM, NCOL, GYMAX, GXHAX, DIMY, DIMX, ROTGR READ(S,*) IOUT, IORD

READ SPATIAL DATA

CALL RED~T(NKOUNT)

ECHO DATA INPUT

CALL ECHO(NKOUNT, N, RADIUS, ISTAT)

UNITE (6,1998)NROW, NCOL, GYMAX, GXHAX, DINY, DIHX, ROTGR WRITE (*,1998)NR01/, NCOL, GYNAX, G)OIAX, D/PlY, D i m , ROTGR

1998 FORHAT(//IOX,'GRIDDING PARAI~TERS'//, 1 IOX, 'NUHBER R M : ' , 116,/ , 2 IOX, 'NUMBER COLI, RNS : ' , ! 16 , / , 3 IOX, IGRID Y HAXlHUM : ' , E16.7, / , 4 10X,'GRID X RAXlNUM : ' , E16.7, / , 5 IOX,'GRID Y STEP : l , E16 .7 , / , 6 IOX,'GRID X STEP : ' , E16.7, / , ? IOX, IROTATION ANGLE : ' , E16.7 , / / )

START GR|DDING

YNAX : GYNAX XHAX : GXl4AX ANGLE = 0.017453292 * ANGLE XCOS : COS(ANGLE) XSIN : SIN(ANGLE)

C C . . . . ESTIHATE THE RAXIHUN VARIOGRAN VALUE (TOTSILL) ASSUNING THAT THE

1158 D . W . McCARN and J. R. CARR

C . . . . SILLS OF THE VARIOUS NODELS RAY MOT BE SO ADDXTIVE. USE SERRCII PJM)liJ$ C . . . . FOR THE RAXIMUM. D.NCCARM C

P1(1) : 0 . 0 P1(2) = 0 .0 IF (RMGMAX .LT. PJiDIUS) THEN

MRITE ( * * ) l RAX INFLUENCE USED TO ESTINATE TOTAL SILL ' MRITE ( 6 , * ) ' HA)( INFLUENCE USED TO ESTINATE TOTAL SILL ' P2(1) • 0 .0 P2(2) : RNGMAX

ELSE WRITE ( * , * ) ' SEARCH RADIUS USED TO EST[NATE TOTAL SILL ' WRITE ( 6 , * ) ' SEARCH RADIUS USED TO ESTINATE TOTAL SILL ' P2(1) : 0 . 0 P2(2) • RADIUS

ENOIF VALUE = XGAH(PloP2) TOTSILL : VALUE URITE( * , * ) I TOTAL SILL ASSIGNED AS: ',TOTSILL WRITE(6,* ) ' TOTAL SILL ASSIGNED AS: ',TOTSILL

i~RITE(6,2OOO)PRECIS, TITLE WRITE(*,2OO1)PRECIS, TITLE ROTGR = 0.017453292 * ROTGN

XBEGIN • GXMAX - (FLOAT(MCOL)*I)INX + 0.5 * DINX) YBEGIN • GYNAX + 0 .5 * Di l ly IF (ROTGR .GT. O) THEM

DX = (FLOAT(MCOL) + 0 . 5 ) * DIN]( DY : 0 .5 * D i l ly D • SQRT(DX*DX+DY*I)Y) PHI : ATAN(DY/DX) DXR = D * COS(PHI+ROTGN) DYR = D * SIM(PHI+ROTGN) XBEGIN = GXMAX " DXR YBEGIM = GYNAX + DYR

END IF C C'"WHICH ORDER FOR COLS: 0 = STAMI)ARD; I=IJlilRAS C

IF (IORD .EQ. O) THEN ISTART = 1 IEND : NROW INCR = +1

ELSE ISTART = NROW )END : 1 INCR = -1

ENDIF

CCC C

CCCC C

DO 1000 I I : ISTART, IEMI)oIMCR B(2) - YBEGIN - FLOAT(II) * DINY

DO 1000 IJ • 1,NCOL B(1) = XBEGIN + FLOAT(IJ) * DINX

DX ': FLOAT(IJ) * DIHX DY : FLOAT(I I ) * DINY YR = DY XR " DX

C " " ROTATE X AND Y THROUGH ROTGR IF (ROTGR .ME. O) THEN

0 • SQRT(DX*DX+DY*DY) PHI • ATAN(DY/DX) XR • D * COS(PHI+ROTGR) YR • D * SIN(PHI+ROTGR)

END I F C

B ( 1 ) • XBEGIN + XR B(2) = YBEG]N - YR

C

Computing kfiging weights

C FIND THE N CLOSEST POINTS TO (B(1) ,B(2) ) C

g g = O DO 90 JJ = I,NKOUNT DX = B(1) " X(JJ) DY = B(2) " Y(JJ)

D]ST = SQRT((DX*XCOS + DY*XSIN)**2 + HORIZ * 2 (DY*XCOS - DX*XSIN)**2)

IF (DIST .LE. RADIUS) THEN KK = KK + 1 IHOL(KK) = JJ DIS(KK) = DIST IF (KK .GT. 1) THEN

IF (KK .LE. N) THEN CALL HEAP(IHOL,DIS,KK)

ELSEIF (KK .GT. N) THEN KK = N IF (DIST .LT. DIS(N)) THEN

DIS(N) = DIST IHOL(N) = JJ CALL HEAP(IHOL,DIS,KK)

ENDIF ENDIF

ENDIF ENDIF

90 CONTINUE IF (KK .GT. KSTAT) THEN

CALL EUKRIG(IHOL,B,KK,WT,XNEAS, ISTAT,KZ) EST = 0.0 DUNI = 0.0 DUI42 = 0.0 DO 95 KI = 1,KK LL = IHOL(KI) EST = EST + WT(K]) * XDATA(LL) DUN1 = DLIN1 + WT(KI) * XNEAS(KI)

95 CONTINUE DO 96 J[ = 1,KZ K2 = KK + JI DUI42 = DUN2 + WT(K2) * XMEAS(K2)

96 CONTINUE IF (ISTAT .EQ. O) DUN2 = WT(KK+I) XKRIG = TOTSILL - DUN1 - DUN2

C SO = SQRT(XKRIG) ESTPCT = 100.0 * SO / EST MRITE(6,3000) I I , IJ , B(2), B(1), EST, XKRIG, SO, ESTPCT WRITE(*,3001) I I , IJ , B(2), B(1), EST, XKRIG, SO, ESTPCT MRITE(1,*) I f , IJ , B(2), B(1), EST, XKRIG, SO, ESTPCT

C INCRENENT SUB'BLOCK COUNTER KOUNT = KOUNT + 1 IF (]OUT.EQol) THEN

WRITE(7,*) KOUNT, EST, XKRIG, SD, ESTPCT ELSE

WRITE(7,*) B(2), B(1), EST, XKRIG, SO, ESTPCT ENDIF WRITE(B,*)EST, XKRIG, '31), ESTPCT

ELSE C " " BLOCK NOT KRIGED FLAG

KOUNT = KOUNT + 1 EST = XNOVAL XKRIG = XNOVAL SO = XNOVAL ESTPCT = XNOVAL WRITE(6,3000) I I , IJ , B(2), B(1), EST, XKRIG, SD, ESTPCT WRITE(*,3001) I I , IJ , B(2), B(1), EST, XKRIG, SO, ESTPCT WRITE(I,*) I I , IJ , B(2), B(1), EST, XKRIG, SO, ESTPCT IF (IOUT.EQ.1) THEN

WRITE(7,*) KOUNT, EST, XKRIG, SO, ESTPCT ELSE

WRITE(T,*) S(2), S(1), EST, XKRIG, SD, ESTPCT ENDIF MRITE(8,*)EST, XKRIG, SO, ESTPCT

1159

CAGEO | 8 / ~ - E

1160 D . W . MCCARN and J. R. CARR

1000 C 2000

2001

C 3000 3001

ENDIF CONTINUE

FORMAT(IH1, 9X,A,I ,9X,A,/ / , I lOX, 'GRID RESULTS',//, 2 IX, ' ROW',IX,'COL', 3 2X, ~ Y'COORDINATE', 4 2X,' X'COORDINATE', 5 2X,'KRIG ESTIMATE', 6 2X,'KRIG VARIANCE ~ , 7 2X,'STD.DEVIATION', 8 2X,'PCT.DEVIATION'//)

FORMAT(IN1, 9X,A,I,9X,A,II, 1 10X, 'GRID RESULTS',//, 2 lX, ' ROW',IX,'COL', 3 lX . ' Y-COORDINATE',

lX , ' X-COORDINATE', 5 IX,'KRIG ESTINATE', 6 IX,'KRIG VARIANCE ~ , 7 IX,'STD.DEVIATION', 8 IX,'PCT.DEVIATION'//)

FORNAT(1X,214,6E15.?) FORMAT(1X,214,6E24.16) RETURN END

C UVKRIG V2.O - SUBROUTINE ECHO * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

SUBROUTINE ECHO(NKOUNT,N,RADIUS, ISTAT) PARAMETER (NPROBE = 1500, NSIZE = 50) IMPLICIT REAL*4 (A'H,O-Z) COMMON /SOLVER/ ISOLVE, ]TER, XNOVAL CHARACTER*72 FILNAM, TITLE, PRECIS, FNT COMMON/INFILE/FILNAM, TITLE, PRECIS, ]NFIL, FNT DIMENSION SILL(5), RANGE(5), ]TYPE(5),ANIX(5),ANIY(5) COMMON /VARGAM/ NVARIO,CO#ITYPE,SILL,RANGE,ANGLE,RNGMAX,

1 HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY COMMON /UKRIG/ Y(NPROBE),X(NPROBE),XDATA(NPROBE) COMMON /UMAX/ XNAX, YMAX, XMIN, YNIN, VSTAT(lO)

50

THIS SUBROUTINE PRINTS INPUT INFORMATION

10

WRITE(6,100) PRECIS,TITLE,FILNAM,FNT,NVARIO,CO,ANGLE,HORIZ WRITE(*,IO0) PRECIS,TITLE,FILNAM, FNT,NVARIO,CO,ANGLE,HORIZ DO 10 IV=I,NVAR]O

WRITE(6,101) IV, ITYPE(IV), SILL(IV), RANGE(IV) IV, ]TYPE(IV), SILL(IV). RANGE(IV) WRITE(*,lOl)

CONTINUE WRITE(6,200) N, WRITE(*,200) N, IF (ZSOLVE .EQo

WRITE(6,206) tdtZTE(*,206)

ELSE IF (]SOLVE WRITE(6,2O5)

RADIUS, ISTAT RADIUS, ISTAT 0) THEN

' MAXIMUM PIVOT GAUSS ELIMINATION' J MAXINUM PIVOT GAUSS ELIMINATION' .EQ. 1) THEN

' LU DECOMPOSITION ',ITER WRITE(*,205)' LU DECOMPOSITION ',ITER

ELSE IF (ISOLVE .EQ. 2) THEN WRITE(6,206)' ]NSL: LEQT1F LOW ACCURACY CROUTS ALGORITHM' MR|TE(*,206)' ]NSL: LEQT1F LOt/ ACCURACY CROUTS ALGORITHM'

ELSE IF (ISOLVE .EQ. 3) THEN WRITE(6,206)' ]NSL: LEQT2F HIGH ACCURACY CROUTS ALGORITHM' WRITE(*,206)' [NSL: LEQT2F HIGH ACCURACY CRCUTS ALGORITHM'

ENDIF WRITE(6,210)PRECiS,TITLE MRITE(*,210)PRECIS,TITLE DO 50 ! = 1, NKOUNT URITE(6,3OO) XDATA(]), Y(I ) , X( I ) URITE(*,300) XDATA(]), Y( I ) , X(I) CONTINUE

Computing kriging weights l l6l

C C C 100

C 101

C 200

C 205

2O6

C 210

C 300 C 400

XRNG = XMAX " XMIN YRNG = YHAX " YHIN WRITE(6,~O0) XNIN, XNAX, XRNG, YN]N, YNAX, YRNG ~RITE(*,kO0) XMIN, XNAX, XRNG, YM]N, YMAX, YRNG URITE(6,SOO)(VSTAT(]),I=I,9) WRITE(*,SOO)(VSTAT(I),[=I,9)

FORNATS FOLLOW

FORHAT( IOX,A,I,IOX,A,II,IOX,'F[LE = ' ,A, I I , IOX,'FORMAT = ' , A , / / , IOX, 'PRIHARY VAR[OGRAM PARAMETERS',//, lOX, 'NO. OF STRUCTURES = ',117,1, lOX, 'NUGGET = ' ,E17 .7 , / , lOX, 'ANGLE OF ANIS. = ',E17.7,1, 10X, 'RATIO OF RANGES = ',E17.7,I)

FORNAT( I I , lOX, 2 IOX, 3 • lOX,

lOX,

'PARAMETERS FOR STRUCTURE NO. ' , I 7 , / / , 'TYPE = ' , 117 , / , 'SILL = ' ,E17 .7 , / , ~RANGE = ',E17.7,1)

FORMAT( I I , lOX, 'ESTIHATION PARAHETERS',//, lOX, '# CLOSE NEIGHBORS = ' , 117 , / , IOX, 'SEARCH RADIUS = ',E17.7,/, IOX, 'DRIFT ORDER(ISTAT)= ' , 117 , / )

FORHAT( / / , lOX, 'EQUAT[ON SOLVER SELECTION',l/, 2 lOX, 'METHOD = ' , A , / , 3 lOX, 'NPROVE [TERAT[ONS= ' , ] 1 7 , / )

FORNAT( / / , lOX, 'EQUATION SOLVER SELECTION',I/, 2 10X, 'METHOD = ' , A , / )

FORHAT(1H1, ?X, A,I,IOX,A,II, 1 27)(, 'SPAT[AL DATA',/, 2 15X, 'VALUE' ,16X, 'Y ' ,16X, 'X ' , I )

FORHAT(5X,E17.7,2E17.7)

C 500

FORHAT( / / , 9X,'NIN'NAX OF COORDINATES',//, 1 I O X , ' N ] N . X'COORD = ',E17.7,/, 2 IOX,'HAX. X'COORD = ',E17.7,/, 3 IOX,'RNG. X-COORD = ',E17.7,/,

lOX,'MIN. Y'COORD = ' ,E17 .7 , / , 5 IOX,'HAX. Y-CODRD = ',E17.7,/, 6 IOX,'RNG. Y-COORD = ',E17.7,/)

FORMAT( / / , 1 2 3 4 5 6 7 8 9

RETURN END

(~X,'UNIVARIATE STAT]STICS',//, IOX,'MEAN = ' ,E17 .7 , / , IOX,'VARIANCE = ',E17.7,/, IOX,'STAND.DEVIAT[ON = ',E17.7,/, IOX,~SIQEIalESS = ' ,E1Z.7 , / , IOX,'KUItTOSlS = ',E17.7,/, IOX,'NINIIlJN = ',E17.7,/, IOX,'IMXII4UR = ',E17.7,1, IOX,'RANGE = ~,E17.7,/, IOX,'CO.OF.VARIATION = ',E17.7,1)

C UVKRIG I/2.0 - SUBROUTINE REDAT

SUBROUTINE REDAT(NKUT) PARAMETER (NPRQBE = 1500, NSIZE = 50) [NPLICIT REAL*4 (A-H,OoZ) CHARACTER*72 FILNAH, TITLE, PRECIS, FlIT CGI440N/INFILE/FILNAH, TITLE, PRECIS, INFIL, FMT CGMNC)N /UICR I G/ Y (MPROBE), X(NPROBE ) , XDATA(NPROBE ) CCMNON ~qJI4AX/ XIMX, YMAX, XNIN, YNIN, VSTAT(IO)

C VSTAT(1) = HEAN SUM(X)/N C VSTAT(2) = VARIANCE (SUN(X-SARX)* *2 ) / (N -1 )

1162 D . W . MCCARN and J. R. CAaa

C C C C C C C

VSTAT(3) = STANDARD DEVIATION VSTAT(4) = SKIEMNESS VSTAT(5) = ICURTOSIS VSTAT(6) = MINIIU4 VSTAT(T) = ItAXIRIJI! VSTAT(8) = RANGE VSTAT(9) = COEFFICIENT OF VARIATION

SQRTC(SUM(X-BARX)**2)/(N-1)) (SUM(X-BARX)**3)/N)/VAR**I.5 (SUN(X-BARX)**4)/N)/VAR~*2

C SUBROUTINE TO READ SPATIAL DATA C

READ(S,~(A)~)FNT 10 CONTINUE

IF (FNT.EQ.'*~)THEN READ(INFIL,*,EMD=20) DtJ(1, DUM2, DIJ(3

ELSE READ(INFIL,FNT,EMD=2O) DUN1, IMJN2, DUN3

ENDIF NKOUNT = NKOUNT + 1 XDATA(NKOUNT) = DUN1 Y(NKOUNT) = DUN?. X(NKOUNT) =DUl l ] GO TO 10 CONTINUE 20

C C C

25

40

50

FIND COORDINATE HAXlRA AND CALCULATE SUMMARY STATISTICS

XI4IN = +1.E20 XI4AX = -1.E20 YMAX = )(MAX YHIN = XMIN DO 25 I = 1, 10

VSTAT(I) = 0.0 CONTINUE XN = FLOAT(NKOUNT) VSTAT(6) = +1.E20 VSTAT(7) = -1.E20 DO 40 ! = loNKOUNT

VSTAT(1) = VSTAT(1) + X])ATA(I) IF ( X ( I ) .GT. )OqAX) XMAX = X ( | ) IF ( X ( I ) .LT. XNIN) )OLIN = X ( l ) IF (Y(1) .GT. YMAX) ~ = Y ( I ) IF (Y(1) .LT. YRIN) YMIN = Y(1) IF (XDATA(1) .LT. VSTAT(6)) VSTAT(6) = )(DATA(1) IF ()(DATA(1) .GT. VSTAT(7)) VSTAT(7) = ~I)ATA(1)

CONTINUE VSTAT(1) = VSTAT(1) / FLOAT(N[OUMT) XBAR = VSTAT(1) DO 50 1 = 1,N[OLIMT

VSTAT(2) = VSTAT(2) + Oa)ATA(I) - XBAR)**2 VSTAT(3) = VSTAT(3) + (~)ATA(1) - XBAR)**2 VSTAT(4) = VSTAT(4) + (~I)ATA(1) - XBAR)**3 VSTAT(5) = VSTAT(5) + (XDATA(I) - XBAR)**4

CONTINUE VSTAT(2) VSTAT(3) VSTAT(4) VSTAT(5) VSTAT(8) VSTAT(9) VSTAT(3)

RETURN END

= VSTAT(2) / (XN - 1) = VSTAT(3) / XN = (VSTAT(4)/XN) / (VSTAT(3)** I .5) = ((VSTAT(5)/XN) / (VSTAT(3 ) * *2 ) ) - 3.0 = VSTAT(?) " VSTAT(6) = SQRT(VSTAT(2))/VSTAT(1) = SQRT(VSTAT(2))

CWWW~WWWW~WWW~WWWW~W~WWW~WW~WW~WWWW~WWWWWWWWtW~WWWWWWWW~WWWWW~WW~WWWWWWW~tW~W C UVKRIG V2.0 - SUBROUTINE REOPT C W t t ~ t t ~ t ~ W ~ t ~ t t ~ t ~ t t W ~ t ~ t ~ t ~ t t ~ t W t ~ t t ~ t t t t ~ t t ~ t t t t t ~ t ~ t ~ t t t ~ W ~ t t t

SUBROUTINE REOPT(N,ISTAT,KSTAT,RADIUS) PARAMETER (NPROBE = 1500, NSIZE = 50) IHPLICIT REAL*4 (A-H,O-Z) CHARACTER*72 FILNAM, TITLE, PRECIS, FMT COMMON/INFILE/FILNAM, TITLE, PRECIS, INFIL, FMT DINENSION SILL(5) , RANGE(5), ITYPE(5), ANIX(S), ANIY(5) COMMON /SOLVER/ ISOLVE, ITER, XNOVAL

Computing kriging weights 1163

COMMON /VARGAM/ NVARIO,CO, ITYPE,SILL,RANGE,AHGLE,RNGHAX, 1 HORIZ,XCOS,XSIN,TOTSILL,ANIX,ANIY

SUBROUTINE FOR VARIOGRAM AND OPTION DEFINITION

READ VARIOGRAM PARAMETERS CARD ] AND ~A-E

100

READ(5,*) NVARIO,CO,ANGLE,HORIZ IF (NVARIO.GT.5)NVARIO=5 TOTSILL = CO RNGMAX = 0.0 DO 100 IV = 1, NVARIO

READ(5,*) ITYPE(IV), S ILL( IV) , RANGE(IV), ANIX(IV), AMIY(IV) TOTSILL = TOTSILL + SILL( IV) RNGNAX = NAX(RNGHAX,RANGE(IV))

CONTINUE

READ ESTIMATION PARAHETERS

READ(5,*) N,RADIUS,XNOVAL IF (N .GT. 30) N = 30

READ NON-STATIONARITY PARAHETER:

ISTAT = 0 = STATIONARITY 1 = FIRST ORDER NOH-STATIONARITY 2 = 2ND ORDER NON-STATIONARITY 3 = 3RD ORDER NON-STATIONARITY

READ(5,*) ISTAT, ISOLVE, ITER IF (ITER .NE. O)[TER = ABS(ITER) KSTAT = ISTAT * ISTAT + 2 IF (H .LT. KSTAT) N = KSTAT + 1 RETURN END

C UVKRIG V2.0 - SUBROUTINE HEAP

SUBROUTINE HEAP(RB,RA,N) PARAMETER (NPROBE = 1500, HSIZE = 50) IMPLICIT REAL*4 (A'H,O'Z)

10

FROM: PRESS, ET. AL., NUMERICAL RECIPES PAGES 231 & 232 [SUBROUTINE SORT2]

THIS SUBROUTINE SORTS AN ARRAY, RA, INTO ASCENDING NUMERICAL ORDER USING THE HEAPSORT ALGORITHM, WHILE ALSO REARRANGING RB.

DIMENSION RA(NSIZE) , RB(NSIZE) INTEGER RB,RRB L = O . S W N + I IR = N CONTINUE

IF (L .GT. 1) THEN L = L - 1 RRA = RA(L) RRB = RB(L)

ELSE RRA = RA(IR) RRB = RB(IR) RA(IR) = RA(1) RB(IR) = RB(1) IR = IR - 1 IF ( IR .EO. 1) THEN

RA(1) = RRA RB(1) = RRB RETURN

ENDIF ENDIF I = L J = L + L

1164 D . W . McCARN and J. R. CARR

20 IF (J .LE. IR) THEN IF (J .LT. ]R) THEN

IF (RA(J) .LT. RA(J+I)) J = J + 1 ENDIF |F (RRA .LT. RA(J)) THEN

RA(I) = RA(J) RB(I) = RB(J) 1 = J J u J + J

ELSE J : I R + I

ENi)IF GO TO 20 END l F RA( I ) = RRA R6(1 ) = RRB

GO TO 10 END

C * * * * * * * * * * * * * * * * * * * * * * ~ A , ~ , ~ . - .-- .-- . . . . ;.-- ; ; ..-- . ~ ~ ~ ~ C UVKRIG V2.0 - SUBROIJITINE SVI)I)IP C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - .~.~. . - - .~.-~.-- -- . . . . . . . . . . . ~ . . . . . . ~ ; _ . ~ . ~ . * * * C THIS SUBROUTINE lS TAKEN FROIq PRESS ANO OTHERS, 1986.

SUBROUTINE S90CMP(A,N, N,NP,NP,Id,V) PARAMETER (Ig4AX=IO0, NSIZIE = SO) DIMENSION A(NSIZE,NSIZE), M(NSIZE), V(NSIZE,NSIZE),RVI(NMAX) G=O. 0 SCALE=O. 0 ANORN=O. 0 DO 25 I= l ,N

L=I+I RV1 ( ] )=SCALE*G G=O.O S=O.O SCALE=O. 0 IF ( I .LE.M) THEN

DO 11 K=I,N SCALE=SCALE+ABS( A( K, I ) )

11 CONTINUE IF (SCALE.HE.O.O) THEN

DO 12 K=I,N A(K, I )cA(K, l )/SCALE S=S+A(K, I )*A(K, I )

12 CONTINUE F=A(I, l ) G=-SIGN(SQRT(S), F) H=F*G-S A( I o l )=F-G IF ( ] .HE.N) THEN

DO 15 J=L,N S=O.O DO 13 K=I,N

S=S+A(K, l )*A(K, J) 13 CONTINUE

F=S/H DO 14 K=I,N

k(Ko J)=A(K, J)+F*A(K, l ) 14 CONTINUE 15 CONTINUE

END ] F DO 16 Ks I,N

A(K° ] )=SCALE*A(K, ] ) 16 CONTINUE

END ! F ENDIF IJ(| )--SCALE *G G=O.O S=O. 0 SCALE=O. 0 IF (( ! .LE.M).AND.(! .NE.H)) THEN

DO 17 K=L,N SCALE=SCALE+ABS(A( I , K) )

Computing kriging weights 1165

17

18

19

21

22 23

24

25

26

27

28 29

31

32

33

34

CONTINUE IF (SCALE.NE.O.O) THEN

DO 18 K=L,N A(I,K):A(I,K)/SCALE S=S+A(I,K)*A(I,K)

CONTINUE F=A(I,L) G=-SIGN(SQRT(S),F) H=F*G-S A(I,L)=F-G DO 19 K=L,N

RVI(K)=A(I,K)/H CONTINUE IF (I.NE.H) THEN

DO 23 J=L,M S=O.O DO 21K=L,N

S=S+A(J,K)*A(I,K) CONTINUE DO 22 K:L,N

A(J,K)=A(J,K)+S*RVI(K) CONTINUE

~ONT]NUE ENDIF DO 24 K=L,N

A(],K)=SCALE*A(I,K) CONTINUE

ENDIF ENDIF ANORM=MAX(ANORM,(ABS(W(I))+ABS(RVI(I))))

CONTINUE DO 32 ;=N,1,-1

IF (].LT.N) THEN ]F (G.NE.O.O) THEN

DO 26 J=L,N V(J,I)=(A(I,J)/A(I,L))/G

CONTINUE DO 29 J=L,N

S=O.O DO 27 K=L,N

S=S+A(I,K)*V(K,J) CONTINUE DO 28 K=L,N

V(K,J)=V(K,J)+S*V(K,I) CONTINUE

CONTINUE ENDIF DO 31J=L,N

V(I,J)=O.O V(J,I):O.O

CONTINUE ENDIF V(I,I)=I.0 G-RVI(1) L=I

CONTINUE D039 I=N,I,-I

L=I+I G-W(1) IF (I.LT.N) THEN

DO 33 J=L,N k(l,J)=O.O

CONTINUE ENDIF IF (G.NE.O.O) THEN

G=I.0/G IF (I.NE.N) THEN

DO 36 J=L,N S=O.O DO 34 K=L,N

S=S+A(K,I)*A(K,J) CONTINUE F=(S/A(I,I))*G

1166 D.W. MCCARN and J. R. CARR

35 36

37

38

39

41 1

42

43 2

44

DO 35 K=I,N A(K,J)=A(K,J)+F*A(K,I)

CONTINUE CONTINUE

ENDIF DO 37 J=l,N

A(J,I)=A(J,I)*G CONTINUE

ELSE DO 38 J= I,N

A(J,I)=O.O CONTINUE

ENDIF A ( I , I ) = A ( I , I ) + I . 0

CONTINUE DO 49 K=N,I,-1

DO 48 1TS=1,30 DO 41L=K,1,-1

NN=L-1 IF ((ABS(RVI(L))+ANORN).EQ.ANORM) GO TO 2 IF ((ABS(W(NN))+ANORN)oEQ.ANORN) GO TO 1

CONTINUE C=O.O S=1.0 DO 43 I=L,K

F=S*RVI(1) IF ((ABS(F)+ANORN).NE.MIORN) THEN

G=W(I) H=SGRT(F*F+G*G) WCI)=H H=I.0/H C = (G'H) S=-(F*H) DO 42 J=l,N

Y=A(J,NN) Z=A(J,I) A(J,NN)=(Y*C)+(Z*S) A(J,])=-(Y*S)+(Z*C)

CONTINUE ENDIF

CONTINUE Z:W(K) IF (L.EQ.K) THEN

IF (Z.LT.O.0) THEN W(K)=-Z DO 44 J=I,N

V(J,K)=-V(J,K) CONTINUE

ENDIF GO TO 3

ENDIF IF (ITS.EQ.30) PAUSE 'No convergence in 30 i terat ions' X=W(L) NN=K-1 Y--t4(NN) G=RVI(NN) H=RVI(K) Fz((Y-Z)*(Y+Z)+(G-H)*(G+H))/(2.0*H*Y) G=SQRT(FWF+I.0) F=((X-Z)*(X+Z)+H*((Y/(F+SIGN(G,F)))-H))/X C=1.0 S=I.0 DO 47 J=L,NN

I=J+l G=RVI([) Y=W(I) H=S*G G=C*G Z=SQRT(F*F+H*H) RVI(J)=Z C=F/Z S=H/Z

Computing kriging weights

F= (X*C)+(G*S) G='(X*S)+(GwC) H=Y*$ Y=Y*C DO 45 NN=I,N

X=VCNH,J) Z=V(NK, I) V(NM,J)= (X*C)+(Z*S) V(NM, I)=-(X*S)+(Z*C)

45 CONTINUE Z=SQRT(F*F+H*H) W(J)=Z IF (Z.NE.O.O) THEN

Z=l.0/Z C=F*Z S=H*Z

ENDIF F= (C*G)+(S*Y) X=-(S*G)+(C*Y) DO 46 NN=I,H

Y=A(NH,J) Z=A(NN,]) A(NH,J)= (Y*C)+(Z*S) A(NM, I)='(Y*S)+(Z*C)

46 CONTINUE 47 CONTINUE

RVI(L)=O.O RVI(K)=F W(K)=X

48 CONTINUE 3 CONTINUE 49 CONTINUE

RETURN END

CWWWWtWWtWWtWWW~W~W~WWWWWWWWWWW~WttWQWWW~t~WWW~WtW~W~Wtt~WWWWW~WQWWW~WWW C UVKRIG V2.O - SUBROUTINE SUBKSB ~WWWWtWt~WWWWWWtW~WtWWWWWW~W~WWW~WWt~t~WW1tt~/t1tt~WtW~WW~WtW~tWWWW~W~WWWWW~W C THIS SUBROUTINE [S TAKEN FRON PRESS AND OTHERS, 1986, C SUBROUTINE SVBKSB

SUBROUTINE SUBKSB(U,M,V,N,N,HP,NP,B,X) PARANETER (NHAX:IO0, NSIZE = 50) D[HENSION U(NSIZE,NSIZE), M(NSIZE), V(NSIZE,NSIZE), B(NSIZE) DINENS]ON X(NS[ZE), THP(NHAX) DO 12 J=I,N

S=O. IF(M(J).NE,O.)TNEN

DO 111=I,N S=S+U(I,J)*B(1)

11 CONTINUE S=S/W(J)

ENDIF TNP(J)=S

12 CONTINUE DO 14 J=l,N

S=O. DO 13 JJ=I,N

S=S+V(J,JJ)*THP(JJ) 13 CONTINUE

X(J)=S 14 CONTINUE

RETURN END

1167