コマンドラインからCOMSOL Multiphysics®を実行する方法

2020年 12月 9日

コマンドラインから同じモデルファイルを繰り返し実行し, 自動的にデータをエクスポートしたいと思ったことはありませんか? COMSOL Multiphysics® ソフトウェアのユーザーインターフェース(UI)でほんの少し準備をするだけで, コマンドラインからモデルのセットアップと評価をかなり自動化できる方法でモデルファイルを補強することができます. その方法をご紹介します.

モデルからのデータの書き出し

このワークフローを説明するために, COMSOL®ソフトウェアの紹介で使用するバスバーのチュートリアルモデルを見てみましょう.このモデルには, パラメーター化されたいくつかの入力があり, レポートのための出力もあります.

まず, モデルからのデータをディスクに書き出してみましょう. このモデルには, 温度場のプロットを含むいくつかのプロットが設定されています. このプロットを右クリックして, エクスポートに画像を追加オプションを選択します. 下のスクリーンショットのように, 結果 > エクスポート > 画像機能が表示されます. この設定では, 出力ファイル名を入力します. なお, 画像レイアウトの設定も必要に応じて調整できます. これらの機能を複数追加して, アニメーションやメッシュ情報など, 他の種類のデータを書き出すこともできます. これらのデータを一度に書き出すには, エクスポートブランチを右クリックし, すべてのエクスポートオプションを選択します.

COMSOL Multiphysics®モデルツリーのスクリーンショット. 結果ノードがエクスポートブランチに開かれ, 画像の書き出し設定が開かれています.

画像ファイルの書き出しに使用した結果内のエクスポートブランチのスクリーンショット.

また, いくつかのスカラー値を抽出してみましょう. 結果ブランチに評価グループ機能を追加し, そこに任意の数の異なるスカラー計算値を追加します. 例えば, すべてのドメインにおける損失の積分を取り, 最大温度を評価します. 評価グループの設定では, 以下のようにファイル名も指定します.

評価グループノードを開き, 数値データのファイルへの書き込みを指定する設定を行った画面.

数値データの組み合わせをファイルに書き出す評価グループのスクリーンショット.

評価グループエクスポート機能の組み合わせで, モデルから任意の量のデータを書き出すことができます. それでは, もう少し自動化を進めてみましょう.

モデルのメソッドによる操作の自動化

ここでは, アプリケーションビルダーの機能を使用するため, Microsoft® Windows™ オペレーティングシステム上でメソッドを使用する必要があります. リボンのアプリケーションビルダーボタンをクリックするか, キーボードショートカットのControl+Shift+Aを使用すると, 以下のようなインターフェースが表示されます. ここで行う作業は,「メソッド」ブランチで新しいメソッドを追加することです. my_methodのように名前をつけますが, まだ何も入れないでおきましょう. 左上のボタン,またはキーボードショートカットの Control+Shift+M でモデルビルダーに戻ります.

アプリケーションビルダーが拡大表示され, COMSOL Multiphysics をコマンドラインから実行するためのメソッドを記述するための空白のメソッドエディターウィンドウが表示されます.

アプリケーションビルダーでのメソッドのスクリーンショット.

モデルビルダーに戻って, メソッドの呼び出しを追加してみましょう. グローバル定義を右クリックしてメソッド呼び出しサブメニューを開くと, 先ほど作成したメソッドが表示されます. これを追加して, タグフィールドも変更してください. 通常は, アプリケーションビルダーで使用されている名前と同じ名前を使用することができます. 下のスクリーンショットを見ると, メソッド呼び出し機能には3つのボタンがあることがわかります.

  1. 実行
  2. 一時停止
  3. メソッドの編集

メソッドの編集ボタンは, アプリケーションビルダーに戻るための便利なショートカットで, メソッドに入れるコードができたらすぐに実行します.

モデルビルダーでメソッドへの呼び出しを追加する方法を示す設定ウィンドウのスクリーンショット.

モデルビルダーでメソッドの呼び出しを追加し, メソッドの実行と編集ができるようにします.

コーディングにあまり慣れていない方でも, これから行うことについて知っておく必要があるのは, 本当に1つだけです. メソッドにはコードの断片が含まれており, 各行にはモデルに対する何らかの変更やアクションが含まれています. モデル・ビルダーからこれらのコード・スニペットを抽出するには2つの方法があります.

1つ目の方法は, 開発タブでメソッドの記録をクリックすることです. その後, 記録停止ボタンをクリックするまで, モデル・ビルダー内で一連のアクションを実行することができます. 関連するコードは新しいメソッドに保存されます.

2つ目の方法では, モデルツリー内のフィーチャーを右クリックすると,(ほとんどの場合) コードとしてクリップボードにコピーのサブメニューが表示されます. これをモデルのスタディブランチで試すと, オプションの1つに実行があります. このオプションを選択すると, スタディを実行するためのコードスニペットがクリップボードにコピーされます. メソッドエディターに移動し, ペースト(Control+V)するとコードが表示されます.

model.study("std1").run();

この2つ目の方法は少しシンプルなので, このブログではこの方法を使ってみましょう.

メニューを展開し, コードとしてクリップボードにコピーを選択した状態でのエクスポート設定のスクリーンショット.

モデルツリーの特定のノードを実行するコードをコピーします.

データ抽出を自動化するコードをさらに追加することができます. データをディスクに書き出す機能はすでに設定してあるので, あとはこれらの機能の実行をメソッドに含めるだけです. エクスポート機能を右クリックして, 上記のように実行コマンドでコードとしてクリップボードにコピーを使用します. これらをメソッドに貼り付け, これを評価グループにも繰り返します. 完成したメソッドは以下のようになります.


model.study("std1").run();

model.result().export().run();

model.result().evaluationGroup("eg1").run();

メソッドを使ってディスクに書き込むようになったので, おそらくデフォルトのセキュリティ設定の一部を変更する必要があります. ファイルメニュー>環境設定>セキュリティで, すべてのファイルに対するファイルシステムのアクセスを許可します. この設定は, 以下のスクリーンショットに示されています. そうしないと, ファイルメニュー>環境設定>ファイルで指定した一時ファイルアプリケーションファイルの場所にしか書き込めなくなります.

環境設定ウィンドウでセキュリティオプションを開いたときのスクリーンショット.

必要に応じて, ファイルへの書き込みを行うメソッドを許可するように, セキュリティ環境設定を変更します.

これで, このメソッドを実行すると, モデル全体が再求解され, 新しいデータと画像ファイルがディスクに書き出されます. 最後のステップは, UIを一切使わずに, すべてをコマンドラインから行うことです.

コマンドラインからの実行

この修正したファイルをmy_file.mphと名付けて保存し, COMSOL Multiphysics UI を終了します. Windows コマンドプロンプトを起動し, ファイルのあるディレクトリに移動します. COMSOL® 実行ファイルのパスが環境変数PATHに追加されていることを確認し, 以下のコマンドを入力します.

comsolbatch -inputfile my_file.mph -pname tbb,Vtot -plist "1[cm]","10[mV]"  -methodcall my_method -nosave

これにより, モデルが開き, -pname-plist組み合わせにより, 2つのグローバルパラメーターの値が変更されます. この場合, パラメーターtbbはバーの厚さを, Vtotは印加電圧を変更します.

カスタマイズされたメソッドが呼び出され(-methodcallによる), モデルを実行してデータを書き出します. 追加のオプション引数-nosaveは, モデルファイルを保存しないことを意味します. この引数および他のすべてのオプション引数の詳細については, COMSOL Multiphysics Reference ManualのThe COMSOL Commandsの項を参照してください.

これで完成です. モデルの修正からデータの書き出しまで, すべてのプロセスが 1つのコマンドに集約されました.

他に何ができるか?

もちろん, ここで紹介したのはモデルの実行と出力の自動化を実演するための非常に小さな例ですが, できることはたくさんあります. モデルメソッドには, 基本的にどんなコードでも入れることができます. 例えば,以下のようなコードを入れることができます.

さらに, ジョブシーケンス 機能を使って同じようなデータ抽出を行うことができる別のワークフローもあります(このアプローチではメソッドを使用しません).

最後に, 複数の異なるバッチジョブを同時に並行して実行することができるので, メモリやコアの多いマシンをお持ちの方には特にお勧めです.

 

Microsoft および Windowsは, 米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です.

コメント (0)

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