# Modelling

## Project

Projects are used to organize your resources, such as formulas and parameter tables.

## Formula

Formulas are mathematical expressions defined with the Formulative language.

## Parameter tables

A parameter table is a collection of predefined values. You can refer these values in formulas.

As the tables will be referenced in formulas by their names, they may only contain lower and upper case letters to comply with the language syntax. Column names are also restricted for the same reason, they must match one of the following mathematical domains:

• Keyword ($\mathbb{K}$)
• Integer number ($\mathbb{Z}$)
• Date ($\mathbb{D}$)
• Date-Time ($\mathbb{T}$)

Use cases:

• Sometimes it’s easier to represent relations as tables instead of formulas.
• If you already have a precalculated set of data you can import it as a parameter table.

When you are working on your model and you want to check whether the formulas and parameter tables actually work, you can create quick tests in the Evaluate dialog.

See it in action:

## Module

By default all formulas and parameter tables are created in a module called Global module. If the Global module gets too big, you may organize its contents into collections called modules.

### Module imports

Later in the workflow every test and calculation will implicitly import the Global module for evaluations. If you have defined additional modules you will need to specify the list of modules to be imported for every test and calculation. The order of modules is important because when multiple definitions of the same variable are imported only the last definition will be used.

For example we have three modules with the following formulas:

• Global module: $\mathit{a}=\mathrm{1}$, $\mathit{b}=\mathrm{2}\mathit{a}$
• Module A: $\mathit{a}=\mathrm{2}$
• Module B: $\mathit{a}=\mathrm{3}$

If a calculation imports them in this order:

1. (Global module - this is implicitly imported)
2. Module B
3. Module A

Then only the following formulas will be used for evaluation:

• $\mathit{b}=\mathrm{2}\mathit{a}$
• $\mathit{a}=\mathrm{2}$
Variable definitions – only the last definition counts
Modules in order definition of $\mathit{a}$ definition of $\mathit{b}$
Global module $\mathit{a}=\mathrm{1}$ $\mathit{b}=\mathrm{2}\mathit{a}$
Module B $\mathit{a}=\mathrm{3}$
Module A $\mathit{a}=\mathrm{2}$

Note

Technically module imports are not set for every calculation, instead we package calculations in groups and the module imports must be defined for a whole calculation group that will be applied to all its calculation. The same principle applies to test plans – they are grouped in test suites and module imports must be set for a test suite.

See it in action:

## Documentation

Projects may be given a short description and an longer documentation written in our extended markdown format.

Modules may be given a short description.

Formulas may be documented in our extended markdown format.

See it in action:

## Project sharing

As an individual user you can share your projects with others. What they can do with your project is determined by the project access role you assign them. You may choose from Master, Editor and Viewer roles. The following table demonstrates what actions are permitted for these roles.

permission Owner Master Editor Viewer
Can view the project
Can edit the project
Can share the project
Can manage client application access
Can deploy the project
Can delete the project
Can manage project settings
Can duplicate the project
See it in action:

### Accessing projects in organizations

Projects of organizations cannot be shared with users outside the organization. Organization members’ project access roles differ from the ones available for individual users.