Model Center—Variable Views
|Default Visibility of Variables||Lifting Variables|
|Sorting Variables||Adding Variables|
|Editing Variables||Removing Variables|
The bottom area of the model editor shows one or several tabs dedicated to viewing and editing parameters, variables and constants of the class in the active class window. Parameters and constants are variables with a restricted variability in Modelica. Here, the term variable will be used for all three of them, unless it is necessary to distinguish between them. If no component is selected, the variables of the class will be shown. To show the variables of a specific component, select the component in the Icon View, the Diagram View or the Component Browser.
The tabs shown depend on the class being shown. The grouping of variables in a class can be configured in the Show in Variable Views section of the Component Properties dialog for each variable. This dialog can be opened by clicking or right-clicking the name of the variable in the view at the bottom of the screen and choosing Properties. The dialog is described in more detail in this section.
For models that have replaceable classes, the replaceable classes appear as parameters in the General and Parameters views.
Variables, parameters and constants can be shown in separate tabs by opening the Variables view, Parameters view or Constants view in the View menu. In these views, all variables, parameters and constants are listed unconditionally, effectively ignoring any visibility and view/group configurations. The visibility of the tabs can also be controlled from the popup menu shown when right-clicking any of the tabs.
Default Visibility of Variables
The following determines whether or not a variable is visible in the variable views (the dedicated Parameters, Variables and Constants views excluded).
- Parameters are always shown in the General view under the Parameters group unless a different view or group has explicitly been specified for them in the Add Variable or Component Properties dialog box.
- Variables are shown in the General view under the Initialization group if they have an initial value. A variable without an initial value is only shown if the Show in Variable Views option has been enabled for it in the Add Variable or Component Properties dialog box.
- Constants are shown either if they are declared within a package, or if the Show in Variable Views option has been enabled for them in the Add Variable or Component Properties dialog box.
- Variables that have the outer attribute set are never shown, as their values are determined by their matching inner variables.
- When viewing a class that extends one or more classes, variables declared as final in any of the extended classes (base classes) are not shown.
- When viewing variables of a selected component, variables declared as final are not shown unless they were made final in the class of the active class window.
For more information on how to declare a variable outer, final or protected, see this section.
The variables in a view can be sorted by name or declaration order. By default, they are sorted by declaration order.
To sort by name, right-click an empty area of the view and choose Arrange by ▶ Name from the popup menu.
Sorting the variables by name.
Before attempting to edit a variable, make sure that either the Icon View or Diagram View is the active view of the class window. Editing in the variable views is disabled while editing the class in the Modelica Text View. For read-only classes, variable values can still be edited but the changes cannot be saved. This makes it possible to test different scenarios with the example models provided in read-only libraries without worrying about changing the library permanently.
Variables have several editable attributes. To give a variable an initial value, edit the value of the corresponding Initial Value box. All attributes of variables that can be edited directly in the variable views are explained in detail following. Other attributes and properties of a variable can be edited in the Component Properties dialog. This dialog can be opened by clicking the name of the variable and choosing Properties. The dialog is described in more detail in this section.
Note that the attributes available in the variable views will depend on the type of the variable. For instance, a variable of type String has only the attribute value.
- Value. Specify a value to give the variable a constant value throughout the simulation or set the value of a parameter. If the class contains alternatives for this value through choices annotations or enumerations, these choices will be shown in a drop-down box for easy selection.
- Initial Value. The initial value of the variable, by default zero or an array of which all elements are zero.
- Fixed. If set to false (default setting for variables), the simulation tool (solver) is free to use another initial value than the one specified, if necessary in order to solve the systems of equations. If set to true, the initial value of the variable is fixed to the value specified in the Initial Value box. Note that state variables have the fixed attribute set to true as the default setting. This does not conform to standard Modelica, but since System Modeler allows an overdetermined system of equations as an initial condition, it is more intuitive with the fixed attribute set to true for state variables.
- State Select. This attribute provides manual control over the selection of state variables for numerical solution of equation systems. The column is only shown in the Variables view, which can be shown by choosing View ▶ Variables. The alternatives are as follows:
- default. Select the variable as a state variable if appropriate, meaning that the variable is likely to be selected as a state variable if its derivative appears in the model. This is the default setting.
- prefer. The variable is preferably selected as a state variable over those that have the default attribute.
- Description. A short one-line description of the variable. Note that this attribute can only be edited for variables that are declared in the class of the active class window. Editing is disabled if one or more components are selected.
Editing a Variable for Several Components at Once
On some occasions, you may find it useful to set an attribute of a variable for several components at once. This is possible as long as the components are of the same type. Select the components whose variables you wish to edit. For those variable attributes that are the same for all components, the values will be shown in the value text boxes. If the values differ, the text boxes will show "No Common Value". When typing in a new value for a variable or editing an existing value, all of the selected components will be affected. Components that inherit from the same base class can be selected and the variables from the base class edited in the same way.
Editing Using Specially Adapted Dialogs
The values of variables can also be edited using specially adapted editing dialog by clicking the edit icon next to the edit field. In the popup menu that appears, click Edit to bring up a dialog suitable for editing values of the variable's type, such as a color selector for variables specifying a color, or a file selector for variables specifying a file.
A parameter input field with an edit button.
The type of edit dialog that is shown is determined by the variable's type and if the variable has any associated standard Modelica annotation requesting a specific type of editing dialog, such as the Dialog.colorSelector annotation.
Making Variables Final
To prevent further modification of a variable, it can be made final. The value is still editable in the class in which the variable is made final, but but not from any class creating a component of that class or extending that class.
To make a variable final, click the edit icon next to its edit field. In the menu that is shown, click final. A check mark to the left of final is an indication that it has been made final.
Making a variable final.
Sometimes the final item is disabled and cannot be clicked. It happens when a variable is implicitly final. For instance, if you have a model with a resistor component and you make the resistor component final, all of the variables inside the resistor will indirectly also become final. When viewing the variables of the resistor component, you will not be able to change their final property, as the effective final property is associated with the resistor and not the variable.
To change the final property of a resistor, or any other component that is not present in the variable views, locate the component in the Diagram View or the Component Browser and right-click it. In the menu that is shown, click the final item to toggle the final property of the component. Just as for variables, the menu final item may be disabled for a component if the component is implicitly final.
For array variables, clicking Edit in the popup menu provided by the edit icon next to the edit field will open a dedicated array editor. The array editor consists of two synchronized views: a table view and an expression view. Either view can be used to edit the array. The expression view can be used to edit any array expression, but is mostly used to edit arrays constructed by non-literal expressions. The table view is an evaluated version of the expression view and is the preferred view to edit individual elements of an array.
When editing an array in one view, it may happen that the other view becomes disabled and an error message is displayed in the bottom left of the array editor dialog. This is an indication that the array is invalid, and the cause could be, for instance, an illegal expression in the expression view or a cell with an invalid value in the table view. Correcting the error will enable the other view again.
It is also possible to give a value to be assigned to each element of an array, rather than a value that is assigned to the array as a whole. How the value you specify is interpreted is determined by the each prefix (if enabled, the value is assigned to each element of the array). To enable the each prefix for a variable, click the edit icon next to the edit field of the variable and ensure that the each item in the popup menu has a check mark before it.
To edit the dimensions of an array, open the Component Properties by clicking or right-clicking the name of the variable and choosing Properties from the popup menu.
Editing Type Parameters for a Variable
Predefined types (Real, Integer, Boolean, String) and enumeration types in Modelica have a number of parameters that are used to further customize the type. To view or edit these parameters for a variable of such a type, click the variable name in the variable view and choose View Type Parameters or Edit Type Parameters.
Editing the type parameters for the parameter R in a resistor component.
The Type Parameters dialog can also be reached from the Component Properties dialog.
The parameters shown in the dialog box depend on the type and variability of the variable. In the preceding example, you can see the type parameters of the parameter R in a resistor component of type Modelica.Electrical.Analog.Basic.Resistor. The type of the parameter R is Resistance (Modelica.SIUnits.Resistance), which is derived from the predefined type Real.
If the value of a parameter is shown in gray, it means the value is specified somewhere else. In this example, it would be inside one of the extended classes Resistance or Real. These values can be overridden for the parameter R as long as they are not declared with a final prefix inside Resistance or Real. For more information on how to change the type parameters of a class, see the section Editing Type Parameters for a Class.
Any of the parameter values can also be made final by checking the final checkbox next to it. This ensures that the value can never be overridden in any other context.
Likewise, the each prefix can be applied to a parameter by checking the corresponding each checkbox. For arrays, the each prefix allows you to specify a value that is assigned to each element of the array, rather than a value that is assigned to the array as a whole. For non-array parameters, the each prefix has no effect.
For further information about type parameters, please see the digital book Modelica by Example, bundled with System Modeler and accessible from Documentation Center, under Resources.
All physical variables in a Modelica model should be declared with a unit. The unit attribute of a variable is the unit used in all equations, and the equations are only correct for those particular units. However, it is possible to change the unit displayed to you as a user in the graphical user interface by specifying a displayUnit.
As an example, say you have a model with a component of type Modelica.Mechanics.Translational.Components.Mass, and you wish to display its mass (parameter m) in the unit "lb" rather than the default unit "kg". To do this, click the mass component, go to the variable view, find the parameter m and click the kg button. This opens up a dialog box that will let you change the displayUnit attribute.
Setting the displayUnit to lb instead of kg for a variable of type Modelica.SIunits.Mass.
When you click lb in the drop-down list and click OK, the value in the Value field in the variable views is converted from kilograms to pounds in the graphical user interface. At the same time, a short piece of Modelica code, namely displayUnit="g", is added to the parameter m in component mass1 in the text view of the model.
displayUnit="g" has been added to parameter m in component mass1.
Only units for which there are unit conversions are present in the drop-down list. It is still possible to specify another displayUnit by typing it. If no unit conversion exists, you will be asked to create one. See the section on adding custom unit conversions for more information on how a unit conversion is defined.
The message in the Type Parameters dialog when there is no unit conversion for a specified displayUnit.
It is worth noting that if a non-numeric value is entered in the Value field in the variable views, such as the name of another variable or an expression, the unit next to the Value field changes to the base unit. Only numerical literals are automatically converted in the graphical user interface.
Also, if the quantity of a unit is a relative unit, such as a temperature difference, you need to tell System Modeler that the quantity is a relative quantity to ensure the unit conversions are performed correctly. This can be done under the Advanced tab in the Component Properties dialog for a specific variable, or for all variables of a specific type in the Class Properties of the type.
Specifying a type to have a relative unit under the Advanced tab in the Class Properties dialog.
Unit Conversions for displayUnit
System Modeler comes with a built-in set of unit conversions for displayUnit. The conversions are used to present values in the chosen displayUnit for a variable, and for converting values entered back to the unit used in the equations of the model. The built-in set of unit conversions contains conversions for many of the commonly used units and can be extended with new user-defined conversions and library-defined conversions. User-defined conversions can be added and managed by the user and are stored on the user's computer. Library-defined conversions are conversions defined using Modelica annotations in the top-level class of a Modelica library.
Unit conversions are managed in the Options dialog (Tools ▶ Options) under the Unit Conversion section. All types of unit conversions are shown in the table, but built-in conversions and library-defined conversions cannot be edited or removed. An existing unit conversion can be used as a starting point when creating new user-defined conversions. For example, to create a new unit conversion for electric current, from uA to A, find the conversion for the derived unit mA in the table and select it to fill out all the text boxes in the Add or Update Unit Conversion section. Change Factor to 1e-6 and Derived Unit to uA and click the Add Unit Conversion button. The new conversion will appear as a user-defined conversion right above the mA to A conversion and the derived unit uA is now available for use as a displayUnit in models.
Any user-defined unit conversion can be edited or removed. To edit a conversion, select it in the list and edit its values in the Add or Update Unit Conversion section. When finished, click the Update Unit Conversion button. To remove a unit conversion, click the round button with an X to the right of the conversion in the list.
To restrict the types of unit conversions shown in the table, click the Show box located underneath the table and choose what conversions to show.
Library-defined unit conversions are defined in top-level Modelica classes and are automatically picked up by System Modeler. They provide a way for libraries to ensure that there exist unit conversions for the displayUnit units used by the library. An annotation is used to define a new unit conversion in a top-level Modelica class. The syntax of the annotation is as follows: …
__Wolfram(unitConversions(conversion(…), conversion(…), …))
The syntax of each conversion is:
derivedUnit = <string>,
unit = <string>,
factor = <double>,
offset = <double>,
description = <string>
Offset and description are optional here.
An example of a top-level class introducing two new unit conversions using the annotation:
conversion(derivedUnit = "uA", unit= "A", factor = 1e-6, description = "Current"),
conversion(derivedUnit = "MV", unit= "V", factor = 1e6, description = "Voltage")
Redeclaring Replaceable Classes
An advanced configuration feature allows switching out complete classes used in a model. This makes it easier to quickly reconfigure parts of your model. Classes that can be replaced with other classes are classes with the replaceable property. Replaceable classes are shown as parameters in your model.
A replaceable class shown as a parameter, with available choices shown in the drop-down menu.
To redeclare the replaceable class, choose one of the items in the drop-down menu.
A replaceable class can be further modified by adding modifiers to the redeclaration. These modifiers can be added in parentheses after the class name.
A replaceable class redeclared with a modifier to the tire radius R.
For more information on replaceable classes, class redeclarations and model reusability in general, see the tutorial on Reusable and Configurable Models.
When building hierarchical models, a parameter, variable, constant or initial value of a variable that is of importance for the behavior of the model may be located somewhere deep down in a component of your model. To simplify the configuration of your model, variables and their values can be lifted up to the top level of your model. The operation does not modify any other model except your top-level model.
When lifting a variable, a new parameter with the same name and variability will be created in your top-level model with a binding to the lifted variable, effectively changing the value of the lifted variable whenever the value of the top-level variable is changed. Lifting an initial value of a variable as a parameter allows the initial value of a variable at a lower hierarchical level to be specified as a parameter at the top level.
To perform the lift operation, select the component that contains the variable to be lifted and click or right-click its name in the variable view. Depending on the variability of the variable, the popup menu shown will have different choices. Click the menu item that matches your need.
Lifting the parameter J inside a DCMotor component to the top-level model.Esc
To add a variable to a model, click the floating + button in the lower-right corner of the variable view, use the Insert menu, or right-click an empty area of the variable view to bring up a popup menu from which you can choose to add a variable, parameter or constant.
The button in the variable views used for adding parameters, variables or constants.
The dialog box that appears is the common dialog box for adding variables of any kind of variability.
Adding a continuous variable of the SI unit type Current to a resistor model.
The dialog box is divided into two views.
- General. In this view you specify the variability, type, dimensions, name, value and description of the variable.
To add the variable, click the Add button. The variable will appear in the Component Browser. If the Variables view is visible, the variable will appear there as well. The dialog box will remain open to let you add more variables. To close it, click the Close button.
- Unspecified (default). For variables of type Real, the variability (continuous or discrete) will be determined by the context in which the variable is used. The variability will be discrete for variables of type Boolean, Integer, String and enumeration.
- Discrete. Discrete variables are piecewise constant with respect to simulation time and may only be changed by events during simulation.
- Initial Value (optional). The initial value for the variable. Only applicable for continuous and discrete variables.
- Fixed. If checked, the initial value is fixed; otherwise the initial value is used as a guess value. Only applicable for continuous and discrete variables.
- General: Type. Specifies the type of the variable. Note that the SI unit and non-SI unit types are only available if the Modelica Standard Library is loaded.
- Other. Custom type. If you do not know the full path of the type, you can search for it using the Class Browser and then drag the type from the Class Browser and drop it in the text box. See this section for information on how to use the Class Browser to find types and other classes.
- General: Array. Specifies the dimensions of the variable. Leave this section unchecked for non-arrays.
- General: Show in Variable Views. Specifies whether the variable should be visible in the variable views (variables with an initial value, and parameters are always visible).
- Show. Specifies whether the value or the initial value should be shown for continuous and discrete variables in the variable views.
- View. The name of the view in which to show the variable. This is the name of the tab in the bottom area of Model Center.
- Group. The name of the group under which the variable should be listed. This is the grouping inside tabs.
- Protected. Access to the variable is restricted to the class in which it is declared and to classes inheriting that class. Clear this checkbox to make the component accessible from all classes. This property is not available for variables declared in connectors, as only public sections are allowed in connectors.
- Replaceable. Allows modifications of the variable in form of redeclarations. See this section for information on how to change the type of a component by using redeclaration modifications.
- Flow. Applies only to variables declared in connector classes. The flow property specifies whether the sum of the quantity should sum to zero when connected. Select this checkbox for variables specifying a flow quantity such as current, fluid, force, etc. Clear this checkbox for variables specifying potential (non-flow) quantities, such as voltage, pressure, position, etc.
- Stream. Applies only to variables declared in connector classes. A stream variable describes a quantity that is carried by a flow variable. The value of the stream variable is the specific property inside the component close to the boundary, assuming that matter flows out of the component into the connection point.
- Attributes: Causality. Specifies the causality of the variable. The causality of a variable does not have to be explicitly specified unless the variable is an input or output to a block or function.
To remove a variable of a class, click its name and choose Delete from the popup menu.
If multiple variables are to be deleted, this can be done more quickly using the Component Browser, which allows multiple components to be selected at once. For information on how to remove components, see this section.