Saturday, September 27, 2008

Analytic Elements & Python

It's not often I get to attend a seminar as a participant but I had that chance last week at a seminar taught by Mark Bakker ( and sponsored by SS Papadopulos & Associates ( The topic was the analytic element method and programming in Python. Excellent seminar - highly recommended.

I now understand the hype around Python. It really is a powerful tool and easy to learn (especially if you know a little C or C++). Mark has written his TimML (multi-layer analytic element model) in Python, although the focus of the seminar is writing your own simpler analytic element models. Once you do that, though, TimML is easy to use since the concepts follow from the simpler models.

Look for TimML integration into Groundwater Vistas in the near future! It's multi-layer structure really lends itself to a MODFLOW-style environment.

Transient Boundary Conductance

New in Groundwater Vistas 5.25 Build 2 is the ability to make conductance vary with stress period for rivers, drains, and GHBs. The "K" parameter is now on the transient data spreadsheet for these boundary types. When reading in an older GV file, the default K is placed in the spreadsheet making this backwards compatible with all models. Note that Streams already had a time varying conductance through transient width term.

Thursday, September 18, 2008

New Pest SVD Strategy

John Doherty recently suggested a new strategy for using Singular Value Decomposition (SVD) in Pest. This may be a bit confusing because the acronym SVD is used in two different ways in Pest and in Groundwater Vistas.

Many of you may be familiar with SVD-Assist, which is a way of reducing the number of estimated parameters, especially when calibrating a highly parameterized model (e.g. with pilot points). In Groundwater Vistas Advanced version, this is found on the Model/Pest/SVD Assist menu. To use this procedure, just start at the top and work down one menu item at a time. There are two big advantages of using SVD-Assist. The first is that you can often reduce the run time by a factor of 10. This is done by estimating a linear combination of model parameters called a super parameter. The number of super parameters is often only 5 to 10 percent of the total number of parameters. The utility SVDAPREP does all the work - you just need to tell it how many super parameters you want to use. The number of super parameters can be estimated using the utility SUPCALC (also now accessible in Groundwater Vistas on the SVD Assist menu). The other advantage is that the solution to the inverse problem is often more stable using this approach.

The other SVD used by Pest is a series of options in the Pest Control file. In Groundwater Vistas, this is accessed through Model/Pest/Options at the bottom of the dialog. Simply turn on the option that says "Use Singular Value Decomposition". The other key parameter here is the Eigenvalue threshold below the check-box. When using this type of SVD, the computational effort is the same as a normal Pest run. However, after making the model simulations to assemble the Jacobian Matrix, Pest will not try to estimate parameters that are insensitive (as determined by the Eigenvalue Threshold). This also makes the estimation more stable.

The new strategy suggested by John is to use both together. That is, you use SVD-Assist as you normally would but also turn on the regular SVD within the Pest Control file. In this way, if there are super parameters that are insensitive, Pest will not try to estimate them. The two SVD techniques together make the estimation even more stable. John suggests using an Eigenvalue Threshold of 1e-6 and estimate a few more super parameters than you might ordinarily try to estimate.

Tuesday, September 09, 2008

GV 5.22 Build 4

There have been a few changes lately to end the summer, mostly enhancements:

- We added a quick animation feature to Vistas. Use File/Export Animation. GV will automatically import each time step, starting with the first one and refresh the screen, capture what is there, and export to a bitmap file. Then it will mash them together into a video. If your model is big and/or you have lots of time steps, this may take a while so be patient.

- You can display flooded cells (where water table is above top of layer 1), but sometimes it is handy to figure out how flooded they are. There is a new option under plot/what to display where you can plot only those cells that have at least a certain height of water above the top of layer 1.

- When importing existing models, you are often left with transmissivity and storage in the property databases for confined layers. In many cases, though, it would be handy to have these values listed as K and specific storage (Ss). There is a new option under Props/Property Values/Math Functions where you can divide by layer thickness. Note that this works on all layers if you use that option, and does not discriminate between confined and unconfined layers.

- Modified shapefile export for head-dependent BCs (GHB, river, drain, stream) to export the full conductance and all components of the conductance term. In addition, stream exports now include tributary segments, diversion segment, and reach numbers. On import, you can also now import tributary segment numbers and diversion segment number.

- Lake BC cells were not being split in the same manner as other BCs when adding rows or columns. This was corrected.