Krigifier and Kriging Approximation Classes

Anthony Padula, Michael W. Trosset, and Virginia Torczon

While developing numerical algorithms intended to work on complex computer simulations, it is necessary to run many tests on these algorithms in order to ensure their validity and compare the results of different algorithms. However, it is often difficult to obtain many different computer simulations on which to test algorithms. Further, such simulations are often expensive and each tends to have a unique interface.

Thus, it would be useful to be able to create pseudorandom functions that behave like complex computer simulations, but which are fast, have a standard interface, and can be created with specified properties such as taking a given number of inputs and possessing an undelying quadratic trend. To this end we have written the krigifier. It models a stochastic process to generate a set of data with a specified covariance structure, and uses kriging to interpolate this data - thus producing an approximate realization of a stochastic process.

The software posted here is part of an ongoing project to develop a complete, self-contained, C++ class-based implementation of the krigifier. This software was written by Anthony Padula as part of a 2000 Honors Thesis in Mathematics under the direction of Michael W. Trosset and Virginia Torczon.


We thank the National Science Foundation for support received under Grant No. CCR-9734044.

Krigifier and Kriging Approximation Class Source Code


The bracketed links below are to the C++ files for the Krigifier. If you wish to save the files below rather than view them, click on the link with the SHIFT key depressed. With a Netscape browser, this will bring up a "Save As" dialog box.

Compressed File (for all necessary files)

Last Updated : 06/18/2003
You may download all of our files listed below at once in compressed form here. You will still need to download the CLAPACK and F2C files if you don't already have them. To extract files with gnu zip and tar facilities after downloading, use gtar zxvf krig.tgz. If you don't have gtar, use gunzip krig.tgz followed by tar xvf krig.tar instead. If you are having difficulties, consult the manual.
Last Updated 6/18/2003 [krig.tgz]
Library Files [netlibfiles.tgz]
Installation Script [installkrig]
We have provided a script for installing this code. The script presumes you have g++ and g77. Download krig.tgz, installkrig, and netlibfiles.tgz, and then execute the commands: chmod 700 installkrig followed by ./installkrig. You can then use the Makefile as desired.
Be aware that the script is setup to work on a Linux machine with a Intel processor. If you have difficulties, you should modify the script according to the README file that is provided with the libf2c files. In our experience this is where the problems occur.

We suggest obtaining the necessary  F2C and  CLAPACK library files from the Netlib repository. Otherwise, you can simply grab the zipped file which contains all the necessary libraries.
We have some documentation for this software. The documentation is still under review, but we are happy to provide it in its current form. There is compressed postscript file discusses using the Krigifier, Kriging Approximation Class, and the Radial Basis Function Approximation Class. We also have a version of the documentation created using latex2html. Not all of the recent features are discussed, but the basics are covered.
[Krigifier Documentation (GZIPPED PS)] [Krigifier Documentation (HTML)]


Class Files

Randfunc Class [krigify.h] [krigify.cc]
Krigapprox Class [krig.h] [krig.cc]
Parent Class [approx.h]  [approx.cc]
Kriging Approximation with Quadratic Trend [gls.h] [gls.cc]
Library Functions [gamma.h] [gamma.cc]
Demonstration [demo.cc] [demo6.cc]
[demo2.cc] [demo3.cc]
[demo4.cc] [demo5.cc]
Sample Data Files [krig.dat] [krig.dat.good]
[krig.dat.new] [krig.dat.new2]
[gui.dat]
Makefile [Makefile]
Graphical Interface [kriggui.cc] [kriggui.tcl]
Here's a picture of what the graphical interface looks like (YMMV): GUI Krigifier

Borrowed Files

S. Park's Random Number Generator [rngs.h] [rngs.c]
  [rvgs.h] [rvgs.c]
C.M. Siefert's Parameter Estimation Class [ParamEstimate.h] [ParamEstimate.cc]
E. Dolan's Pattern Search Class [PatternSearch.h] [PatternSearch.cc]
E. Dolan's Compass Search Class [CompassSearch.h] [CompassSearch.cc]
P.L. Shepherd Direct Search Class [DirectSearch.h] [DirectSearch.cc]
Vector and Matrix Classes [cppmat.h] [vec.h]
Extra header files [maps_general.h] [Dyn_alloc.h]
[objective.h]
We use the CLAPACK functions dgesv.c, dgesvd.c, dpotrf.c, and dpotri.c.

Other Useful Files

Plot generation utility (requires gnuplot) [plotpoints.c]
Radial Basis Function Approximation Class [rbf.cc] [rbf.h]
Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR OFFERS NO REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.