概要
Aspen Plus等の化学工学計算シミュレータを使用するにあたって悩ましい問題の1つが収束計算です。
大学までの収束計算はExcelのSolver機能でほとんど事足りますが、それ故に収束計算法について詳しく勉強する機会がありません。
そのため、会社でシミュレータを使用するようになって初めて、"計算式は合っているはずなのに解が得られない、収束しない"という収束計算の壁にぶち当たる人も多いのではないでしょうか。
この記事では化学工学計算シミュレータでよく使用される収束計算手法について解説しています。加えて、どのように設定すれば収束しやすいか、というコツも紹介しています。
収束計算が発生する状況
収束計算が発生するということは、入口条件から順々に計算して解を求められないということです。
そのような状況は様々ありますが、代表的なものを3つ挙げます。
循環ラインがあるとき
未反応の原料をリサイクルする等の循環ライン(リサイクルループ)がある場合は収束計算が発生します。
反応工程では、
- 反応時間が遅く100%完結させようとすると反応器サイズが大きくなる。
- 反応率が低い方が製品の選択率が良い。
以上の理由から未反応原料が後工程に来ることがよくあります。
そのまま未反応原料を捨ててしまうのはもったいないので、未反応原料だけ分離してリサイクルします。
循環ラインの流量や組成は反応工程や分離工程の計算を一通りしないと得られないため、収束計算が発生します。
出口条件を指定して計算するとき
出口条件を指定して計算するときは収束計算が発生します。
例えば、
- ExcelのSolver機能で所定のセルの値がゼロになるように計算する。
- シミュレータで製品ラインの純度が○○%となるように計算する。
上のようなケースは出口条件を指定するケースに該当します。
"収束計算が発生する"と言うとなんだか悪いことのように思えますが、実際には出口条件指定はとても便利です。
シミュレータで製品純度が○○%以上となるように計算したい場合、例えば分離機の効率を上げていけば所定の純度を達成できますが、手動で分離効率を何回も入力し直すのは面倒です。
そのような場合は所定の純度となるように分離効率を変数として収束計算すれば、簡単に適切な分離効率を計算することができます。
蒸留計算をするとき
プロセスに蒸留計算が含まれている場合は基本的に収束計算が必要となります。
シミュレータを使用した蒸留計算はかなり簡素化されており、例えば
- 留出・缶出抜き出し流量
- 還流比
- リボイラーの加熱量
上のような値を指定することで蒸留計算させることができます。
しかし、これらの値を指定することはある意味で出口条件を指定していることと変わりません。したがって収束計算が発生します。
蒸留とはそれだけ計算負荷の高い単位操作だということです。
収束計算手法
次に収束計算の手法にどのようなものがあるか解説します。
ここでは有名なシミュレータの1つであるAspen Plusで使用されている手法の一部を紹介します。
どの手法も一長一短あり、計算の内容によって使い分けるのが理想です。
Direct法
Direct法は逐次代入法とも呼ばれます。
あるループでの計算結果を、そのまま次の初期条件とする手法です。
非常に簡便な手法ですが、計算する関数次第で発散する可能性が高く、シミュレータの精密計算では使いづらいです。
後に紹介するWegstein法がDirect法の上位互換的な存在なため、あえて設定を変えて使用することはほとんどありません。
以下の記事で詳しく解説しています。
Wegstein法
Direct法を修正し収束しやすくした手法です。
Aspen Plusでは循環ラインの収束計算手法としてデフォルトで設定されています。
ただし厳密にはAspen Plusで使用されているのはBounded Wegstein法で、acceleration parameterと呼ばれる定数qに上下限値を設定して計算しています。
定数qの上下限値は一般に、
- -5<q<0:デフォルト値。ほとんどの計算はデフォルトで問題ない。
- qの下限値を小さい値(-25,-50など)で設定:収束が遅く計算回数がかかる場合。
- 0<q<1:解が振動して得られない場合。
上のような値で設定するのが望ましいとされています。
以下の記事で詳しく解説しています。
Secant法
準Newton法(quasi-Newton method)ともいいます。
Newton法の微分計算箇所を近似値で表現することで計算負荷を軽くしています。
その一方で計算精度がNewton法より落ちますが、ほとんどの計算では精度の低下は問題とならないと思います。
Aspen Plusで出口条件を1つ指定する場合(Single Design Spec)のデフォルトの計算手法となっています。
以下の記事で詳しく解説しています。
Broyden法
Secant法を多次元に拡張した手法で、Secant法と計算思想は同じです。
Aspen Plusで出口条件を複数指定する場合のデフォルトの計算手法となっています。
Wegstein法とBroyden法はAspen Plusの中でコアな計算手法となっていますので名前くらいは覚えておきましょう。
Newton法
Newton-Raphson法ともいいます。
関数の微分値を使用して収束計算する手法です。
- 非常に解に近い初期値を与える必要がある
- 収束する場合は非常に早い
- 計算負荷が高い
等の特徴があります。
共沸系等の非理想性が高い系において、他の手法で収束しないときはNewton法を試してみる価値があります。
以下の記事で詳しく解説しています。
収束計算のコツ
計算がなかなか収束しないときのコツをいくつか紹介します。
なるべく正確な初期値を入力する
収束計算は必ず何かしらの初期値を必要とします。
シミュレータに初期値を入力していなくても計算できることがよくありますが、これはシミュレータが何かしらのアルゴリズムで勝手に初期値を補間しているだけです。本来ならユーザーが適切な初期値を入力するべきです。
良いシミュレータほど初期値補間が優れていますが、その弊害としてユーザーが何も考えていなくても収束計算できることがあります。
計算が収束することと正しい解が得られることは全く別の話です。
非線形方程式は解が複数存在することがほとんどなので、妥当だと思われる解に近い初期値を入力しましょう。
ではどうやって妥当だと思われる初期値を推測するのか、という話ですが化学工学を含めた理論から推測するのが一般的です。
- 物質収支・・・流量や組成等を限定できる。物質収支が成り立たない計算結果は間違っている。
- 気液平衡及び温度・・・組成が予測できれば気液平衡から温度も予測可能。
- 圧力・・・圧力変化による影響が大きい場合は圧損を計算して入力する。
など、ある程度あたりを付けることは可能です。
収束計算箇所を減らす
収束計算の箇所が多ければ多いほど収束しにくくなります。
いきなり収束計算させてきちんと収束するならよいです。しかし収束しないならまずは収束計算条件を外してみるのも一つの手です。
まったく収束計算を行なわない状態で計算させて解が得られないなら、そもそも何らかの入口設定条件が適切でない可能性が高いです。
リサイクルループを切る
リサイクルループを切ることでその箇所の収束計算を回避できます。
余談ですがAspen PlusではわざわざStreamを切らなくても、Selecterというブロックを使用すればリサイクルループを切った計算と繋げた計算の両方をフローシート上に表すことができます。
ただしリサイクルループを切った場合は、ループ出口の計算結果に近い値をループ入口の初期値として入力する必要があります。
初期値を予測して入力してもいいですし、Aspen Plusでは各ステップのループ出口の計算結果をループ入口の初期値として自動的に張り付けるような設定も可能です。
出口指定条件をなくす
同様に出口指定条件をOFFにすることで収束計算を回避できます。
出口指定条件をOFFにすれば収束する、と言う場合は出口指定条件に実現不可能な値を入力していた可能性が高いです。
理論的にその条件は達成可能なのかを一度考え直しましょう。
不純物のパージラインを設ける
製品をどこのラインから取り出すかはきちんと考えますが、不純物をどこから取り出すかを考えていないことが意外と多いです。
計算上は製品・不純物の区別なく、全ての化合物に対して物質収支が成立するように入口・出口を設ける必要があります。
不純物の出口ラインを付けていないと不純物が系内で循環してどんどん濃縮し、いつまで経っても収束しません。
指定する変数を変える
系によりますが、収束しやすい変数・しにくい変数は確かにあります。
よく言われるのが流量指定と組成・比率指定です。
初期値の予測精度が悪く、初期値から解の値が大きく変化しうる場合は、流量指定ではなく組成・比率指定の方が収束しやすいことがあります。
他にも還流量ではなく還流比で指定するなど、指定する変数を変えてみるのも一つの手です。
なるべく微小成分の条件を指定する
可能であればバルク成分ではなく微小成分の条件を指定した方が収束計算に有利になることが多いです。
バルク成分は値が大きいので誤差も大きくなりがちで、微小成分の計算が振動して収束しないことがあります。
微小成分の計算を条件指定できっちり決定するとそのような振動は起こりにくく収束しやすいです。
繰り返し計算回数の上限を増やす
収束計算を行なう場合は通常、繰り返し計算回数の上限を設定します。
収束計算の残差が順調に小さくなっているのにも関わらず、繰り返し計算回数の上限に達して計算が打ち切られてしまう場合は上限回数を増やすのが1つの手です。
ただし、私の経験上そのようなことはまれで、たいていは残差があるところで一定値になってしまい収束しないことが多いです。
そのような場合は上限回数を増やしても意味がなく、別の方法を考えた方がよいです。
収束許容誤差を厳しくする
Aspen Plusでの収束許容誤差はデフォルトで10-4です。
この許容誤差を緩めることで収束しやすくなるのは確かですが、得られた解が正しくない可能性が高くなります。
どちらかというと許容誤差は厳しい方向に変更する方が、不適切な解に収束するのを避けられるため望ましいです。
まとめ
化学工学計算シミュレータでよく使用される計算手法や収束計算のコツについて紹介しました。
化学工学では非線形方程式を解くことが多いため、収束計算は避けては通れません。収束が難しい系では、記事で述べたようなことを確認しつつトライ&エラーを繰り返す泥臭さが必要です。
諦めなければ意外となんどかなるものです。