・CONWIZを使おう!

 このところ,とある企業からの依頼を受けてラバルノズルの計算を行っている.「ホームページの内容を見て」依頼を思い立ったのだそうだ.地道に更新してきた甲斐があったというものだ.ラバルノズルの計算は,簡単な様で実は難しい.流れが臨界点をまたぐとき,Phoenicsは収束させるためにテクニックが必要なのだ.

 Phoenics3.6.1で計算させたときの,relaxationの設定は以下の通り.この組み合わせを見つけるまでには相当の熟練を要する.

************************************************************
Group 17. Relaxation
RELAX(P1 ,LINRLX, 5.000000E-01)
RELAX(U1 ,FALSDT, 1.000000E-03)
RELAX(V1 ,FALSDT, 1.000000E-03)
RELAX(W1 ,FALSDT, 1.000000E-03)
RELAX(KE ,LINRLX, 5.000000E-01)
RELAX(EP ,LINRLX, 5.000000E-01)
RELAX(DEN1,LINRLX, 2.000000E-01)
RELAX(TEM1,FALSDT, 1.000000E-01)
KELIN = 3
************************************************************

 ところが,最近Phoenicsが2006にバージョンアップしたので導入したところ,同じケースが計算出来なくなってしまった.X-wingなどは上手くいくのだが,ノズルだけが上手くいかない.どうも,私は運が悪いらしく,いつもそのとき取り組んでいる問題のケースだけがバージョンアップで計算出来なくなる.

 計算が止まる原因は温度が0を下回るため.つまり,relaxationの設定に問題がある,と言うことなのだが3.6.1では動いていたので不思議.ソルバーのアルゴリズムが変わったのだろう.この辺の検証は後日ゆっくりとやるつもり.

 CHAM社にサポートを依頼したが,現在のところ返信なし.そこで自分で問題を解決することにした.まず当然はじめはrelaxationを弄るところから始める.しかし,温度,圧力のfalse time step(FALSDT)を1e-8にしても,圧力や密度のlinear relaxation(LINRLX)を0.01にしても,計算は必ずストップする.流れ方向をzからx,yに変えたり(これはparallelのみで有効なテクニック),ノズルの物性値を弄ったり,初期条件,怪しげなオプションなどありとあらゆる設定を弄ってみたが収束せず.

 さて,ここで賢明な諸兄は「何でCONWIZを使わないの?」と仰るかもしれない.もちろん,CONWIZについてはその登場当初(3.6.0)から知っており,試しに使っては見たものの,我々の興味ある系で収束向上に功を奏したことは無かった.そもそもCONWIZは,手動では困難な緩和係数設定を自動化するもので,収束を加速するものではない.従って収束する緩和係数を手動で設定してきた我々にはあまり魅力あるオプションではないのだ(計算も多少遅くなるし).一応今回もCONWIZを使っては見たものの,計算は途中でストップ.

 困り果てて,Googleで「phoenics 収束」のキーワードで検索.するとCHAM社のCONWIZに関する説明のページがヒットした.で,はじめからじっくり読んでみる.すると以下のような記述が!


2. 8. ユーザーによる設定
従来どおりの緩和係数や変数の最大最小値の設定が行われていれば,その設定が優先されます.
さらにCONWIZの参照値ちや最大補正量をユーザーが設定することによってCONWIZの働きを援助することも出来ます.

注意)
 ・速度の緩和には線形緩和係数を使用します.
 ・CONWIZに全て任せることをお勧めします.


 つまり,

ということだ.「参照値」はよく分からないが,最大補正量は確かに設定可能になっている.では,以下で,どうやって私はPhoenics2006で収束するq1ファイルを作ったか,をご紹介しよう.

まず,Phoenics2006で収束しなくなってしまったq1ファイルを開く.[MENU]→[Numerics]→[Relaxation control]で緩和係数設定画面を表示.で,[Automatic Convergence Control]を[ON]に切り替え,続いて[Rest solution defaults]をクリック.

このまま走らせても収束しない.今回のケースの場合,温度の最大補正量を小さくすることで成功した.

温度の最大補正量は1000だが,これを1まで減らす.ちなみに10では収束しなかったので,こいつがキモであることは明白.これで,無事計算が回るようになった.また一つ,重要なノウハウを身につけることに成功.たぶん,Googleで検索しなければこの解答にたどりつくことは出来なかったろう.「Google革命」というのはこういう事なのだろう.

・まとめ