cloning

by Nate Hekman on February 19, 2008

Continuing from last week’s “common dialog box concepts“, today’s topic is not sheep, but cloning objects in GeoStudio.

The Add button with New and Clone menuMost GeoStudio dialog boxes that contain lists of objects have an Add button that’s split into two parts.

If you click the arrow on the button, you get a menu presenting you with different options for Adding an object.

Most of the time one option in the list (typically “New”) will be in bold.  That means it’s the default option, so if you had just clicked the main part of the Add button rather than the arrow, that’s the command that would be run.

  • New: The “New” command creates a new object with default (or undefined) values.  It gets a generic name (like “New Material (2)”) and its properties are undefined or set to reasonable defaults.
  • Clone:  The “Clone” command makes a copy of the object that’s currently selected.  It gets the same name but appended with a unique number (like “Foundation Material (2)”) and its properties are exact copies of the original.

“Clone” is great for experimenting with variations of a property.  You can clone your soil a few times and give each a different hydraulic conductivity, for example, then clone your analysis and use a different soil in each analysis.  Solve them all and compare the results.

Cloning Analyses

The “Add” button for KeyIn Analyses is different from other Add buttonsKeyIn Analyses is slightly different.  I’ll try to explain the reasoning behind the differences, but stop me (or leave a comment) if you have any questions.

KeyIn Analyses was designed to be different in an attempt to avoid common mistakes, save you some clicks, and nudge you in the direction we intended multiple analyses to be used. 

We had a lot of iterations on this feature before converging on what we have today, because so many people use the software in so many different ways! 

“Clone” is the default action for the Add button here. 

Unlike most objects, you can’t just create a “New Analysis” because there are so many different kinds of analyses to make.  Cloning an analysis works just like cloning anything else–it makes an exact copy, only modifying the name slightly to make it unique.  Everything else is cloned, including all the “associations”, such as which materials are assigned to regions, which BCs are used, and so on.

If you clone an analysis and solve it, you should get exactly the same answers as the original.

Adding an analysis of the same kind is a partial clone.

That needs explanation!

Let’s say you have a Steady-State SEEP/W analysis selected, and you click Add – SEEP/W Analysis – Transient. 

Starting with a SEEP/W Steady-State, we add a SEEP/W Transient

Here’s what happens:

  • Because both analyses are SEEP/W (the same “kind” in our lingo), we start by cloning–making an exact duplicate.  That way the new analysis has the same material associations, boundary conditions, and so on.
  • We change the analysis “type” (from Steady-State to Transient).
  • If the new analysis has some initial conditions that can be satisfied by the original analysis, we make the new analysis a child and set those initial conditions to come from the parent.  In our example, a transient SEEP/W analysis can get initial head/PWP conditions from another SEEP/W analysis.

You end up with this:

The new analysis was cloned, then was linked to the original as a child

The reasoning behind this feature is that it follows the most common workflow:  set up the initial state using a steady-state analysis, followed by a transient analysis.

If you had a steady-state analysis and you then created another steady-state, the new one would be an exact clone, a “sibling” to the original rather than a child, because a steady-state analysis has no initial conditions to get from a parent.  This is the scenario you’d use when you want to try several similar analyses but vary some parameter.

Adding an analysis of a different kind is a “new”

If you start with a steady-state SEEP/W analysis and then add a SIGMA/W Load/Deformation analysis, the first step is different:

  • We don’t clone the original because the new analysis is a different “kind” (SIGMA/W rather than SEEP/W).  Instead the new analysis is in a pristine state with no material or boundary condition associations.
  • As before, the new analysis gets its type set to Load/Deformation.
  • As before, if the new analysis has some initial conditions that can be satisfied by the original analysis, we make the new analysis a child and set those initial conditions to come from the parent.  In our example, a load/deformation SIGMA/W analysis can get initial PWP conditions from a SEEP/W analysis, so it becomes a child.

There’s still debate among our users and even within our office as to whether this is good or not.  Some say the new analysis should be created with all the material associations made just like a new SEEP/W analysis would do.  Others say that would be misleading because those materials don’t have stress properties defined yet, or that they would typically make a new set of materials anyway. 

Certainly boundary conditions (most of the time) don’t make sense to copy from one analysis kind to another. 

In any case, the way it works today is that if you create a new analysis of a different kind, you start with a clean slate and need to use Draw Materials and other commands to set things up the way you want them.

Conclusions

The most efficient way to work with multiple analyses is to start with your steady-state / static analysis, define it fully, add the next step in the timeline so that as many properties and associations as possible get cloned, and so on. 

If you start by creating a dozen analyses before defining any materials or boundary conditions, you will have to make all those material associations repeatedly, once for each analysis.

{ 0 comments… add one now }

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>