Main Content

流体プロパティ テーブルの手動生成

流体プロパティ テーブル

流体プロパティ テーブルは、Two-Phase Fluid Properties (2P) ブロックに基本入力を与えます。米国標準技術局による REFPROP ソフトウェアまたは CoolProp ソフトウェアがインストールされている場合、関数 twoPhaseFluidTables を使用してこのテーブルを自動的に生成できます。他のソースから流体プロパティを取得した場合も、MATLAB® スクリプトを使用してテーブルを生成できます。このチュートリアルでは、流体の温度テーブルを生成するためのスクリプトを作成する方法を説明します。

テーブルは、離散化された圧力と正規化された内部エネルギーでの流体プロパティを示さなければなりません。圧力がテーブルの列に、正規化された内部エネルギーがテーブルの行に対応しなければなりません。圧力と正規化された内部エネルギーを独立変数として設定すると、液相と蒸気相のプロパティ テーブルを、MATLAB 行列を使用して、独立した四角形のグリッドで指定できます。

次の図は、圧力-比内部エネルギー空間 (左) と、圧力-正規化された内部エネルギー空間 (右) における、2 つの流体プロパティ グリッドを示します。圧力-比内部エネルギーのグリッド上で流体プロパティ テーブルを取得した場合、そのグリッドを圧力-正規化された内部エネルギーの同等のグリッドに変換しなければなりません。このチュートリアルでは、MATLAB スクリプトを作成してこの変換を処理します。

プロパティ テーブルの生成手順

このチュートリアルで作成する MATLAB スクリプトでは、次のタスクを実行します。

  • 次元と、圧力-比内部エネルギー ドメインを含む、プロパティ テーブルの条件を定義。

  • 圧力-正規化された内部エネルギー空間に四角形のグリッドを作成。

  • グリッドを圧力-比内部エネルギー空間にマッピング。

  • 圧力-比内部エネルギー グリッドで流体プロパティを取得。

プロパティ テーブルを生成する前に

流体プロパティ データを圧力-比内部エネルギー空間から取得しなければなりません。方法としては、直接計算、独自のデータベース、サードパーティのソースなどがあります。このチュートリアルでは、4 つの 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
このコードは、データ例を生成するために記述された 2 つの関数を呼び出します。このコードを実際のアプリケーションで使用する前に、実際のデータにアクセス可能な同等の式で関数を置き換えなければなりません。置き換えなければならない関数は以下のとおりです。

  • 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

このコードは、データ例を生成するために記述された 2 つの関数を呼び出します。このコードを実際のアプリケーションで使用する前に、実際のデータにアクセス可能な同等の式で関数を置き換えなければなりません。置き換えなければならない関数は以下のとおりです。

  • 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');

圧力-正規化された内部エネルギー グリッドの Figure が開きます。

変換されたグリッドを圧力-比内部エネルギー空間で可視化するには、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'); 

圧力-比内部エネルギー グリッドの Figure が開きます。

参考

|