200 likes | 442 Views
Advanced Container Options. Overview. The Information Tab Localizing Containers Protecting Containers Conditional Containers Looping Containers Cloning Containers Adding an Internal Clock Saving Results Using Containers Controlling Graphics Using Containers.
E N D
Overview • The Information Tab • Localizing Containers • Protecting Containers • Conditional Containers • Looping Containers • Cloning Containers • Adding an Internal Clock • Saving Results Using Containers • Controlling Graphics Using Containers
Localizing Containers (Defining New Scopes) • Element ID’s can only be duplicated if they are within different scopes. • You create different scopes by localizing Containers (using context menu). • You can recognize a localized Container: • the “+” is red • default symbol in graphics pane is “closed” • icon in browsers is closed • Can only globalize a Container if it causes no naming conflicts
Referencing Outputs in a Localized Container • Outputs can only be “seen” inside the Container, unless they are exposed • Once exposed, it is referenced as: ContainerID.OutputID • You can expose an output in four ways: • any outputs referenced outside the Container when it is localized are exposed (automatic) • Using the Link Cursor (automatic) • Using the Insert Link dialog (verified) • Manually using the Output’s context menu
Defining an Alias for an Exposed Output • Since the output is referenced as ContainerID.OutputID, what if there are two elements of the same type in the Container whose outputs you wish to expose? • GoldSim solves this by defining an alias for each exposed output • default alias is the OutputID • if there is a conflict, alias is OutputID_n • you can customize the alias
Search Logic for Linking to an Output Present in Multiple Scopes • Although outputsfrom an element in a localized Container can only be referenced if they are exposed, inputsto an element in a localized Container can come from anywhere in the “upward search path”
Example: Localization • Create a Container called X • Localize it • Inside the Container, add a Expression element named A (= 1 m3/yr) • Inside the Container, add two Reservoirs (R1 and R2) • Give each an upper bound of 10 m3 and an inflow rate of 10 m3/day • Outside of X: • Create an Expression element named A (=2 m3/yr) • Create a Sum element named B • Sum the Expressions and the two Overflow Rates
Sealing Containers • Lowest level of protection you can use • No security • Intended to be used as a mechanism to help you check off those parts of your model have been QA’d • When a Container is sealed: • The user, the date/time, and a comment are added to the Container’s property dialog • Cosmetic changes can be made • In order to make any other kind of change, you must “break the seal”
Sealing Containers (cont.) • A seal is broken by making any (non-cosmetic) change inside the Container • When a seal is broken: • The original user who sealed the Container, the user who broke the seal, and the date/time the seal was broke are added to the Container’s property dialog • You can also remove a seal directly through the Container’s property dialog
Sealing Containers (cont.) • When you seal a Container that contains other Containers, all of the child Containers are sealed also • When you break a seal of a child Container, seal of parent is also broken • When you remove a seal of a child Container, the parent seal remains intact • Making a change inside a child Container that is not sealed does not break the seal of the parent
Locking Containers • Highest level of protection • Can secure through a password • Intended to be used as a mechanism to prevent parts of a model from being modified • When a Container is locked: • The user, the date/time, and a comment are added to the Container’s property dialog • No changes at all can be made to the contents of the Container
Locking Containers (cont.) • To unlock a Container you must provide a password • A Container can be locked with no password also • If you have forgotten the password to a Container, we can provide a “skeleton key” if you provide: • The filename • The Container name • Date and Time you want the key to become active (it remains active for 24 hours)
Conditional Containers • Containers can be conditional • A conditional container can be active or inactive • If inactive, all of its contents are inactive • Before becoming active, an element propagates its Initial Value (if it has one), its actual value (if the element is static), or zero (most other elements) • After becoming inactive, an element continues to propagate its last output value(s) • Conditional Containers have “local” variables • Duration • Num_Activations
Looping Containers • You can specify that a Container is a looping Container • Looping Containers carry out calculations repeatedly every timestep • The number of loops carried out is determined by a specified “Loop While” or “Loop Until” condition • Often used in conjunction with Previous Value element • Can reference “local” variable • LoopCount
Cloning Containers • When a Container is cloned, • All contents are cloned • Adding a new element to one Container adds it to the Container’s clones • Deleting an element to one Container deletes it from the Container’s clones • Cloned Containers can be used to reuse algorithms at multiple places in a model • You only need to change the algorithm in one location
Using Cloned Containers Localized Localized A B A B Clone2 Clone1 X = f(A,B) X = f(A,B)