Main Content

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 — Semiperfect

  • 3 — 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

Related Topics