Characteristics#
In this part we give an introduction on the TESPy characteristics
implementation. There two different types of characteristics available in
TESPy: lines (CharLine
)
and maps (CharMap
).
The default characteristics available are to be found in the
tespy.data module documentation.
Characteristic lines#
The characteristic lines use linear interpolation in order to determine the y-value given a x-value as input, where x is between the lower boundary \(x_0\) and the upper boundary \(x_1\). \(y_0\) and \(y_1\) are the corresponding y-values.
It is possible to specify an extrapolate
parameter. If the value is
False
(default state) and the x-value is above the maximum or below the
minimum value of the characteristic line the y-value corresponding to the
maximum/minimum value is returned instead. If the extrapolate
is
True
linear extrapolation is performed using the two lowermost or
uppermost value pairs respectively.
Characteristic maps#
The characteristic maps use linear interpolation as well. First step is interpolation on the x-dimension similar to the characteristic line functionality. As the y and z data are two-dimensional, each row of the data corresponds to one x value. Thus, the result of the first step is a vector for each dimension (y and z).
Using the y value as second input dimension the corresponding z values are calculated, again using linear interpolation.
Note
Using compressors map functions \(\vec{y}\) and \(\vec{z}\) are
manipulated with by the value of the inlet guide vane angle. Also see the
corresponding methods
tespy.components.turbomachinery.compressor.Compressor.char_map_eta_s_func
and
tespy.components.turbomachinery.compressor.Compressor.char_map_pr_func
in the API documentation.
Import your own characteristics#
It is possible to import your own characteristic lines or maps instead of writing the x, y (and z) data into your python script, for example:
from tespy.tools.characteristics import CharLine
from tespy.tools.characteristics import load_custom_char
from tespy.tools.characteristics import CharMap
gen_char = load_custom_char('generator', CharLine)
gen_char = load_custom_char('custom_map', CharMap)
For the imports to work in the way shown, navigate to your .tespy folder in
your HOME directory HOME/.tespy
. Create a folder named data
, if
it does not exist. In this folder, you can place two json-files for your
characteristics.
char_lines.json
char_maps.json
Your custom definitions of characteristic lines go into the
char_lines.json
and your characteristic map definitions go into the
char_maps.json
document.
The char_lines.json
should have names for identification of the
characteristic lines on the first level. On the second level the x and y data
are assigned to the name of the characteristic line. The x and y data must be
stated as lists.
{
"name_of_char_line": {
"x": [0, 0.5, 1, 1.5, 2],
"y": [0.8, 0.9, 1, 1.1, 1.2]
},
"name_of_2nd_char_line": {
"x": [0, 0.5, 1, 1.5, 2],
"y": [2, 1.1, 1, 1.2, 1.7]
},
"name_of_last_char_line": {
"x": [0, 0.5, 1, 1.5, 2],
"y": [0.8, 0.95, 1, 0.95, 0.8]
}
}
The char_maps.json
should also have names for identification of the
characteristic lines on the first level. On the second level we additionally
need z data. The x data are a list of values, the y and z data are arrays with
a list of values for each dimension of the x data. The example below has 3 x
values, thus the y and z data must contain 3 sets of values.
{
"name_of_char_map": {
"x": [0.971, 1, 1.029],
"y": [[0.93, 0.943, 0.953, 0.961, 0.962, 0.963],
[0.987, 0.995, 1.0, 1.002, 1.005, 1.005],
[1.02, 1.023, 1.026,1.028, 1.03, 1.032]],
"z": [[0.982, 0.939, 0.895, 0.851, 0.806, 0.762],
[1.102, 1.052, 1.0, 0.951, 0.9, 0.85],
[1.213, 1.149, 1.085, 1.022, 0.958, 0.894]]
}
}