influence of numerical precision and equation solution algorithm on computation of kriging weights
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