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

Таблицы свойства жидкости

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

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

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

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

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

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

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

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

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

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

Необходимо получить данные о свойстве жидкости на специфичном для давления внутреннем энергетическом пробеле, e.g., посредством прямого вычисления, от собственной базы данных, или из независимого источника. В этом примере вы создаете четыре функции 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'); 

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