Valis and Calculations

Valis are design parameters of Blocks, Requirements, or Analyses that 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.

Creating a Vali

When viewing properties of a Block, you can create Valis in this Block by clicking the  button at the top right of the page. In the Create Property window that opens, select the type of property you would like to create. For a Vali, enter the Name of the Vali (which can be any name or a Valitype name), define the Formula and unit (mandatory), and Display Unit (optional). Additionally, using the Add to Block field, you can define to which Blocks you want to add this Vali.

  • In the Formula and unit field, enter \ to get a list of possible calculation types.

  • For a guide on units and their conversion, refer to the Units and Automatic Unit Conversion page.

Note that while creating a property, you can create Valis of different types: normal Vali, Matrix, Textvali, Datevali, or Dataset.

Type Description
Vali

Property of the Block which has only one single value, e.g., mass, cost, density, etc.

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 Blocks has different modes, e.g. power consumption during different modes, inertia values on a different axis.

Textvali

A Vali which stores strings/text.

Datevali

A Vali which stores the date information.

Dataset Here, you 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 and unit field, you can reference Valis that are available either within the current project or other projects. To do so, type $ within the field. In the pop-up that appears, find and select the required Vali.

Calling Valis – anywhere in Requirements Portal, you can use the dollar symbol $ to open a drop-down that shows you any referenceable object (e.g., Valis, Requirements, etc.).
Calling Valis – anywhere in Requirements Portal, you can use the dollar symbol $ to open a drop-down that shows you any referenceable object (e.g., Valis, Requirements, etc.).

In case you want to use Valis from a different project, you can scroll down to the end of the pop-up to select the show other projects option.

Create your own 'Constants' project, where you store frequently used Valis so you can call them at any time for calculations.

The formula editor uses Latex syntax to display the formulas nicely. For example, 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:

  • use a fixed value, such as 42.7kg, or

  • use a formula, such as 5/(3+17.3*9), or

  • use other Valis, using the $ sign: $car.speed+5.

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 value

  • soc() = "Sum of children": sum of all Valis of the same type in sub Blocks

  • poc() = "Product of children": product of all Valis of the same type in sub Blocks

You can also use the following logical functions in formulas:

  • if(condition, formula_if_true, formula_if_false)

  • max(formula1, formula2)

  • min(formula1, formula2)

Requirements Portal Inbuilt Functions

  • soc(): stands for "sum of children", sums up all the Valis of the same type in the Blocks one level below

  • rssoc(): 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.062257

  • aoc(): stands for "average of children", calculates the average value of the Valis of the same type in the Blocks one level below

  • poc(): stands for "product of children", multiples all the Valis of the same type in the Blocks one level below

  • average_of_datasets() or aod(): 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 calculations

  • sum_of_datasets() or sod(): 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 calculations

  • property($vali, property_name): get a property of a Vali. Possibilities for property_name are:

    • min and max (to get the min and max requirements, respectively)

    • wc_minus and 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 sub Blocks

  • maxoc(): maximum of children. Returns the maximum value of all Valis with the same type in the sub Blocks

  • round(): the 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. This will open a details view of the Vali, with information presented on the Info tab.

Vali Information – by clicking on a Vali, a view with additional information will open. Here you can define more properties, add description, and define impacts.
Vali Information – by clicking on a Vali, a view with additional information will open. Here you can define more properties, add description, and define impacts.

The basic info on a Vali presented in the view is:

  • ID – the ID is a number that is random and automatically added by the Valiengine which is used in the Backend.

  • 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.

You can also add/change the margins/units and add the requirements (min/max). The requirements (min/max) are the limits that you have for the particular property.

Note that the total margin presented in the Vali properties is the margin of the Block and the total accumulated margins of the child Block.

For more info on Margins, refer to the Margins page.

Other information that can be added/viewed here include References, Using and Used by and also Impacts of this Vali.

History of Valis

When a Vali is changed directly or indirectly, the changes are automatically saved in Requirements Portal’s database. The History tab of the Vali shows the value before, the value after, and who changed the values. Requirements Portal 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 and select the History tab. On this tab, a graph showing the changes concerning time can be found. Below the graph, a Recent Changes table filled with the Time, Value Before, Value After and Reason data is present.

Vali History – on the History tab, a graphical and tabular representation for the change of a Vali over time is shown.
Vali History – on the History tab, a graphical and tabular representation for the change of a Vali over time is shown.

Notifications on Changes

To get a notification when a certain Vali changes, you can subscribe to it by clicking the three-dot button in the Actions column and selecting the Add » Subscribe command from the menu that opens.

For more information about notifications, refer to the Notifications page.

If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Feature Availability

The features available to you depend on which Altium solution you have – Altium Develop, an edition of Altium Agile (Agile Teams or Agile Enterprise), or Altium Designer (on active term).

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Content