Modelica.Utilities.Examples

Examples to demonstrate the usage of package Modelica.Utilities

Information

This package contains quite involved examples that demonstrate how to use the functions of package Modelica.Utilities. In particular the following examples are present.

Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).

Package Content

Name Description
Modelica.Utilities.Examples.calculator calculator Interpreter to evaluate simple expressions consisting of +, -, *, /, (), sin(), cos(), tan(), sqrt(), asin(), acos(), atan(), exp(), log(), pi
Modelica.Utilities.Examples.expression expression Expression interpreter that returns with the position after the expression (expression may consist of +, -, *, /, (), sin(), cos(), tan(), sqrt(), asin(), acos(), atan(), exp(), log(), pi)
Modelica.Utilities.Examples.readRealParameter readRealParameter Read the value of a Real parameter from file
Modelica.Utilities.Examples.readRealParameterModel readRealParameterModel Demonstrate usage of Examples.readRealParameter/.expression
Modelica.Utilities.Examples.WriteRealMatrixToFile WriteRealMatrixToFile Demonstrate usage of function Streams.writeRealMatrix
Modelica.Utilities.Examples.ReadRealMatrixFromFile ReadRealMatrixFromFile Demonstrate usage of function Streams.readRealMatrix

Modelica.Utilities.Examples.calculator Modelica.Utilities.Examples.calculator

Interpreter to evaluate simple expressions consisting of +, -, *, /, (), sin(), cos(), tan(), sqrt(), asin(), acos(), atan(), exp(), log(), pi

Information

Syntax

result = calculator(expression);

Description

This function demonstrates how a simple expression calculator can be implemented in form of a recursive decent parser using basically the Strings.scanToken(..) and Strings.scanDelimiter(..) function.

The following operations are supported (pi=3.14.. is a predefined constant):

   +, -
   *, /
   (expression)
   sin(expression)
   cos(expression)
   tan(expression)
   sqrt(expression)
   asin(expression)
   acos(expression)
   atan(expression)
   exp(expression)
   log(expression)
   pi

Example

  calculator("2+3*(4-1)");  // returns 11
  calculator("sin(pi/6)");  // returns 0.5

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

NameDescription
stringExpression that is evaluated

Outputs

NameDescription
resultValue of expression

Modelica.Utilities.Examples.expression Modelica.Utilities.Examples.expression

Expression interpreter that returns with the position after the expression (expression may consist of +, -, *, /, (), sin(), cos(), tan(), sqrt(), asin(), acos(), atan(), exp(), log(), pi)

Information

Syntax

             result = expression(string);
(result, nextIndex) = expression(string, startIndex=1, message="");

Description

This function is nearly the same as Examples.calculator. The essential difference is that function "expression" might be used in other parsing operations: After the expression is parsed and evaluated, the function returns with the value of the expression as well as the position of the character directly after the expression.

This function demonstrates how a simple expression calculator can be implemented in form of a recursive decent parser using basically the Strings.scanToken(..) and scanDelimiters(..) function. There are 2 local functions (term, primary) that implement the corresponding part of the grammar.

The following operations are supported (pi=3.14.. is a predefined constant):

   +, -
   *, /
   (expression)
   sin(expression)
   cos(expression)
   tan(expression)
   sqrt(expression)
   asin(expression)
   acos(expression)
   atan(expression)
   exp(expression)
   log(expression)
   pi

The optional argument "startIndex" defines at which position scanning of the expression starts.

In case of error, the optional argument "message" is appended to the error message, in order to give additional information where the error occurred.

This function parses the following grammar

  expression: [ add_op ] term { add_op term }
  add_op    : "+" | "-"
  term      : primary { mul_op primary }
  mul_op    : "*" | "/"
  primary   : UNSIGNED_NUMBER
              | pi
              | ( expression )
              | functionName( expression )
  function  :   sin
              | cos
              | tan
              | sqrt
              | asin
              | acos
              | atan
              | exp
              | log

Note, in Examples.readRealParameter it is shown, how the expression function can be used as part of another scan operation.

Example

  expression("2+3*(4-1)");  // returns 11
  expression("sin(pi/6)");  // returns 0.5

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

NameDescription
stringExpression that is evaluated
startIndexStart scanning of expression at character startIndex
messageMessage used in error message if scan is not successful

Outputs

NameDescription
resultValue of expression
nextIndexIndex after the scanned expression

Modelica.Utilities.Examples.readRealParameter Modelica.Utilities.Examples.readRealParameter

Read the value of a Real parameter from file

Information

Syntax

result = readRealParameter(fileName, name);

Description

This function demonstrates how a function can be implemented that reads the value of a parameter from file. The function performs the following actions:

  1. It opens file "fileName" and reads the lines of the file.
  2. In every line, Modelica line comments ("// ... end-of-line") are skipped
  3. If a line consists of "name = expression" and the "name" in this line is identical to the second argument "name" of the function call, the expression calculator Examples.expression is used to evaluate the expression after the "=" character. The expression can optionally be terminated with a ";".
  4. The result of the expression evaluation is returned as the value of the parameter "name".

Example

On file "test.txt" the following lines might be present:

// Motor data
J        = 2.3     // inertia
w_rel0   = 1.5*2;  // relative angular velocity
phi_rel0 = pi/3

The function returns the value "3.0" when called as:

readRealParameter("test.txt", "w_rel0")

Extends from Modelica.Icons.Function (Icon for functions).

Inputs

NameDescription
fileNameName of file
nameName of parameter

Outputs

NameDescription
resultActual value of parameter on file

Modelica.Utilities.Examples.readRealParameterModel Modelica.Utilities.Examples.readRealParameterModel

Demonstrate usage of Examples.readRealParameter/.expression

Information

Model that shows the usage of Examples.readRealParameter and Examples.expression. The model has 3 parameters and the values of these parameters are read from a file.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

NameDescription
fileFile on which data is present
JInertia [kg.m2]
phi_rel0Relative angle [rad]
w_rel0Relative angular velocity [rad/s]

Modelica.Utilities.Examples.WriteRealMatrixToFile Modelica.Utilities.Examples.WriteRealMatrixToFile

Demonstrate usage of function Streams.writeRealMatrix

Information

Example model that shows how to write a Real matrix in MATLAB MAT format on file using function writeRealMatrix.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

NameDescription
A[3, 2]Matrix stored in different formats on files

Modelica.Utilities.Examples.ReadRealMatrixFromFile Modelica.Utilities.Examples.ReadRealMatrixFromFile

Demonstrate usage of function Streams.readRealMatrix

Information

Example model that shows how to read a Real matrix in MATLAB MAT format from file using functions readMatrixSize and readRealMatrix.

Additionally, specific matrices from the supported file formats are loaded and it is checked whether the loaded matrices have the expected values.

Extends from Modelica.Icons.Example (Icon for runnable examples).

Parameters

NameDescription
fileFile name of matrix
matrixNameMatrix name in file
Automatically generated Thu Dec 19 17:20:26 2019.