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

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

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

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

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

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

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

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

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

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

  • Получите свойства жидкости на внутренних энергетических сетках, относящихся к давлению.

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

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

Рисунок открывается внутренней энергетической сеткой, зависящей от давления.