分離型ソルバーへのゴール探索の導入

2021年 1月 19日

COMSOL Multiphysics® ソフトウェアのコア技術の1つに, 非線形マルチフィジックス(およびシングルフィジックス)問題で解を迅速に収束させるために使用される, 分離型の求解アプローチがあります. このソルバーにグローバル方程式を追加することによって, モデルの入力を調整し, 目的の出力を達成できることをご存じでしたか?その詳細をご紹介します.

ソルバーの収束速度を上げる

マルチフィジックスの問題に取り組むときは, 必ず非線形方程式系を解くことになります. この方程式系は, 通常, 非常に大きいため, 求解するのに多くの時間と計算資源を必要とします.

ソルバーの収束を早める1つの方法は, いわゆる分離型ソルバーを使用することです. このソルバーは大規模な方程式系, または方程式の行列をいくつかの小さい行列に分割(または分離)します. 通常, これらの部分行列のそれぞれはシングルフィジックスに対応しています. 求解アプローチの間, ソフトウェアはこれらの部分行列の1つをいわゆる分離ステップで解きます. すべての部分行列を計算した後, ソルバーは収束をチェックし, 収束が達成されるまで必要に応じて反復します.

このアプローチは, 幅広い問題に対してロバストに効果を発揮し, 特に計算量の多い3Dモデルにとっては魅力的ですが, こういったケースでは, ほとんどの場合, デフォルトで使用されます.

入力値の範囲にわたるスイープをプロットする, 望ましいモデル出力と推定される望ましい動作点の注釈付き折れ線グラフ.

入力値の範囲でスイープを行うことで, モデルの応答を予測し, 目的の動作点を推定することができます.

モデルを解く際に, ジオメトリは全く変えたくないが, ある特定の目標を念頭に置いて他のモデル入力を変更したいという状況がよくあります. つまり, モデルに特定の出力をさせたいのです.

例えば, 目的とする温度や熱負荷, 流量, その他の派生する値を達成したい場合です. これは形式的には最適化の問題で, 最適化モジュールを使用して簡単に対処することができます. しかし, 変化させるモデル入力が1つだけの場合, 最適化モジュールを使用するのは少しやり過ぎになる可能性があります. ここでは, 入力を調整して目的の出力を取得するためのいくつかの代替アプローチを見ていきましょう.

このモデル入力を見つける最も簡単な方法は, パラメトリックスイープを使用することです. つまり, 変更したい入力を指定し, スイープする値の範囲を指定して, 入力に対する出力結果のグラフをプロットします. このグラフから, 目的の動作点を視覚的に選択することができます.

これは非常に伝統的な方法ですが, ややコストがかかります. 多くの場合, 反応曲線は単調ではあるものの, かなり非線形であるため, 通常, 調べたい範囲の2つの値を大幅に超える, いくつもの値を求解する必要があり, 求解する時間は値の数に応じて長くなります. (ただし, これには注意点があります. クラスタースイープバッチスイープ機能を使用することもできますが, どちらもかなりのハードウェア容量を必要とします. このブログでは, ハードウェアにある制約があるという前提で話しています. )

ゴール探索機能を用いたグローバル方程式の使用

今日はこの問題に対する別の, そして非常に効率的なアプローチを見てみましょう. 分離型ソルバーにゴール探索方程式を導入します. これは以下の3つによって非常に簡単に行うことができます.

  • 1つのグローバルODEおよびDAEインターフェース
  • 少し注意が必要な構成の方程式
  • ソルバー設定の微調整

代表的な例を見てみましょう.

典型的なジュール熱の問題の概略図で, 2 つの電極間の材料に含まれているもので, 部品にラベルが付いています.

1つの介在物が2つの電極間の材料の中にある, ジュール熱問題の概略図. すべての材料特性は温度の関数です.

上に示した ジュール熱の問題を考えてみましょう. 組織アブレーションモデルで発生するように, 異なる導電率の介在物を含む媒体に2つの電極が適用されています. 材料特性で考えられる温度の非線形性により, このようなモデルは実際には非常に複雑な結果をもたらし得ます.

展開されたグローバル方程式セクションに表示される追加のグローバル方程式を含むグローバル方程式設定ウィンドウ.

モデルに追加のグローバル方程式を導入する方法

ここでは, 電極の電位をもう一方の接地電極に対して調整し, 介在物内でちょうど3ワットが消費されるようにしたいと考えます. 電極の印加電位はV_appliedという変数であり, 上のスクリーンショットのようにモデルにグローバル方程式を追加して操作します. ここで入力する非常にシンプルな方程式は以下になります.

V_applied-nojac(sqrt(3[W]/intop(ec.Qrh))*V_applied)

この方程式は各分離反復の中で解かれ, V_appliedを更新します. 印加電圧は, 積分演算子で算出された消費電力に基づいてスケーリングされます. 少なくとも集中モデルでは, 消費電力は電位差の二乗に比例することがわかっているので, 平方根が使用されます. nojac() の中の全ては ヤコビ行列に寄与せず, その項は1つ前の分離ステップでの値, または最初のステップであれば初期値に基づいています. V_appliedの初期値は0以外でなければならず, 適切な初期値であれば収束が早くなることに注意してください.

分離型ソルバーの設定ウィンドウのスクリーンショット. グローバル方程式を実装するために一般セクションと, メソッドセクションと終了セクションが展開されています.

電位の後に解かれるグローバル方程式を用いた分離型ソルバーの設定.

分離型ソルバーの設定において, 更新式は算出された消費電力に基づいているため, この分離ステップが電流の分離ステップの後に解かれていることを確認する必要があります. また, 材料の導電率が温度に対して非線形である場合, 温度場が消費電力の計算に影響を与える可能性があるため, 電流の前またはグローバル方程式が解かれた後に温度場が計算されていることを確認する必要があります.

分離ソルバーに下限を実装するために使用される下限設定ウィンドウのスクリーンショット.

分離型ソルバーの上限と下限の機能.

さらに, 分離型ソルバーでは, 解かれる変数に上限と下限を与えるオプション機能があります. つまり, 反復の間で, 指定された値よりも大きい, または小さいV_applied を計算する場合, ソルバーは代わりに制限値を使用するということです. この機能は, 特に下限値を設定する際に役に立ちます. 適用される電位が0になってしまうと, そこから先の更新ができなくなるため, 絶対に避けたいのです. 上限値を設定する際は, それを超えると電位が設定できなくなる値がわかっている場合に役に立ちます.

分離型アプローチを用いてこのモデルを解く際には, V_appliedをモニターして, 各反復の間にどのように更新されているのかを確認したいと思います. これは, プローブと以下のスクリーンショットに示されている設定によって行うことができます. 分離型ソルバーにはトレランスファクターが含まれています. これは, 定常ソルバー機能で定義されたデフォルトのトレランス 0.001を乗じたものです. この数値をデフォルトの1より小さくすると, ソルバーの収束基準が厳しくなります. また, 収束が非常に遅い場合は, 分離型ソルバーの反復回数を増やすこともできますので覚えておいてください.

反復ごとにプローブをプロットする方法を示すために展開された一般および求解中の結果セクションを含む分離ソルバー設定のスクリーンショット.

分離反復をする度にプローブをプロットする方法とトレランスファクターの設定.

ここでの問題では, 非常に速い収束が得られます. 分離型ソルバーの収束プロットと, プローブプロットを以下に示しています. もちろん, 非線形問題の収束が保証されているわけではありません. 一般的に, グローバル方程式の追加更新は収束を遅らせることになりますが, 非常に多くの場合, 特に適正な初期値が選択された場合は, この手法はロバストに使用することができます. なお, 対象とする物理現象や値によっては, 異なる形式の更新式が必要になることがあります. ここでは比率の平方根を使用していますが, 反復の間に線形または指数関数的なスケーリングを使用することもできます. このアプローチは, 一種の比例制御装置, または固定小数点反復スキームと考えることもできます.

分離されたソルバーの収束(左)とグローバル方程式のプローブ(右)を示す横並びのラインプロット.

分離型ソルバーの収束と追加のグローバル方程式のプローブプロット.

この方法の素晴らしい点は, 計算効率の高い分離型アプローチを用いて, たった1つの解法で設計点に到達することです. この1つの解法は, グローバル方程式を使用しない場合と比べると, 数回多く反復処理が必要になるかもしれませんが, 目的の解に素早く到達できるため, ほとんどの場合はこちらの方が効率的です. また, 時間領域で解きたい場合, 各時間ステップでグローバル方程式を満たすことができれば, この方法をそのまま使うことができます.

もちろん, この方法がうまくいかない場合もあります. その場合は, 分離型ではなく完全連成したアプローチを使った別の手法を採用することができますが, 詳しくは次回のブログでご紹介しますので, お楽しみに!

この例題に関連するモデルファイルは, 以下のボタンから入手できます.

コメント (0)

コメントを残す
ログイン | 登録
Loading...
COMSOL ブログを探索