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).
Name | Description |
---|---|
calculator | Interpreter to evaluate simple expressions consisting of +, -, *, /, (), sin(), cos(), tan(), sqrt(), asin(), acos(), atan(), exp(), log(), pi |
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) |
ReadRealMatrixFromFile | Demonstrate usage of function Streams.readRealMatrix |
readRealParameter | Read the value of a Real parameter from file |
readRealParameterModel | Demonstrate usage of Examples.readRealParameter/.expression |
WriteRealMatrixToFile | Demonstrate usage of function Streams.writeRealMatrix |
result = calculator(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 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
calculator("2+3*(4-1)"); // returns 11 calculator("sin(pi/6)"); // returns 0.5
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
String | string | Expression that is evaluated |
Type | Name | Description |
---|---|---|
Real | result | Value of expression |
result = expression(string); (result, nextIndex) = expression(string, startIndex=1, message="");
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.
expression("2+3*(4-1)"); // returns 11 expression("sin(pi/6)"); // returns 0.5
Extends from Modelica.Icons.Function
(Icon for functions).
Type | Name | Description |
---|---|---|
String | string | Expression that is evaluated |
Integer | startIndex | Start scanning of expression at character startIndex |
String | message | Message used in error message if scan is not successful |
Type | Name | Description |
---|---|---|
Real | result | Value of expression |
Integer | nextIndex | Index after the scanned expression |
result = readRealParameter(fileName, name);
This function demonstrates how a function can be implemented that reads the value of a parameter from file. The function performs the following actions:
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).
Type | Name | Description |
---|---|---|
String | fileName | Name of file |
String | name | Name of parameter |
Type | Name | Description |
---|---|---|
Real | result | Actual value of parameter on file |
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).
Type | Name | Default | Description |
---|---|---|---|
String | file | Modelica.Utilities.Files.loadResource("modelica://Modelica/Resources/Data/Utilities/Examples_readRealParameters.txt") | File on which data is present |
Inertia | J | readRealParameter(file, "J") | Inertia |
Angle | phi_rel0 | readRealParameter(file, "phi_rel0") | Relative angle |
AngularVelocity | w_rel0 | readRealParameter(file, "w_rel0") | Relative angular velocity |
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).
Type | Name | Default | Description |
---|---|---|---|
Real | A[3,2] | [11,12; 21,22; 31,32] | Matrix stored in different formats on files |
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).
Type | Name | Default | Description |
---|---|---|---|
String | file | Modelica.Utilities.Files.loadResource("modelica://Modelica/Resources/Data/Utilities/Test_RealMatrix_v4.mat") | File name of matrix |
String | matrixName | "Matrix_A" | Matrix name in file |
final Integer | dim[2] | Modelica.Utilities.Streams.readMatrixSize(file, matrixName) | Dimension of matrix |
final Real | A[:,:] | Modelica.Utilities.Streams.readRealMatrix(file, matrixName, dim1[1], dim1[2]) | Matrix data |
final String | file1 | Modelica.Utilities.Files.loadResource("modelica://Modelica/Resources/Data/Utilities/Test_RealMatrix_v4.mat") | File name of check matrix 1 |
final String | file2 | Modelica.Utilities.Files.loadResource("modelica://Modelica/Resources/Data/Utilities/Test_RealMatrix_v6.mat") | File name of check matrix 2 |
final String | file3 | Modelica.Utilities.Files.loadResource("modelica://Modelica/Resources/Data/Utilities/Test_RealMatrix_v7.mat") | File name of check matrix 3 |
final String | matrixName1 | "Matrix_A" | Names of check matrices |
final Integer | dim1[2] | Modelica.Utilities.Streams.readMatrixSize(file1, matrixName1) | Dimension of check matrix 1 |
final Integer | dim2[2] | Modelica.Utilities.Streams.readMatrixSize(file2, matrixName1) | Dimension of check matrix 2 |
final Integer | dim3[2] | Modelica.Utilities.Streams.readMatrixSize(file3, matrixName1) | Dimension of check matrix 3 |
final Real | A1[:,:] | Modelica.Utilities.Streams.readRealMatrix(file1, matrixName1, dim1[1], dim1[2]) | Data of check matrix 1 |
final Real | A2[:,:] | Modelica.Utilities.Streams.readRealMatrix(file2, matrixName1, dim2[1], dim2[2]) | Data of check matrix 2 |
final Real | A3[:,:] | Modelica.Utilities.Streams.readRealMatrix(file3, matrixName1, dim3[1], dim3[2]) | Data of check matrix 3 |
Generated 2018-12-12 12:14:36 EST by MapleSim.