Вручную сгенерируйте жидкие таблицы свойства

Жидкие таблицы свойства

Жидкие таблицы свойства предоставляют основные входные параметры блоку Two-Phase Fluid Properties (2P). Если у вас есть программное обеспечение REFPROP установленным Национальным институтом стандартов и технологий, можно автоматически сгенерировать эти таблицы с помощью функции twoPhaseFluidTables. Если вы получаете жидкие свойства из другого источника, такие как программное обеспечение CoolProp, можно все еще сгенерировать таблицы с помощью скрипта MATLAB®. Этот пример показывает, как создать скрипт, чтобы сгенерировать жидкие температурные таблицы.

Таблицы должны обеспечить жидкие свойства при дискретных давлениях и нормировали внутренние энергии. Давления должны соответствовать столбцам таблицы и нормированным внутренним энергиям к строкам таблицы. Установка давления и нормированной внутренней энергии как независимые переменные позволяет вам задать жидкость и таблицы свойства фазы пара на отдельном прямоугольном использовании сеток матрицы MATLAB.

Данные показывают две жидких сетки свойства на специфичном для давления внутреннем энергетическом пробеле (слева) и нормированном давлением внутреннем энергетическом пробеле (справа). Если вы получаете жидкие таблицы свойства на специфичной для давления внутренней энергетической сетке, необходимо преобразовать ту сетку в ее нормированную давлением внутреннюю эквивалентную энергию. В этом примере это преобразование обработано скриптом MATLAB, который вы создаете.

Шаги для генерации таблиц свойства

Скрипт MATLAB, который вы создаете в этом примере, выполняет следующие задачи:

  • Табличные критерии свойства Define, включая размерности и специфичную для давления внутреннюю энергетическую область.

  • Создайте прямоугольные сетки на нормированном давлением внутреннем энергетическом пробеле.

  • Сопоставьте сетки на специфичный для давления внутренний энергетический пробел.

  • Получите жидкие свойства на специфичных для давления внутренних энергетических сетках.

Прежде, чем сгенерировать таблицы свойства

Необходимо получить жидкие данные о свойстве на специфичном для давления внутреннем энергетическом пробеле, например, посредством прямого вычисления, от собственной базы данных, или из независимого источника. В этом примере вы создаете четыре функции MATLAB, чтобы обеспечить данные о свойстве в качестве примера. В действительном приложении необходимо заменить эти функции на эквивалентные функции, записанные в данные о недвижимости доступа.

Создайте жидкие функции свойства

Создайте следующие функции MATLAB. Эти функции обеспечивают данные о свойстве в качестве примера, которые вы используете в этом примере. Гарантируйте, что файлы функции находятся на пути MATLAB. Используйте имена функций и показанный код:

  • Имя — liquidTemperature

    function T = liquidTemperature(u, p) 
    % Returns artificial temperature data as a function 
    % of specific internal energy and pressure.
    T = 300 + 0.2*u - 0.08*p;

  • Имя — vaporTemperature

    function T = vaporTemperature(u, p)
    % Returns artificial temperature data as a function 
    % of specific internal energy and pressure.
    T = -1000 + 0.6*u + 5*p;
  • Имя — saturatedLiquidInternalEnergy

    function u = saturatedLiquidInternalEnergy(p)
    % Returns artificial data for saturated liquid specific
    % internal energy as a function of pressure.
    u = sqrt(p)*400 + 150;
  • Имя — saturatedVaporInternalEnergy

    function u = saturatedVaporInternalEnergy(p)
    % Returns artificial data for saturated vapor specific
    % internal energy as a function of pressure.
    u = -3*p.^2 + 40*p + 2500;

Установите табличные критерии свойства

Запустите новый скрипт MATLAB. Сохраните скрипт в той же папке как функции MATLAB, которые вы создали, чтобы сгенерировать данные о свойстве жидкости в качестве примера. В скрипте задайте критерии таблиц свойства. Сделайте это путем ввода следующего кода для табличных размерностей и специфичной для давления внутренней энергии допустимые области значений:

% Number of rows in the liquid property tables
mLiquid = 25;
% Number of rows in the vapor property tables
mVapor = 25;
% Number of columns in the liquid and vapor property tables
n = 60;

% Minimum specific internal energy, kJ/kg
uMin = 30;
% Maximum specific internal energy, kJ/kg
uMax = 4000;
% Minimum pressure, MPa
pMin = 0.01;
% Maximum pressure, MPa
pMax = 15;

% Store minimum and maximum values in structure fluidTables
fluidTables.uMin = uMin;
fluidTables.uMax = uMax;
fluidTables.pMin = pMin;
fluidTables.pMax = pMax;

Создайте нормированные давлением внутренние энергетические сетки

Задайте давление, и нормировал внутренние энергетические векторы для сетки. Эти векторы обеспечивают дискретное давление и нормировали внутреннюю энергетическую ценность, сопоставленную с каждым узлом решетки. Вектор давления логарифмически расположен с интервалами из-за широкой области значений давления, рассмотренной в этом примере. Однако можно использовать любой тип разрядки, которая удовлетворяет данным. В вашем скрипте MATLAB добавьте этот код:

% Pressure vector, logarithmically spaced
fluidTables.p = logspace(log10(pMin), log10(pMax), n);

% Normalized internal energy vectors, linearly spaced
fluidTables.liquid.unorm = linspace(-1, 0, mLiquid)';
fluidTables.vapor.unorm = linspace(1, 2, mVapor)';

Сопоставьте сетки на специфичный для давления внутренний энергетический пробел

Получите влажную жидкость и испаритесь определенные внутренние энергии как функции давления. Насыщение внутренние энергии позволяет вам сопоставить нормированные внутренние энергетические векторы в эквивалентные векторы на определенном внутреннем энергетическом пробеле. В вашем скрипте MATLAB добавьте этот код:

% Initialize the saturation internal energies of the liquid and vapor phases
fluidTables.liquid.u_sat = zeros(1, n);
fluidTables.vapor.u_sat = zeros(1, n);

% Obtain the saturation internal energies at the pressure vector values
for j = 1 : n
    fluidTables.liquid.u_sat(j) = saturatedLiquidInternalEnergy(fluidTables.p(j));
    fluidTables.vapor.u_sat(j) = saturatedVaporInternalEnergy(fluidTables.p(j));
end
Этот код вызывает две функции, записанные, чтобы сгенерировать данные в качестве примера. Перед использованием этого кода в действительном приложении необходимо заменить функции на эквивалентные выражения, способные к доступу к действительным данным. Функции, которые необходимо заменить:

  • saturatedLiquidInternalEnergy

  • saturatedVaporInternalEnergy

Сопоставьте нормированные внутренние энергетические векторы на эквивалентные определенные внутренние энергетические векторы. В вашем скрипте MATLAB добавьте этот код:

% Map pressure-specific internal energy grid onto
% pressure-normalized internal energy space
fluidTables.liquid.u = (fluidTables.liquid.unorm + 1)*...
(fluidTables.liquid.u_sat - uMin) + uMin;
fluidTables.vapor.u = (fluidTables.vapor.unorm - 2)*...
(uMax - fluidTables.vapor.u_sat) + uMax;

Получите жидкие свойства в узлах решетки

Можно теперь получить жидкие свойства в каждом узле решетки. Следующий код показывает, как сгенерировать температурные таблицы для фаз пара и жидкости. Используйте аналогичный подход, чтобы сгенерировать остающиеся жидкие таблицы свойства. В вашем скрипте MATLAB добавьте этот код:

% Obtain temperature tables for the liquid and vapor phases
for j = 1 : n
     for i = 1 : mLiquid
        fluidTables.liquid.T(i,j) = ...
liquidTemperature(fluidTables.liquid.u(i,j), fluidTables.p(j));
    end
    for i = 1 : mVapor
        fluidTables.vapor.T(i,j) = ...
vaporTemperature(fluidTables.vapor.u(i,j), fluidTables.p(j));
    end
end

Этот код вызывает две функции, записанные, чтобы сгенерировать данные в качестве примера. Перед использованием этого кода в действительном приложении необходимо заменить функции на эквивалентные выражения, способные к доступу к действительным данным. Функции, которые необходимо заменить:

  • liquidTemperature

  • vaporTemperature

Просмотреть температурные сгенерированные таблицы, первый показ скрипт. Затем в подсказке команды MATLAB введите fluidTables. MATLAB перечисляет содержимое массива структур fluidTables.

fluidTables =

      uMin: 30
      uMax: 4000
      pMin: 0.0100
      pMax: 15
         p: [1x20 double]
    liquid: [1x1 struct]
     vapor: [1x1 struct]

Чтобы перечислить таблицы, хранимые свойства в подструктуре liquid, в подсказке команды MATLAB вводят fluidTables.liquid.

  305.9992  305.9988  305.9983  305.9975  ...
  309.5548  309.7430  309.9711  310.2475  ...
  313.1103  313.4872  313.9440  314.4976  ...
  316.6659  317.2314  317.9169  318.747  ...
  ...       

Визуализируйте сетки

Чтобы визуализировать исходную сетку на нормированном давлением внутреннем энергетическом пробеле, в подсказке команды MATLAB вводят этот код:

% Define p and unorm matrices with the grid
% point coordinates
pLiquid = repmat(fluidTables.p, mLiquid, 1);
pVapor = repmat(fluidTables.p, mVapor, 1);

unormLiquid = repmat(fluidTables.liquid.unorm, 1, n);
unormVapor = repmat(fluidTables.vapor.unorm, 1, n);

% Plot grid
figure;
hold on;

plot(unormLiquid, pLiquid, 'b.');
plot(unormVapor, pVapor, 'b.');

plot(zeros(1, n), fluidTables.p, 'k-');
plot(ones(1, n), fluidTables.p, 'k-');

hold off;
set(gca, 'yscale', 'log');
xlabel('Normalized Internal Energy');
ylabel('Pressure');
title('Grid in Normalized Internal Energy');

Фигура открывается нормированной давлением внутренней энергетической сеткой.

Чтобы визуализировать преобразованную сетку на специфичном для давления внутреннем энергетическом пробеле, в подсказке команды MATLAB вводят этот код:

% Define horizontal and vertical axes

% Plot grid
figure;
hold on;

plot(fluidTables.liquid.u, pLiquid, 'b.');
plot(fluidTables.vapor.u, pVapor, 'b.');

plot(fluidtables.liquid.u_sat, fluidTables.p, 'k-');
plot(fluidtables.vapor.u_sat, fluidTables.p, 'k-');

hold off;
set(gca, 'yscale', 'log');
xlabel('Specific Internal Energy');
ylabel('Pressure');
title('Grid in Specific Internal Energy'); 

Фигура открывается специфичной для давления внутренней энергетической сеткой.