ホーム スクリーンショット ユーザーマニュアル Blueskyロゴ YouTube
OghmaNano 有機/ペロブスカイト太陽電池、OFET、OLEDをシミュレーション ダウンロード

スクリプト入門

1. スクリプト環境の設定

スクリプトは、OghmaNano とより強力にやり取りする方法を提供します。グラフィカルユーザーインターフェースを使用する代わりに、お気に入りのプログラミング言語を使って OghmaNano と対話できます。これにより、グラフィカルインターフェースだけで可能な方法よりも、はるかに強力な方法でシミュレーションを制御する選択肢が得られます。以下では MATLAB と python を使って OghmaNano を制御する例を示しますが、json リーダー/ライターを持つ任意の言語を使用できます。Pearl と Java はすぐに思い浮かぶ 2 つの言語です。

OghmaNano のスクリプトを始める前に、OghmaNano がどこにインストールされているかを Windows に知らせる必要があります。デフォルトでは OghmaNano は C:\Program files x86 \OghmaNano にインストールされます。そのディレクトリには 2 つの Windows 実行ファイルがあり、1 つは oghma.exe で、これはグラフィカルユーザーインターフェースです。もう 1 つの .exe は oghma_core.exe です。oghma.exe を使わずにコマンドラインから oghma_core.exe を実行できます。単に sim.oghma フォルダを含むディレクトリへ移動し、oghma_core.exe を呼び出すだけでよく、これは Windows のコマンドライン、matlab、python、または他の任意のスクリプト言語から行えます。ただし、Windows 上でこれを行う前に、Windows が OghmaNano のインストール場所を認識できるように、C:\Program files x86 \OghmaNano を Windows の path に追加する必要があります。最近の Windows での設定例は、リンク https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14) に示されています

Windows は新しいバージョンごとに設定オプションの場所が変わるようなので、 使用している Windows のバージョンに対応した手順を探す必要があるかもしれません。

2. スクリプトに関する追加のヒント

OghmaNano JSON Explorer showing the simulation data structure as a tree of JSON objects
JSON Explorersim.json のデータ構造をたどれるツリーとして表示します。

GUI を構造化された JSON ビューアとして考える

OghmaNano をスクリプトで扱う際に有用な考え方は、GUI 全体を 基盤となる sim.json ファイルの 構造化ビューア兼エディタ とみなすことです。 すべてのウィジェット、スライダー、テーブル、ダイアログは最終的にこのファイルを読み書きします。 別個の「GUI 状態」は存在せず、JSON こそが 状態です。Automation リボンにある JSON Explorer(Figure ??) を使うと、sim.json ファイルを階層ツリーとして直接参照できます。これは、あるパラメータが JSON のどこに「存在するか」を理解し、 GUI 操作が期待したフィールドへ書き込まれていることを確認する最も速い方法であることが多いです。

コピー&ペーストによるオブジェクトの確認

もう 1 つの有用な手法は、GUI 全体でコピー&ペーストがどのように機能するかを活用することです。 例えばレイヤーエディタでレイヤーを右クリックしてコピーしたり、 3D ビューで選択したオブジェクトをコピーしたりすると、OghmaNano はそのオブジェクトを生成する基礎となる JSON 構造そのもの を直接クリップボードへ置くことができます。

このクリップボード内容をプレーンテキストエディタ(Notepad、Notepad++、VS Code など)へ貼り付けると、 そのオブジェクトまたはテーブルエントリを定義するために用いられている正確な JSON ブロックを確認できます。これにより、 オブジェクトが内部的にどのように表現されているかを直接かつ曖昧さなく把握でき、スクリプト化のための関連キーを特定する最短経路になることがよくあります。

多くのコンテキストメニューには、Copy JSONCopy JSON path、または Copy scripted path のようなオプションもあります。 これらのコマンドは JSON 階層内におけるオブジェクトの正確な位置を示すため、スクリプト内で対応するエントリを見つけて変更するのがはるかに容易になります。

本当に行き詰まったら:diff ツールを使う

特定の GUI コントロールが sim.json ファイルのどこに対応するのか分からない場合、簡単で 効果的なデバッグ手法はファイル比較(diff)ツールを使うことです。

  1. シミュレーションファイルのバックアップコピーを作成します。例:sim.jsonsim.back
  2. GUI で 1 つだけパラメータを変更します。
  3. KDiff3 のような diff ツールを使って、 変更後の sim.json とバックアップを比較します。
  4. diff 出力により、JSON 内のどの行(またはブロック)が変更されたかが正確に分かり、 その GUI コントロールが内部的にどのように表現されているかが明らかになります。

これは特に大規模なパラメータツリーにおいて、UI コントロールを特定の JSON フィールドへ対応付ける最も速い方法であることが多いです。

sim.json 内のエントリを見つけるためのオブジェクト ID の利用

OghmaNano object editor showing the object ID displayed at the bottom of the window
オブジェクトエディタ。ウィンドウ下部に表示される一意のオブジェクト ID を示しています。 このダイアログは、デバイスの top contact を右クリックして Object header を選択して開かれました。

OghmaNano における多くの構造化オブジェクト(レイヤー、形状、パラメータスキャン、その他の 階層的エンティティなど)には、一意の識別子(ID)が割り当てられます。通常これは約 16 文字のランダムな 16 進文字列です。

オブジェクト ID は GUI 上で直接表示されることがよくあります。例えば、 Figure ?? では、 オブジェクトエディタウィンドウの左下隅に ID が表示されています。同じ識別子は sim.json ファイル内の対応するエントリにも現れます。

これらの ID は、大規模または深くネストした JSON 構造をたどる際に非常に有用です。 sim.json 内で ID 文字列を検索することで、階層構造が複雑であっても、 ある GUI 要素に対応する正確なオブジェクトを即座に特定できます。