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