PEST++: A Parameter ESTimation code optimized for large environmental models

Science Center Objects

The PEST++ software suite is object-oriented universal computer code written in C++ that expands on and extends the algorithms included in PEST, a widely used parameter estimation code written in Fortran. PEST++ is designed to lower the barriers of entry for users and developers while providing efficient algorithms that can accommodate large, highly parameterized problems.

PEST++ OVERVIEW

The PEST++ software suite is object-oriented universal computer code written in C++ that expands on and extends the algorithms included in PEST, a widely used parameter estimation code written in Fortran. PEST++ is designed to lower the barriers of entry for users and developers while providing efficient algorithms that can accommodate large, highly parameterized problems. This effort has focused on: (1) implementing and extending the most popular features of PEST in a way that is easy for novice or experienced modelers to use; and (2) creating a software design that is easy to extend with future advances.

All PEST++ suite source code and its associated libraries, as well as the general run manager source code, have been integrated in the Microsoft Visual Studio® 2013 integrated development environment. PEST++ is known to run on Windows®, Linux®, and Macintosh® operating systems.

The PEST++ code is written entirely in C++. Compilation of the code has been routinely accomplished by using the Intel compilers.

Download PEST++

 

FAQs

How the PEST++ Software Suite differs from PEST

What is new in the PEST++ Software Suite?

Although PEST++ is based on PEST, PEST++ originally implemented a subset of the most used PEST functions and focused on providing simpler and more robust access to the most frequently used capabilities of PEST. With the release of PEST++ Version 3 this approach continued, but also provided new capabilties to the user. PEST capability additions, enhancements, and changes include the following:

  • YAMR (Yet Another run ManageR), a BeoPEST-like integrated TCP/IP run manager has been implented but is generalized thus accessible to other software within and outside the PEST++ suite
  • Global sensitivity analysis (Methods of Sobol and Morris) have been added and can take advantage of the YAMR and other TCP/IP run managers.
  • Linear uncertainty analyses are now directly accessible through PEST++ commands.
  • PEST++ has the ability to automatically switch between native parameters and superparameters without user intervention.
  • The PROPACK singular value decomposition routines for large and sparse matrices have been included for increased computational efficiency.
  • PEST++ has the ability to automatically normalize parameters.
  • Advanced calculation of superparameter derivatives are available.
  • The stand-alone external run manager GENIE Muffels and others (2012) has been updated.
  • Support for including soft-knowledge through Tikhonov Regularization has been added.
  • Gauss-Marquardt-Levenberg (GML) capabilities have been added for determining parameter upgrades.
  • Full restart capabilities are implemented to facilitate seamless stopping and starting of PEST++ runs
  • The user has the ability to save separate comma delimited files for easy plotting of each iteration.
  • A performance log is available to facilitate identifying potential areas to speed actions of the PEST++ suite.

What are some of the limitations of PEST++?

Most notably, the limitations of PEST++ Version 3 are as follows:

  • Use of a full observation covariance weights matrix is not supported.
  • PEST++ does not perform a final run with the best parameters.
  • Jacobian (*.jco) file for superparameter iterations is written in terms of the superparameters. This requires that users map this model output back to the native parameters if they wish to interrogate the contents of the Jacobian matrix in detail.

As PEST++ is developed further, it is expected that the capabilities will increase and the disparity between PEST and PEST++ will decrease. The www.pesthomepage.org description of PEST++ can be found here.

 

Compatibility with PEST

Will my PEST control file (*.pst) run in PEST++?

Yes, to make switching between PEST++ and the additional capabilities in PEST easier, PEST++ reads variables and structure of the PEST control file. PEST++ relies on the structure of the PEST input file to set PEST++ input, but reads only those input that are necessary for PEST++ operation. Information in the PEST control needed to invoke PEST++ capabilities is specified on lines starting with "++". PEST++ input can reside in a single section at the end of the PEST control file, but structuring the file as such is not required; this information does not need to be contiguous and can reside anywhere in the PEST control file. Lines starting with "++#" are considered comments and are ignored. Appendix 1 of Welter and others (2015) describes this compatibility in more detail.

Will PEST read my PEST++ control file?

Yes, PEST has been modified by the author John Doherty to ignore lines starting with "++" in the PEST control file.

Do the PEST utilities work with PEST++?

This was a design goal of PEST++. In order to facilitate use by experienced PEST users, PEST++ adopts many of the conventions, variable names, and output formats of the original PEST. PEST++ was designed to make input and output compatible with the large number of existing PEST utilities. However, PEST++ does not contain all capabilities of PEST. Therefore, any utilities that assume a PEST input or output not included in PEST++ will not work.

 

Published PEST++ Reports, Articles, and Related Background Material

(See the Publications tab above for links to other official USGS publications.)

Anderson, M.P., Woessner, W.W. and Hunt, R.J., 2015, Applied Groundwater Modeling: Simulation of Flow and Advective Transport (2nd Edition). Academic Press, Inc. 564 p. ISBN 9780120581030.

Dahlstrom, D.J., and Carter, J.T.V., 2013, Inverse Modeling with PEST++ and GENIE. Groundwater 51(2): 162-167. doi:10.1111/gwat.12021

Doherty, J., 2014a, PEST, Model-independent parameter estimation-User manual (5th ed., with slight additions): Brisbane, Australia, Watermark Numerical Computing.

Doherty, J., 2014b, Addendum to the PEST manual: Brisbane, Australia, Watermark Numerical Computing.

Doherty, J., 2015, PEST - The Book: Calibration and Uncertainty Analysis for Complex Environmental Models. Watermark Numerical Computing, Brisbane, Australia, ISBN: 978-0-9943786-0-6, 227 p.

Welter, D.E., Doherty, J., Muffels, C.T., Tonkin, M.J., Hunt, R.J., Schreüder, W.A., and Karanovic, M., 2011, Lowering the Barriers of Entry to Inverse Modeling: PEST++, in MODFLOW and More 2011: Integrated Hydrologic Modeling, Proceedings of the 10th International Conference of the International Ground Water Modeling Center. Golden, CO: Colorado School of Mines.