Gas Domain
To view the complete domain source file, at the MATLAB® Command prompt, type:
open([matlabroot '/toolbox/physmod/simscape/library/m/+foundation/+gas/gas.ssc'])
Abbreviated gas domain declaration is shown below, with intermediate lookup table values omitted for readability.
domain gas
% Gas Domain
% Copyright 2016-2019 The MathWorks, Inc.
parameters
gas_spec = foundation.enum.gas_spec.perfect_gas; % Gas specification
% 1 - perfect_gas
% 2 - semiperfect_gas
% 3 - real_gas
% Perfect gas properties
R = {0.287, 'kJ/(kg*K)'}; % Specific gas constant
Z = {1, '1' }; % Compressibility factor
T_ref = {293.15, 'K' }; % Reference temperature for gas properties
h_ref = {420, 'kJ/kg' }; % Specific enthalpy at reference temperature
cp_ref = {1, 'kJ/(kg*K)'}; % Specific heat at constant pressure
cv_ref = {0.713, 'kJ/(kg*K)'}; % Specific heat at constant volume
mu_ref = {18, 'uPa*s' }; % Dynamic viscosity
k_ref = {26, 'mW/(m*K)' }; % Thermal conductivity
Pr_ref = {0.692307692307692, '1' }; % Prandtl number
% Semiperfect gas properties
T_TLU1 = {[150:10:200, 250:50:1000, 1500, 2000]', 'K'}; % Temperature vector
log_T_TLU1 = {[
5.01063529409626
5.07517381523383
...
7.60090245954208
], '1'}; % Log temperature vector
h_TLU1 = {[
275.264783730547
285.377054177734
...
2377.14064127409
], 'kJ/kg'}; % Specific enthalpy vector
cp_TLU1 = {[
1.01211492398124
1.01042105529234
...
1.24628356718428
], 'kJ/(kg*K)'}; % Specific heat at constant pressure vector
cv_TLU1 = {[
0.725174216111164
0.723480347422265
...
0.959342859314206
], 'kJ/(kg*K)'}; % Specific heat at constant volume vector
mu_TLU1 = {[
10.3766056544352
10.9908682444892
...
68.0682900809450
], 'uPa*s'}; % Dynamic viscosity vector
k_TLU1 = {[
14.1517155766309
15.0474512994325
...
114.486299090693
], 'mW/(m*K)'}; % Thermal conductivity vector
Pr_TLU1 = {[
0.742123270231960
0.738025627675206
...
0.740982912785154
], '1'}; % Prandtl number vector
a_TLU1 = {[
245.095563145758
253.217606015000
...
863.440849227825
], 'm/s'}; % Speed of sound vector
int_dh_T_TLU1 = {[
0
0.0652630980004620
0.126478959779276
...
2.79681971660776
], 'kJ/(kg*K)'}; % integral of dh/T vector
% Real gas properties
% Default gas property tables for dry air
% Rows of the tables correspond to the temperature vector
% Columns of the tables correspond to the pressure vector
T_TLU2 = {[150:10:200, 250:50:1000, 1500, 2000]', 'K' }; % Temperature vector
p_TLU2 = {[0.001,0.005,0.01:0.01:0.1,0.12,0.15,0.2,0.5,1,2,5,10]','MPa'}; % Pressure vector
log_T_TLU2 = {[
5.01063529409626
5.07517381523383
...
7.60090245954208
], '1'}; % Log temperature vector
log_p_TLU2 = {[
9.21034037197618
9.90348755253613
...
16.1180956509583
], '1'}; % Log pressure vector
log_rho_TLU2 = {[
-1.45933859209149 -0.765580954956293 ... 2.84006136461620
], '1'}; % Log density table
s_TLU2 = {[
3.85666832168988 3.65733557342939 ... 4.66584072487367
], 'kJ/(kg*K)'}; % Specific entropy table
h_TLU2 = {[
276.007989595737 275.926922934925 ... 2386.79535914098
], 'kJ/kg'}; % Specific enthalpy table
cp_TLU2 = {[
1.00320557010184 1.00416915257750 ... 1.24767439351222
], 'kJ/(kg*K)'}; % Specific heat at constant pressure table
cv_TLU2 = {[
0.715425577953031 0.715655648411093 ... 0.960303115685940
], 'kJ/(kg*K)'}; % Specific heat at constant volume table
mu_TLU2 = {[
10.3604759816291 10.3621937105615 ... 68.3249440282350
], 'uPa*s'}; % Dynamic viscosity table
k_TLU2 = {[
14.0896194596466 14.0962928994967 ... 114.905858092359
], 'mW/(m*K)'}; % Thermal conductivity table
Pr_TLU2 = {[
0.737684026417089 0.738165370950116 ... 0.741888050943969
], '1'}; % Prandtl number table
a_TLU2 = {[
245.567929192228 245.496359667264 ... 878.939999571000
], 'm/s'}; % Speed of sound table
log_drho_dp_TLU2 = [
-10.6690690699104 -10.6678475863467 ... -13.2956456388403
]; % Log derivative of density with respect to pressure table
log_drho_dT_TLU2 = [
-6.46809263806814 -5.77245144865022 ... -4.77782516923660
]; % Log derivative of density with respect to temperature table
drhou_dp_TLU2 = [
5.41617782089664 5.42024592837099 ... 3.03095417965253
]; % Derivative of internal energy per unit volume with respect to pressure table
drhou_dT_TLU2 = {[
-0.195280173069178 -0.391714814336739 ... 1.27305147462835
], 'kJ/(m^3*K)'}; % Derivative of internal energy per unit volume with respect to temperature table
pT_region_flag = foundation.enum.pT_region_G.from_props;
% Valid pressure-temperature region parameterization
% 1 - from_props
% 2 - min_max
% 3 - validity
pT_validity_TLU2 = ones(24, 20); % Pressure-temperature validity matrix
T_min = {1, 'K' }; % Minimum valid temperature
T_max = {inf, 'K' }; % Maximum valid temperature
p_min = {1, 'MPa'}; % Minimum valid pressure
p_max = {inf, 'MPa'}; % Maximum valid pressure
p_atm = {0.101325, 'MPa'}; % Atmospheric pressure
properties_range_check = simscape.enum.assert.action.error; % Pressure and temperature outside valid range
% 0 - none
% 1 - warn
% 2 - error
Mach_rev = 0.001; % Mach number threshold for flow reversal
T_unit = {1, 'K' }; % Unit for log temperature
p_unit = {1, 'Pa' }; % Unit for log pressure
rho_unit = {1, 'kg/m^3' }; % Unit for log density
drho_dp_unit = {1, 'kg/(m^3*Pa)'}; % Unit for log derivative of density with respect to pressure
drho_dT_unit = {1, 'kg/(m^3*K)' }; % Unit for log derivative of density with respect to temperature
log_ZR = 5.65948221575962; % Log of compressibility factor times specific gas constant
end
variables
p = {value = {0.1, 'MPa'}, imin = {0, 'MPa'}}; % Pressure
T = {value = {300, 'K' }, imin = {0, 'K' }}; % Temperature
end
variables (Balancing=true)
mdot = {0, 'kg/s'}; % Mass flow rate
Phi = {0, 'kW' }; % Energy flow rate
end
end
The domain declaration contains the following variables and parameters:
Across variable p (absolute pressure), in MPa
Through variable mdot (mass flow rate), in kg/s
Across variable T (temperature), in K
Through variable Phi (energy flow rate), in kW
Parameter T_min, defining the minimum allowable temperature
Parameter T_max, defining the maximum allowable temperature
Parameter p_min, defining the minimum allowable pressure
Parameter p_max, defining the maximum allowable pressure
Parameter p_atm, defining the atmospheric pressure
Parameter gas_spec provides a choice of three gas models:
1
— Perfect (default)2
— Semiperfect3
— Real
In the Foundation Gas library, the Gas Properties (G) block serves as the source for domain parameter values, including the selection of the gas model. For more information on propagation of domain parameters, see Working with Domain Parameters.
The domain declaration also contains sets of parameters that define gas properties for each gas model.
Properties for semiperfect and real gas are in the form of lookup table data. These
parameter declarations propagate to the components connected to the Gas domain, and
therefore you can use them in the tablelookup
function in the
component equations.
To refer to this domain in your custom component declarations, use the following syntax:
foundation.gas.gas