気体定数Rの読み込みについて

250 views
Skip to first unread message

Kei

unread,
Jan 5, 2016, 12:31:25 AM1/5/16
to OpenFOAM
現在、reactingFoamソルバーの改良に取り組んでいます。
その中で、YEqn.Hの中に、気体定数や分子量を含む方程式を追加する必要があるのですが、どのようにすれば計算されたRやWを参照できるのかが分からずに、困っております。

これらの値は「specieI.H」内で計算されているのだろうと予想し、specie->R()などと記述してみましたが、
コンパイルすると「'specie' was not declared in this scope」と表示されてしまいます。

RやWの参照方法を教えていただけないでしょうか。
よろしくお願いいたします。

Kei

unread,
Jan 7, 2016, 6:34:18 PM1/7/16
to OpenFOAM
皆様

その後、いろいろと試行錯誤をし、
  ・myReactingFoam.Cに「#include "specie.H"」を追記
  ・createField.H内にRやMを含む式を追記
  ・式内のRやWは、「specie::R()」や「specie::W()」と記述
したのですが、コンパイルをすると、
  cannot call member function 'Foam::scalar Foam::specie::R() const' without object
というエラーが出てしまいます。

そもそも、追記したいのは、計算場内の各成分分圧を"volScalarField pN2"などと定義し、
これは計算された圧力p、各成分密度(=rho*Y[i])、R、温度により求めたいというものです。

RやWは各時刻、各セルで濃度に応じてspecieI.Hで計算され、
そのクラスは"specie"だと思い、このように記述したのですが、うまくいきません。

皆様からのアドバイスをお待ちしております。
よろしくお願いいたします。

KeiJun

2016年1月5日火曜日 14時31分25秒 UTC+9 Kei:

nakagawa

unread,
Jan 7, 2016, 7:32:51 PM1/7/16
to OpenFOAM
Kei さん

反応系は専門外ですので,ごく一般的な点についてだけですが,コメントします。

 コードを拝見していないので詳細は不明ですが,投稿内容から判断すると,specieクラスのヘッダをインクルードしただけで,そのクラスを使ったオブジェクトを作成していないのでしょう。
 基本的に,オブジェクトを生成しないかぎり,その機能は使えません。
 
 ただ,新たにspecieクラスからオブジェクトを生成する必要はなく,すでに内部で生成されているものにアクセスするだけで良いのでは?と想像します。

ざっと reactingFoam のコードを見たところ,次のように理解しました。

基本的には,下記の reaction オブジェクト(元となるクラスは,psiCombustionModel)がディクショナリで設定した燃焼モデルの情報を司っている。
autoPtr<combustionModels::psiCombustionModel> reaction

reactionの持つ情報から,必要なモデルの情報へアクセスするためのオブジェクトが作成されている。
psiReactionThermo& thermo = reaction->thermo();
basicMultiComponentMixture& composition = thermo.composition();

basicMultiComponentMixtureクラス(オブジェクトはcomposition)の中では,speciesに関する情報が扱われている。

basicMultiComponentMixtureクラスからつくられたcompositionオブジェクトから,speciesに関する情報にアクセスできそう。

はじめてみたソルバなので,見当違いもあるかもしれませんので,ご容赦ください。
コードを読むキッカケになれば幸いです。
物性関連のコードに興味がありますので,ぜひ,情報共有してください。

なかがわ

2016年1月8日金曜日 8時34分18秒 UTC+9 Kei:
Reply all
Reply to author
Forward
0 new messages