lowering the barriers of entry to inverse modeling: pest++ dave welter, computational water resource...
TRANSCRIPT
Lowering the Barriers of Entry to Inverse Modeling: PEST++
Dave Welter, Computational Water Resource EngineeringJohn Doherty, Watermark Numerical Computing
Chris Muffels, S.S. Papadopulos & Assoc. Inc.Matthew Tonkin, S.S. Papadopulos & Assoc. Inc.
Randall J. Hunt, U.S. Geological SurveyWillem A. Schreuder, Principia Mathematica
Marinko Karanovic, S.S. Papadopulos & Assoc. Inc.
CWRE
Acknowledgments
This work was partially completed under contract to the United States Geological Survey. The contents of this article and any opinions stated herein are the responsibility of the authors and do not reflect the policies or opinion of the U.S. Geological Survey.
Purpose
• Port of PEST to an Object Oriented Language (C++)
• Capture most used features in PEST• Open Source / Freely Available– Source code– Executables
Major Components
• Inverse Modeling Code: PEST++• Parallel Run Manager: GENIE• File Management - PESTCommander
PEST ++
• Automatic Calculation of Super Parameter• Built in Normalization• SVD – Guaranteed Stability– Gauss-Marquardt-Levenberg Method
• Compatibility with current PEST Control File• Output Files are compatible with PEST• Statically Linked Executable
Performance Features
• Automatic Intermittent Super Parameter Reorthogonalization
• Rotation Factor• Base Run is Performed in Parallel with
Perturbation Runs when computing jacobian• PROPACK
Extensibility Features
• Object Oriented Design– Inheritance Based Polymorphism• Generic Transformation Interface• Generic Run Manger Interface
• Portability across Platforms– C++ is a mature language governed by ISO
Standards– Minimal External Dependencies
• All source code integrated in Visual Studio
GENIE
• Makes the run management aspect of PEST stand-alone
• Retains the model independent focus of PEST– Using template and instruction file protocols– Can be used with Monte-Carlo runs, Genetic
algorithms• TCP/IP based – exchanges runs across the
Internet like BeoPEST
GMAN(HOST)
Interface RoutineUsed to Communicate Model Runs between the ‘calling program’
and GMAN
GSLAVE(CLIENT / SLAVE)
GenieCalling Program
• A Run Executer– Executes the run on the local
machine
• Run Manager– Communicates model runs to the
slaves
• Interface Routine– handles the TCP/IP
communication with the run manager
GMAN
• Design concerns for the run manager– Scalability• Minimize bottlenecks resulting from HOST
having to process potentially thousands of connections
– Load balancing• Minimize time it takes to finish all runs
PEST Commander• A Parallelization support GUI that:– distributes model files– automatically starts slave computers– Aids in gathering (and analyzing?) results