Library of blocks to interpolate in one and two-dimensional tables

This package contains blocks for one- and two-dimensional interpolation in tables.

Especially for use on real-time platform targets (e.g., HIL-simulators) with **no file system**, it is possible to statically
store tables using a function "usertab" in a file conventionally named "usertab.c". This can be more efficient than providing the tables as Modelica parameter arrays.

This is achieved by providing the tables in a specific structure as C-code and compiling that C-code together with the rest of the simulation model into a binary that can be executed on the target platform. The "Resources/Data/Tables/" subdirectory of the MSL installation directory contains the files "usertab.c" and "usertab.h" that can be used as a template for own developments. While "usertab.c" would be typically used unmodified, the "usertab.h" needs to adapted for the own needs.

In order to work it is necessary that the compiler pulls in the "usertab.c" file. Different Modelica tools might provide different mechanisms to do so. Please consult the respective documentation/support for your Modelica tool.

A possible (though a bit "hackish") Modelica standard conformant approach is to pull in the required files by utilizing a "dummy"-function that uses the Modelica external function interface to pull in the required "usertab.c". An example how this can be done is given below.

model Test25_usertab "Test utilizing the usertab.c interface" extends Modelica.Icons.Example; public Modelica.Blocks.Sources.RealExpression realExpression(y=getUsertab(t_new.y)) annotation (Placement(transformation(extent={{-40,-34},{-10,-14}}))); Modelica.Blocks.Tables.CombiTable1D t_new(tableOnFile=true, tableName="TestTable_1D_a") annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); Modelica.Blocks.Sources.Clock clock annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); protected encapsulated function getUsertab input Real dummy_u[:]; output Real dummy_y; external "C" dummy_y= mydummyfunc(dummy_u); annotation(IncludeDirectory="../../../Resources/Data/Tables", Include = "#include "usertab.c" double mydummyfunc(double* dummy_in) { return 0; } "); end getUsertab; equation connect(clock.y,t_new. u[1]) annotation (Line( points={{-59,10},{-42,10}}, color={0,0,127})); annotation (experiment(StartTime=0, StopTime=5), uses(Modelica(version="3.2.3"))); end Test25_usertab;

Extends from `Modelica.Icons.Package`

(Icon for standard packages).

Name | Description |
---|---|

`CombiTable1D` | Table look-up in one dimension (matrix/file) with n inputs and n outputs |

`CombiTable1Ds` | Table look-up in one dimension (matrix/file) with one input and n outputs |

`CombiTable2D` | Table look-up in two dimensions (matrix/file) |

`CombiTable2Dv` | Table look-up in two dimensions (matrix/file) with vector inputs and vector output of size n |

`Internal` … | Internal external object definitions for table functions that should not be directly utilized by the user |

Table look-up in one dimension (matrix/file) with n inputs and n outputs

**Univariate constant**, **linear** or **cubic Hermite
spline interpolation** in **one** dimension of a
**table**.
Via parameter **columns** it can be defined how many columns of the
table are interpolated. If, e.g., columns={2,4}, it is assumed that 2 input
and 2 output signals are present and that the first output interpolates
the first input via column 2 and the second output interpolates the
second input via column 4 of the table matrix.

The grid points and function values are stored in a matrix "table[i,j]", where the first column "table[:,1]" contains the grid points and the other columns contain the data to be interpolated. Example:

table = [0, 0; 1, 1; 2, 4; 4, 16] If, e.g., the input u = 1.0, the output y = 1.0, e.g., the input u = 1.5, the output y = 2.5, e.g., the input u = 2.0, the output y = 4.0, e.g., the input u =-1.0, the output y = -1.0 (i.e., extrapolation).

- The interpolation interval is found by a binary search where the interval used in the last call is used as start interval.
- Via parameter
**smoothness**it is defined how the data is interpolated:smoothness = 1: Linear interpolation = 2: Akima interpolation: Smooth interpolation by cubic Hermite splines such that der(y) is continuous, also if extrapolated. = 3: Constant segments = 4: Fritsch-Butland interpolation: Smooth interpolation by cubic Hermite splines such that y preserves the monotonicity and der(y) is continuous, also if extrapolated. = 5: Steffen interpolation: Smooth interpolation by cubic Hermite splines such that y preserves the monotonicity and der(y) is continuous, also if extrapolated.

- Values
**outside**of the table range, are computed by extrapolation according to the setting of parameter**extrapolation**:extrapolation = 1: Hold the first or last value of the table, if outside of the table scope. = 2: Extrapolate by using the derivative at the first/last table points if outside of the table scope. (If smoothness is LinearSegments or ConstantSegments this means to extrapolate linearly through the first/last two table points.). = 3: Periodically repeat the table data (periodical function). = 4: No extrapolation, i.e. extrapolation triggers an error

- If the table has only
**one row**, the table value is returned, independent of the value of the input signal. - The grid values (first column) have to be strictly increasing.

The table matrix can be defined in the following ways:

- Explicitly supplied as
**parameter matrix**"table", and the other parameters have the following values:tableName is "NoName" or has only blanks, fileName is "NoName" or has only blanks.

**Read**from a**file**"fileName" where the matrix is stored as "tableName". Both text and MATLAB MAT-file format is possible. (The text format is described below). The MAT-file format comes in four different versions: v4, v6, v7 and v7.3. The library supports at least v4, v6 and v7 whereas v7.3 is optional. It is most convenient to generate the MAT-file from FreeMat or MATLAB® by commandsave tables.mat tab1 tab2 tab3

or Scilab by commandsavematfile tables.mat tab1 tab2 tab3

when the three tables tab1, tab2, tab3 should be used from the model.

Note, a fileName can be defined as URI by using the helper function loadResource.- Statically stored in function "usertab" in file "usertab.c". The matrix is identified by "tableName". Parameter fileName = "NoName" or has only blanks. Row-wise storage is always to be preferred as otherwise the table is reallocated and transposed. See the Tables package documentation for more details.

When the constant "NO_FILE_SYSTEM" is defined, all file I/O related parts of the source code are removed by the C-preprocessor, such that no access to files takes place.

If tables are read from a text file, the file needs to have the following structure ("-----" is not part of the file content):

----------------------------------------------------- #1 double tab1(5,2) # comment line 0 0 1 1 2 4 3 9 4 16 double tab2(5,2) # another comment line 0 0 2 2 4 8 6 18 8 32 -----------------------------------------------------

Note, that the first two characters in the file need to be "#1" (a line comment defining the version number of the file format). Afterwards, the corresponding matrix has to be declared with type (= "double" or "float"), name and actual dimensions. Finally, in successive rows of the file, the elements of the matrix have to be given. The elements have to be provided as a sequence of numbers in row-wise order (therefore a matrix row can span several lines in the file and need not start at the beginning of a line). Numbers have to be given according to C syntax (such as 2.3, -2, +2.e4). Number separators are spaces, tab (\t), comma (,), or semicolon (;). Several matrices may be defined one after another. Line comments start with the hash symbol (#) and can appear everywhere. Text files should either be ASCII or UTF-8 encoded, where UTF-8 encoded strings are only allowed in line comments and an optional UTF-8 BOM at the start of the text file is ignored. Other characters, like trailing non comments, are not allowed in the file.

MATLAB is a registered trademark of The MathWorks, Inc.

Extends from `Modelica.Blocks.Interfaces.MIMOs`

(Multiple Input Multiple Output continuous control block with same number of inputs and outputs).

Type | Name | Default | Description |
---|---|---|---|

`Integer` | `n` | `size(columns, 1)` | Number of inputs (= number of outputs) |

`Boolean` | `tableOnFile` | `false` | = true, if table is defined on file or in function usertab |

`Real` | `table[:,:]` | `fill(0, 0, 2)` | Table matrix (grid = first column; e.g., table=[0, 0; 1, 1; 2, 4]) |

`String` | `tableName` | `"NoName"` | Table name on file or in function usertab (see docu) |

`String` | `fileName` | `"NoName"` | File where matrix is stored |

`Boolean` | `verboseRead` | `true` | = true, if info message that file is loading is to be printed |

`Integer` | `columns[:]` | `2:size(table, 2)` | Columns of table to be interpolated |

`Smoothness` | `smoothness` | `Modelica.Blocks.Types.Smoothness.LinearSegments` | Smoothness of table interpolation |

`Extrapolation` | `extrapolation` | `Modelica.Blocks.Types.Extrapolation.LastTwoPoints` | Extrapolation of data outside the definition range |

`Boolean` | `verboseExtrapolation` | `false` | = true, if warning messages are to be printed if table input is outside the definition range |

`Real` | `u_min` | `Internal.getTable1DAbscissaUmin(tableID)` | Minimum abscissa value defined in table |

`Real` | `u_max` | `Internal.getTable1DAbscissaUmax(tableID)` | Maximum abscissa value defined in table |

Type | Name | Description |
---|---|---|

`RealInput` | `u[n]` | Connector of Real input signals |

`RealOutput` | `y[n]` | Connector of Real output signals |

Table look-up in one dimension (matrix/file) with one input and n outputs

**Univariate constant**, **linear** or **cubic Hermite
spline interpolation** in **one** dimension of a
**table**.
Via parameter **columns** it can be defined how many columns of the
table are interpolated. If, e.g., columns={2,4}, it is assumed that
2 output signals are present and that the first output interpolates
via column 2 and the second output interpolates via column 4 of the
table matrix.

The grid points and function values are stored in a matrix "table[i,j]", where the first column "table[:,1]" contains the grid points and the other columns contain the data to be interpolated. Example:

table = [0, 0; 1, 1; 2, 4; 4, 16] If, e.g., the input u = 1.0, the output y = 1.0, e.g., the input u = 1.5, the output y = 2.5, e.g., the input u = 2.0, the output y = 4.0, e.g., the input u =-1.0, the output y = -1.0 (i.e., extrapolation).

- The interpolation interval is found by a binary search where the interval used in the last call is used as start interval.
- Via parameter
**smoothness**it is defined how the data is interpolated:smoothness = 1: Linear interpolation = 2: Akima interpolation: Smooth interpolation by cubic Hermite splines such that der(y) is continuous, also if extrapolated. = 3: Constant segments = 4: Fritsch-Butland interpolation: Smooth interpolation by cubic Hermite splines such that y preserves the monotonicity and der(y) is continuous, also if extrapolated. = 5: Steffen interpolation: Smooth interpolation by cubic Hermite splines such that y preserves the monotonicity and der(y) is continuous, also if extrapolated.

- Values
**outside**of the table range, are computed by extrapolation according to the setting of parameter**extrapolation**:extrapolation = 1: Hold the first or last value of the table, if outside of the table scope. = 2: Extrapolate by using the derivative at the first/last table points if outside of the table scope. (If smoothness is LinearSegments or ConstantSegments this means to extrapolate linearly through the first/last two table points.). = 3: Periodically repeat the table data (periodical function). = 4: No extrapolation, i.e. extrapolation triggers an error

- If the table has only
**one row**, the table value is returned, independent of the value of the input signal. - The grid values (first column) have to be strictly increasing.

The table matrix can be defined in the following ways:

- Explicitly supplied as
**parameter matrix**"table", and the other parameters have the following values:tableName is "NoName" or has only blanks, fileName is "NoName" or has only blanks.

**Read**from a**file**"fileName" where the matrix is stored as "tableName". Both text and MATLAB MAT-file format is possible. (The text format is described below). The MAT-file format comes in four different versions: v4, v6, v7 and v7.3. The library supports at least v4, v6 and v7 whereas v7.3 is optional. It is most convenient to generate the MAT-file from FreeMat or MATLAB® by commandsave tables.mat tab1 tab2 tab3

or Scilab by commandsavematfile tables.mat tab1 tab2 tab3

when the three tables tab1, tab2, tab3 should be used from the model.

Note, a fileName can be defined as URI by using the helper function loadResource.- Statically stored in function "usertab" in file "usertab.c". The matrix is identified by "tableName". Parameter fileName = "NoName" or has only blanks. Row-wise storage is always to be preferred as otherwise the table is reallocated and transposed. See the Tables package documentation for more details.

When the constant "NO_FILE_SYSTEM" is defined, all file I/O related parts of the source code are removed by the C-preprocessor, such that no access to files takes place.

If tables are read from a text file, the file needs to have the following structure ("-----" is not part of the file content):

----------------------------------------------------- #1 double tab1(5,2) # comment line 0 0 1 1 2 4 3 9 4 16 double tab2(5,2) # another comment line 0 0 2 2 4 8 6 18 8 32 -----------------------------------------------------

Note, that the first two characters in the file need to be "#1" (a line comment defining the version number of the file format). Afterwards, the corresponding matrix has to be declared with type (= "double" or "float"), name and actual dimensions. Finally, in successive rows of the file, the elements of the matrix have to be given. The elements have to be provided as a sequence of numbers in row-wise order (therefore a matrix row can span several lines in the file and need not start at the beginning of a line). Numbers have to be given according to C syntax (such as 2.3, -2, +2.e4). Number separators are spaces, tab (\t), comma (,), or semicolon (;). Several matrices may be defined one after another. Line comments start with the hash symbol (#) and can appear everywhere. Text files should either be ASCII or UTF-8 encoded, where UTF-8 encoded strings are only allowed in line comments and an optional UTF-8 BOM at the start of the text file is ignored. Other characters, like trailing non comments, are not allowed in the file.

MATLAB is a registered trademark of The MathWorks, Inc.

Extends from `Modelica.Blocks.Interfaces.SIMO`

(Single Input Multiple Output continuous control block).

Type | Name | Default | Description |
---|---|---|---|

`Integer` | `nout` | `size(columns, 1)` | Number of outputs |

`Boolean` | `tableOnFile` | `false` | = true, if table is defined on file or in function usertab |

`Real` | `table[:,:]` | `fill(0, 0, 2)` | Table matrix (grid = first column; e.g., table=[0, 0; 1, 1; 2, 4]) |

`String` | `tableName` | `"NoName"` | Table name on file or in function usertab (see docu) |

`String` | `fileName` | `"NoName"` | File where matrix is stored |

`Boolean` | `verboseRead` | `true` | = true, if info message that file is loading is to be printed |

`Integer` | `columns[:]` | `2:size(table, 2)` | Columns of table to be interpolated |

`Smoothness` | `smoothness` | `Modelica.Blocks.Types.Smoothness.LinearSegments` | Smoothness of table interpolation |

`Extrapolation` | `extrapolation` | `Modelica.Blocks.Types.Extrapolation.LastTwoPoints` | Extrapolation of data outside the definition range |

`Boolean` | `verboseExtrapolation` | `false` | = true, if warning messages are to be printed if table input is outside the definition range |

`Real` | `u_min` | `Internal.getTable1DAbscissaUmin(tableID)` | Minimum abscissa value defined in table |

`Real` | `u_max` | `Internal.getTable1DAbscissaUmax(tableID)` | Maximum abscissa value defined in table |

Type | Name | Description |
---|---|---|

`RealInput` | `u` | Connector of Real input signal |

`RealOutput` | `y[nout]` | Connector of Real output signals |

Table look-up in two dimensions (matrix/file)

**Bivariate constant**, **bilinear** or **bivariate
Akima interpolation** of a **two-dimensional table**.
The grid points and function values are stored in a matrix "table[i,j]",
where:

- the first column "table[2:,1]" contains the u1 grid points,
- the first row "table[1,2:]" contains the u2 grid points,
- the other rows and columns contain the data to be interpolated.

Example:

| | | | | 1.0 | 2.0 | 3.0 | // u2 ----*-------*-------*-------* 1.0 | 1.0 | 3.0 | 5.0 | ----*-------*-------*-------* 2.0 | 2.0 | 4.0 | 6.0 | ----*-------*-------*-------* // u1 is defined as table = [0.0, 1.0, 2.0, 3.0; 1.0, 1.0, 3.0, 5.0; 2.0, 2.0, 4.0, 6.0] If, e.g., the input u1 is 1.0, input u2 is 1.0 and smoothness is LinearSegments, the output y is 1.0, e.g., the input u1 is 2.0, input u2 is 1.5 and smoothness is LinearSegments, the output y is 3.0.

- The interpolation interval is found by a binary search where the interval used in the last call is used as start interval.
- Via parameter
**smoothness**it is defined how the data is interpolated:smoothness = 1: Bilinear interpolation = 2: Bivariate Akima interpolation: Smooth interpolation by bicubic Hermite splines such that der(y) is continuous, also if extrapolated. = 3: Constant segments = 4: Fritsch-Butland interpolation: Not supported = 5: Steffen interpolation: Not supported

- Values
**outside**of the table range, are computed by extrapolation according to the setting of parameter**extrapolation**:extrapolation = 1: Hold the first or last values of the table, if outside of the table scope. = 2: Extrapolate by using the derivative at the first/last table points if outside of the table scope. (If smoothness is LinearSegments or ConstantSegments this means to extrapolate linearly through the first/last two table points.). = 3: Periodically repeat the table data (periodical function). = 4: No extrapolation, i.e. extrapolation triggers an error

- If the table has only
**one element**, the table value is returned, independent of the value of the input signal. - If the input signal
**u1**or**u2**is**outside**of the defined**interval**, the corresponding value is also determined by linear interpolation through the last or first two points of the table. - The grid values (first column and first row) have to be strictly increasing.

The table matrix can be defined in the following ways:

- Explicitly supplied as
**parameter matrix**"table", and the other parameters have the following values:tableName is "NoName" or has only blanks, fileName is "NoName" or has only blanks.

**Read**from a**file**"fileName" where the matrix is stored as "tableName". Both text and MATLAB MAT-file format is possible. (The text format is described below). The MAT-file format comes in four different versions: v4, v6, v7 and v7.3. The library supports at least v4, v6 and v7 whereas v7.3 is optional. It is most convenient to generate the MAT-file from FreeMat or MATLAB® by commandsave tables.mat tab1 tab2 tab3

or Scilab by commandsavematfile tables.mat tab1 tab2 tab3

when the three tables tab1, tab2, tab3 should be used from the model.

Note, a fileName can be defined as URI by using the helper function loadResource.- Statically stored in function "usertab" in file "usertab.c". The matrix is identified by "tableName". Parameter fileName = "NoName" or has only blanks. Row-wise storage is always to be preferred as otherwise the table is reallocated and transposed. See the Tables package documentation for more details.

When the constant "NO_FILE_SYSTEM" is defined, all file I/O related parts of the source code are removed by the C-preprocessor, such that no access to files takes place.

If tables are read from a text file, the file needs to have the following structure ("-----" is not part of the file content):

----------------------------------------------------- #1 double table2D_1(3,4) # comment line 0.0 1.0 2.0 3.0 # u[2] grid points 1.0 1.0 3.0 5.0 2.0 2.0 4.0 6.0 double table2D_2(4,4) # comment line 0.0 1.0 2.0 3.0 # u[2] grid points 1.0 1.0 3.0 5.0 2.0 2.0 4.0 6.0 3.0 3.0 5.0 7.0 -----------------------------------------------------

Note, that the first two characters in the file need to be "#1" (a line comment defining the version number of the file format). Afterwards, the corresponding matrix has to be declared with type (= "double" or "float"), name and actual dimensions. Finally, in successive rows of the file, the elements of the matrix have to be given. The elements have to be provided as a sequence of numbers in row-wise order (therefore a matrix row can span several lines in the file and need not start at the beginning of a line). Numbers have to be given according to C syntax (such as 2.3, -2, +2.e4). Number separators are spaces, tab (\t), comma (,), or semicolon (;). Several matrices may be defined one after another. Line comments start with the hash symbol (#) and can appear everywhere. Text files should either be ASCII or UTF-8 encoded, where UTF-8 encoded strings are only allowed in line comments and an optional UTF-8 BOM at the start of the text file is ignored. Other characters, like trailing non comments, are not allowed in the file. The matrix elements are interpreted in exactly the same way as if the matrix is given as a parameter. For example, the first column "table2D_1[2:,1]" contains the u[1] grid points, and the first row "table2D_1[1,2:]" contains the u[2] grid points.

MATLAB is a registered trademark of The MathWorks, Inc.

Extends from `Modelica.Blocks.Interfaces.SI2SO`

(2 Single Input / 1 Single Output continuous control block) and `Modelica.Blocks.Tables.Internal.CombiTable2DBase`

(Base class for variants of CombiTable2D).

Type | Name | Default | Description |
---|---|---|---|

`Boolean` | `tableOnFile` | `false` | = true, if table is defined on file or in function usertab |

`Real` | `table[:,:]` | `fill(0, 0, 2)` | Table matrix (grid u1 = first column, grid u2 = first row; e.g., table=[0, 0; 0, 1]) |

`String` | `tableName` | `"NoName"` | Table name on file or in function usertab (see docu) |

`String` | `fileName` | `"NoName"` | File where matrix is stored |

`Boolean` | `verboseRead` | `true` | = true, if info message that file is loading is to be printed |

`Smoothness` | `smoothness` | `Modelica.Blocks.Types.Smoothness.LinearSegments` | Smoothness of table interpolation |

`Extrapolation` | `extrapolation` | `Modelica.Blocks.Types.Extrapolation.LastTwoPoints` | Extrapolation of data outside the definition range |

`Boolean` | `verboseExtrapolation` | `false` | = true, if warning messages are to be printed if table input is outside the definition range |

`Real` | `u_min[2]` | `getTable2DAbscissaUmin(tableID)` | Minimum abscissa value defined in table |

`Real` | `u_max[2]` | `getTable2DAbscissaUmax(tableID)` | Maximum abscissa value defined in table |

Type | Name | Description |
---|---|---|

`RealInput` | `u1` | Connector of Real input signal 1 |

`RealInput` | `u2` | Connector of Real input signal 2 |

`RealOutput` | `y` | Connector of Real output signal |

Table look-up in two dimensions (matrix/file) with vector inputs and vector output of size n

**Bivariate constant**, **bilinear** or **bivariate
Akima interpolation** of a **two-dimensional table**.
The grid points and function values are stored in a matrix "table[i,j]",
where:

- the first column "table[2:,1]" contains the u1 grid points,
- the first row "table[1,2:]" contains the u2 grid points,
- the other rows and columns contain the data to be interpolated.

Example:

| | | | | 1.0 | 2.0 | 3.0 | // u2 ----*-------*-------*-------* 1.0 | 1.0 | 3.0 | 5.0 | ----*-------*-------*-------* 2.0 | 2.0 | 4.0 | 6.0 | ----*-------*-------*-------* // u1 is defined as table = [0.0, 1.0, 2.0, 3.0; 1.0, 1.0, 3.0, 5.0; 2.0, 2.0, 4.0, 6.0] If, e.g., the input u1 is {1.0}, input u2 is {1.0} and smoothness is LinearSegments, the output y is {1.0}, e.g., the input u1 is {2.0}, input u2 is {1.5} and smoothness is LinearSegments, the output y is {3.0}.

- Via parameter
**smoothness**it is defined how the data is interpolated:smoothness = 1: Bilinear interpolation = 2: Bivariate Akima interpolation: Smooth interpolation by bicubic Hermite splines such that der(y) is continuous, also if extrapolated. = 3: Constant segments = 4: Fritsch-Butland interpolation: Not supported = 5: Steffen interpolation: Not supported

- Values
**outside**of the table range, are computed by extrapolation according to the setting of parameter**extrapolation**:extrapolation = 1: Hold the first or last values of the table, if outside of the table scope. = 2: Extrapolate by using the derivative at the first/last table points if outside of the table scope. (If smoothness is LinearSegments or ConstantSegments this means to extrapolate linearly through the first/last two table points.). = 3: Periodically repeat the table data (periodical function). = 4: No extrapolation, i.e. extrapolation triggers an error

- If the table has only
**one element**, the table value is returned, independent of the value of the input signal. - If the input signal
**u1**or**u2**is**outside**of the defined**interval**, the corresponding value is also determined by linear interpolation through the last or first two points of the table. - The grid values (first column and first row) have to be strictly increasing.

The table matrix can be defined in the following ways:

- Explicitly supplied as
**parameter matrix**"table", and the other parameters have the following values:tableName is "NoName" or has only blanks, fileName is "NoName" or has only blanks.

**Read**from a**file**"fileName" where the matrix is stored as "tableName". Both text and MATLAB MAT-file format is possible. (The text format is described below). The MAT-file format comes in four different versions: v4, v6, v7 and v7.3. The library supports at least v4, v6 and v7 whereas v7.3 is optional. It is most convenient to generate the MAT-file from FreeMat or MATLAB® by commandsave tables.mat tab1 tab2 tab3

or Scilab by commandsavematfile tables.mat tab1 tab2 tab3

when the three tables tab1, tab2, tab3 should be used from the model.

Note, a fileName can be defined as URI by using the helper function loadResource.

----------------------------------------------------- #1 double table2D_1(3,4) # comment line 0.0 1.0 2.0 3.0 # u[2] grid points 1.0 1.0 3.0 5.0 2.0 2.0 4.0 6.0 double table2D_2(4,4) # comment line 0.0 1.0 2.0 3.0 # u[2] grid points 1.0 1.0 3.0 5.0 2.0 2.0 4.0 6.0 3.0 3.0 5.0 7.0 -----------------------------------------------------

Note, that the first two characters in the file need to be "#1" (a line comment defining the version number of the file format). Afterwards, the corresponding matrix has to be declared with type (= "double" or "float"), name and actual dimensions. Finally, in successive rows of the file, the elements of the matrix have to be given. The elements have to be provided as a sequence of numbers in row-wise order (therefore a matrix row can span several lines in the file and need not start at the beginning of a line). Numbers have to be given according to C syntax (such as 2.3, -2, +2.e4). Number separators are spaces, tab (\t), comma (,), or semicolon (;). Several matrices may be defined one after another. Line comments start with the hash symbol (#) and can appear everywhere. Text files should either be ASCII or UTF-8 encoded, where UTF-8 encoded strings are only allowed in line comments and an optional UTF-8 BOM at the start of the text file is ignored. Other characters, like trailing non comments, are not allowed in the file. The matrix elements are interpreted in exactly the same way as if the matrix is given as a parameter. For example, the first column "table2D_1[2:,1]" contains the u[1] grid points, and the first row "table2D_1[1,2:]" contains the u[2] grid points.

MATLAB is a registered trademark of The MathWorks, Inc.

Extends from `Modelica.Blocks.Interfaces.MI2MO`

(2 Multiple Input / Multiple Output continuous control block) and `Modelica.Blocks.Tables.Internal.CombiTable2DBase`

(Base class for variants of CombiTable2D).

Type | Name | Default | Description |
---|---|---|---|

`Integer` | `n` | `1` | Dimension of input and output vectors. |

`Boolean` | `tableOnFile` | `false` | = true, if table is defined on file or in function usertab |

`Real` | `table[:,:]` | `fill(0, 0, 2)` | Table matrix (grid u1 = first column, grid u2 = first row; e.g., table=[0, 0; 0, 1]) |

`String` | `tableName` | `"NoName"` | Table name on file or in function usertab (see docu) |

`String` | `fileName` | `"NoName"` | File where matrix is stored |

`Boolean` | `verboseRead` | `true` | = true, if info message that file is loading is to be printed |

`Smoothness` | `smoothness` | `Modelica.Blocks.Types.Smoothness.LinearSegments` | Smoothness of table interpolation |

`Extrapolation` | `extrapolation` | `Modelica.Blocks.Types.Extrapolation.LastTwoPoints` | Extrapolation of data outside the definition range |

`Boolean` | `verboseExtrapolation` | `false` | = true, if warning messages are to be printed if table input is outside the definition range |

`Real` | `u_min[2]` | `getTable2DAbscissaUmin(tableID)` | Minimum abscissa value defined in table |

`Real` | `u_max[2]` | `getTable2DAbscissaUmax(tableID)` | Maximum abscissa value defined in table |

Type | Name | Description |
---|---|---|

`RealInput` | `u1[n]` | Connector 1 of Real input signals |

`RealInput` | `u2[n]` | Connector 2 of Real input signals |

`RealOutput` | `y[n]` | Connector of Real output signals |