PRO/II COMを使ったPythonからの物性係数取得

Pocket

PRO/II COM接続

こちらに記載したようにPRO/IIは、外部からCOM接続を行うことでデータの授受を行うことができ非常に便利です。

例えば、PythonでCOM接続を行う場合は、以下のようにwin32.comをimportすることで接続が可能。

import win32com.client as win32

具体的な使い方は、「PRO/IITM Process Engineering COM Server Programmer’s Guide and Tutorial」に記載されていますが、大まかな流れは以下の通り。(マニュアルのBasic Operations参照)

  1. Start the PRO/II COM Server
  2. Open a database
  3. Load a data object into memory
  4. Read/write attributes (performing Units-of-Measure conversion if required)
  5. Save the data object back to the database (if it was modified) and free the object
  6. Close the database
  7. Shut down the PRO/II COM Server

サーバーやデータベース、オブジェクトに対して行えるコマンド類は、「PRO/IITM Process Engineering COM Server Reference Guide」にまとめられています。

オブジェクト名、Attributeの確認

PRO/IIをインストールした際、同時にインストールされるPRO/II Viewerを使うことで、接続しているPRO/IIファイル内のオブジェクト名、Attributeを簡単に確認することができます。

例えば、以下では登録されている成分名がCompInというオブジェクト内にあることが分かります。また、各成分名をクリックすると、各成分に登録されている物性情報を確認することができます。

温度依存物性の係数を一括取得する場合

シミュレーターの計算がおかしいと感じた場合、手計算と一致するか確認したい場合があるかと思います。

各物性情報を一つずつ手動で取り出すのは手間がかかるので、COM接続で一括取得してみます。

例えば、Idealgasのエンタルピーの係数は、CompInオブジェクトのCorrrelCoefxLib(xは1~9の数字)の中の2番目に保存されています。

このため、HIGの係数をまとめて取得し、CSV形式で出力したいという場合は、例えば以下のように記載できます。

for i in range(0, NOC):
    compnames.append(pro2db.GetObjectNames("CompIn", i))
    comps.append(pro2db.ActivateObject("CompIn", compnames[i]))
    for j in range(0,6):
        if j == 0:
            coeff = comps[i].GetAttribute("CorrelCoeff1Lib", -1)
        elif j == 1:
            coeff = comps[i].GetAttribute("CorrelCoeff2Lib", -1)
        elif j == 2:
            coeff = comps[i].GetAttribute("CorrelCoeff3Lib", -1)
        elif j == 3:
            coeff = comps[i].GetAttribute("CorrelCoeff4Lib", -1)
        elif j == 4:
            coeff = comps[i].GetAttribute("CorrelCoeff5Lib", -1)
        elif j == 5:
            coeff = comps[i].GetAttribute("CorrelCoeff6Lib", -1)
        else:
            print("error")
        coef_HIG[i, j] = coeff[1]
np.savetxt('out.csv',coef_HIG,delimiter=',')

Pocket

コメント

タイトルとURLをコピーしました