Valis and Calculations
Valis are design parameters of components, requirements or analyses which can be used in calculations and documentation. A Vali has a numerical value and also contains additional information such as type, unit, formula, description, and min/max requirements.
Create Valis
You can create Valis in a component by first clicking the “+” symbol in the bottom right corner of the screen. Then, continue by filling in a name (should be a type name for Valis with a type), a formula, a unit in the top form, and hit 'Create' or “Create & add New”.
Note that while creating a property, the user can create different Valis, e.g., normal Vali, Matrix, Text Vali, Datevali, or dataset.
Type | Use case |
---|---|
Vali | Property of the component which has only one single input, e.g., mass, density. |
Matrix | A matrix is a group of individual Valis ordered in rows and columns. A matrix Vali is commonly used when the property of the components has different modes. E.g. Powerconsumption during different modes, inertia values on a different axis. |
Text Vali | A Vali which stores the strings/text e.g., |
DateVali | A Vali which stores the date information e.g., |
Dataset | Here, the user can import or add the dataset values, create a graph, and use their values in the calculation of other values. |
Adding Formulas
A Vali can be calculated with a formula using common mathematical expressions or by adding constants or functions. A formula can also contain other Valis.
Within the formula, the user can reference Valis that are available either within the project or also in other projects. To do so, they can go to “Formula” and Type “$”, a small dialogue box opens up with Valis inside. Users can type keywords to get the Vali easily.
In case the user wants to use the Valis from a different project, they can scroll down to the end of the dialogue box to select the option “show other projects”.
The formula editor uses Latex syntax to display the formulas nicely. This means that typing sqrt() will automatically transform to a square root symbol as the user types. The editor also includes automatic parenthesis completion.
Common Formula types
You can either
use a fixed value, such as
42.7
use a formula, such as
5/(3+17.3*9)
use other Valis, using the
$
sign:$car.speed+5
Start typing a $
to get a list of all available Valis.
Math operations available in formulas are:
+
,-
,*
,/
%
(modulo operation)^
sqrt()
exp()
log10()
,ln()
,log()
sin()
,cos()
,tan()
asin()
,acos()
,atan()
sinh()
,cosh()
,tanh()
fabs()
: returns the absolute valuesoc()
= "Sum of children": sum of all Valis of the same type in subcomponentspoc()
= "Product of children": product of all Valis of the same type in subcomponents
You can also use the following logical functions in formulas:
if(condition, formula_if_true, formula_if_false)
max(formula1, formula2)
min(formula1, formula2)
Valispace inbuilt functions:
soc()
: stands for "sum of children", sums up all the Valis of the same type in the components one level belowrssoc():
Stands for “root sum squared of children” sqrt(x1^2+x2^2+⋯+xn^2). For example, if you have three masses 2kg, 5kg, and 6kg, the rssoc function gives you the result of 8.062257aoc()
: stands for "average of children", calculates the average value of the Valis of the same type in the components one level belowpoc()
: stands for "product of children", multiples all the Valis of the same type in the components one level belowaverage_of_datasets()
oraod()
: the result of the Vali is the average for each point of the datasets belonging to that Vali. If there is only one dataset, that dataset is the result and is used in further calculationssum_of_datasets()
orsod()
: the result of the Vali is the sum for each point of the datasets belonging to that Vali. If there is only one dataset, that dataset is the result and is used in further calculationsproperty($vali, property_name)
: Get a property of a Vali. Possibilities for property_name are:min
max (to get the min and max requirements, respectively)
wc_minus
wc_plus (to get the minus and plus worst cases, respectively)
minoc()
: Minimum of children. Returns the minimum value of all Valis with the same type in the subcomponentsmaxoc()
: Maximum of children. Returns the maximum value of all Valis with the same type in the subcomponentsround()
: The built-in round( ) function follows the specifications of Python's round function in which the values are rounded to the closest multiple of 10 to the power minus ndigits
Example of formulas:
$SolarPanel.width * $SolarPanel.length
max(soc(), $SolarPanel.lowest_mass)
if($SolarPanel.width*2 > $SolarPanel.length, 10, 5)
Vali Information
You can see more information about the Vali by clicking on its name (1). On clicking the Vali’s name, the details sidebar opens (2) and the user can find the information (3).
Within the information tab, users have several possibilities to add/change the margins/units and also add the requirements (min/max). The requirements (min/max) are the limits that you have for the particular property. Whenever the value or worst-case increases or decreases and if the values exceed/drop below the limits of your requirement, Valispace gives a warning next to the name of the Vali. Refer to the Warnings section for more information.
Note that the total margin presented in the Vali properties is the margin of the component and the total accumulated margins of the child component.
Few other properties are used.
ID: the ID is a number that is random and automatically added by the Valiengine which is used in the Backend. You can enter the ID of a Vali in the search field of the Rest API to find the Vali. Please refer to the Rest API documentation.
Name: here you can enter and edit the name of the Vali.
Description: in the description field you can enter a description of the Vali. You can also format and edit tasks as shown below.
History of Valis
When a Vali is changed directly or indirectly, the changes are automatically saved in Valispace’s database. The history tab of the Vali shows the value before, the value after, and who changed the values. Valispace captures the changes even if the changed Vali is not directly referenced to the Vali.
To see the history of a Vali’s changes, click on the name of the Vali (1) and the details tab opens on the right side (2). Select the icon “History” (3) and then below, the graph showing the changes concerning time can be found. In “Recent Changes” (4) the user can find a table filled with the ‘Time’, ‘Value before’, ‘Value after’ and ‘Reason’ data.
Notifications on Changes
To get a notification when a certain Vali changes, you can subscribe to it by clicking on the subscribe button to the right of the Vali.
You will see a new notification in the navigation bar when someone changed a value you are subscribed to.