### Premise

- Every equation, function, and equation system must have a notation that contains an explanation for each symbol used in the mathematical expressions;
- Mathematic expressions are written symbolically so that they are readable and easily checkable for errors;
- Equations and functions are created separately and then assembled to equation systems;
- Equation systems can be added to other equation systems;
- The solution of a model is separated from its creation. In particular,
- an equation system does not contain information on the maximum values of indices or the specific values of variables and parameters;
- an equation system does not contain any information on the specification of design and iteration variables.

### Overview of workflow

MOSAICmodeling was developed with the workflow in Figure 1 in mind. The individual steps are outlined briefly below. A more extensive explanation of the individual steps is given in our Documentation.

### Modeling

The modeling workflow consists of the following steps:

- Creation of notation object, which contains information on all used symbols;
- Formulation of equations;
- Optional: formulation of functional objects and parameter lists;
- Combination of equations (and functions) to an equation system.

The order of these steps is shown in Figure 2 whereas they detailed explanation is given in the section Model within the documentation.

### Simulation

The simulation workflow consists of the following steps:

- Creation of a simulation object that contains all information necessary to specify an instance of the previously formulated model. This includes the
- specification of maximum index values, e.g., number of components;
- classification of the variables into design and iteration variables;
- assignment of initial guesses for iteration variables as well as the values to the design variables and parameters;

- Code generation according to the included language specification of MOSAICmodeling or your own language specification.

The order of these steps is shown in Figure 3. However, the reader is referred to the section Simulation within the documentation for a more detailed explanation.

### Optimization

The optimization workflow consists of the following steps:

- Creation of an optimization object based on the provided simulation;
- Determination of degrees of freedom;
- Code generation according to the included language specification of MOSAICmodeling or your own language specification.

The order of these steps is shown in Figure 4. However, the reader is referred to the section Optimization within the documentation for a more detailed explanation.