AKNモデルの作成について

403 views
Skip to first unread message

mei

unread,
May 2, 2014, 3:13:28 AM5/2/14
to open...@googlegroups.com
皆様こんにちは.

Launder-Sharmaモデルからモデル係数とモデル関数を変更してAKNモデルを作成しようとしております.
コンパイルはできましたが,エラーが出て計算が流れません.

-->FOAM FATAL ERROR
Argument of trancendental function not dimensionless

AKNモデルでの大きな変更としてはモデル関数にy_epsilonが入ることということと上記のエラー内容(超越関数の引数が無次元でない)から,モデル関数fMu()とf2()が上手くできてないのかと思いました.
試しに,モデル関数からy_epsilonの項を抜き取ると計算が流れました.(当然計算はすぐに発散しましたが)

y_epsilon = y×u_epsilon/nu
u_epsilon=(nu×epsilon)^{1/4}

とすると,壁面からの距離を表すyの読み込みが上手くできていないのかなと思いましたが,よくわかりませんでした.
モデル関数を計算を流れるようにしたときに次の時刻でyが保存されていたので読み込めていると思ったのですが・・・
また,使ったことがなく,何ができるかもわからないのですが,壁面散逸境界についてはgroovyBCを用いようと考えていますができますでしょうか?
プログラムを添付します.どなたか宜しくお願い致します.


AKNモデル
AKN.C
AKN.H

nakagawa

unread,
May 2, 2014, 8:31:09 AM5/2/14
to open...@googlegroups.com
meiさん,

読み込んでいる y の dimension は正しいでしょうか?

壁面からの距離 y を,kOmegaSSTでは wallDist で求めています。


なかがわ

2014年5月2日金曜日 16時13分28秒 UTC+9 mei:

mei

unread,
May 8, 2014, 4:47:00 AM5/8/14
to open...@googlegroups.com
nakagawa様

返信の方遅れまして申し訳ございません.
kMegaSSTモデルを参考にwallDistでyを定義しました.
また,モデル関数内の数字を3.1→scalar(3.1)のように定義したら計算は進みました.(こうしなきゃいけないのでしょうか?)
しかし,すぐに止まってしまいます.

現在プログラムの書き間違いなどを探していますが,散逸率εの壁面境界において次のように与えているのですがこれで合っているのでしょうか?

    lowerWall
    {
        type    groovyBC;
    variables (
          "yp=pos().y;"
          "kp=k*mag(pos());"
          "func=kp/(yp*yp);"
    );
    valueExpression "2*nu*func";
        value        uniform 8.91368;

これで,壁面からの第一点目のkとyを使えると思っているのですが・・・

以下がエラーになります.乱流エネルギーkの最小が負となっておりこれが原因かなと思っています.
DILUPBiCG:  Solving for Ux, Initial residual = 1, Final residual = 3.37461e-05, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 0.000107268, No Iterations 1
DICPCG:  Solving for p, Initial residual = 1, Final residual = 0.0074671, No Iterations 95
time step continuity errors : sum local = 1.4063, global = 0.0451286, cumulative = 0.0451286
swak4Foam: Allocating new repository for sampledGlobalVariables
DILUPBiCG:  Solving for epsilon, Initial residual = 0.259323, Final residual = 0.00615872, No Iterations 1
DILUPBiCG:  Solving for k, Initial residual = 1, Final residual = 0.0201136, No Iterations 1
bounding k, min: -0.0516107 max: 0.230339 average: 0.217347
#0  Foam::error::printStack(Foam::Ostream&) in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1  Foam::sigFpe::sigHandler(int) in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2   in "/lib/x86_64-linux-gnu/libc.so.6"
#3   in "/lib/x86_64-linux-gnu/libm.so.6"
#4  Foam::pow(Foam::Field<double>&, Foam::UList<double> const&, double const&) in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#5  Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::pow<Foam::fvPatchField, Foam::volMesh>(Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&, Foam::dimensioned<double> const&) in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#6  Foam::incompressible::RASModels::AKN::fMu() const in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#7  Foam::incompressible::RASModels::AKN::correct() in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/lib/libincompressibleRASModels.so"
#8 
 in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/bin/simpleFoam"
#9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#10 
 in "/home/eustia/OpenFOAM/OpenFOAM-2.2.x/platforms/linux64GccDPOpt/bin/simpleFoam"
浮動小数点例外 (コアダンプ)

よろしくおねがいします.

mei

unread,
May 19, 2014, 11:43:24 AM5/19/14
to open...@googlegroups.com
こんにちは

あれから上の投稿から色々試しておりますが,あまりうまくいっておりません.
"yp=y;"、 "kp=k;"
と与えると計算は回るのですが,結果が散々たるものになります.
壁面での値を指定してやると,DNSに似た結果は得られますが,やはり違います.

境界をkpにすると先のエラーがでないため,ypが読み込めてないのかなと思っています.
しかし,他の方の資料を見ても,pos().yかpts().yでy座標を与えており,セル中心ではpos()を用いるとあり,
よくわかりません.

どなたかご教授よろしくおねがいします.

ONO Hiroki

unread,
Jun 3, 2014, 4:38:33 AM6/3/14
to open...@googlegroups.com
こんにちは。

3.4節,3.5節のdeltaやinternalFieldがちょうどよいかもしれません。


2014年5月20日火曜日 0時43分24秒 UTC+9 mei:
Reply all
Reply to author
Forward
0 new messages