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

PyOghma

Python から OghmaNano の JSON 設定ファイルを直接操作することで、かなり多くのことが可能です (ディスク上の sim.json を編集し、oghma_core.exe を実行します)。 しかし、大規模なデータセットを生成するために多数のシミュレーションを並列実行したい場合、 すぐにオーケストレーション層が必要になります。すなわち、実行ディレクトリの作成、 入力ファイルの複製、複数のソルバインスタンスの起動、 および CPU コア全体にわたるジョブキューの管理です。

さらに、Python で生の JSON を直接操作するのは必ずしも快適ではありません。 ミスをしやすく、一般的なシミュレーションオブジェクトを理解している高水準インターフェースと比較すると、 コードが冗長になりがちです。 このため、 Cai Williams は、 OghmaNano の JSON ファイルを操作しシミュレーションを実行するために利用できる PyOghma という API を作成しました。 PyOghma は独立したプロジェクトであるため、質問、バグ報告、および機能要望は PyOghma の作者に送ってください。

PyOghma は GitHub 上で利用でき、また pip からも利用できます:

python -m pip install PyOghma

PyOghma の使用例を以下に示します [python-example3]:

 import PyOghma as po

       Oghma = po.OghmaNano()
       Results = po.Results()


       source_simulation = "\exapmle\pm6y6\"

      Oghma.set_source_simulation(source_simulation)

    experiment_name = 'NewExperiment'

    Oghma.set_experiment_name(experiment_name)

    mobility = 1e-5
    trap_desnsity = 1e-18
    trapping_crosssection = 1e-20
    recombination_crosssection = 1e-20
    urbach_energy = 40e-3
    temperature = 300
    intensity = 0.5


    experiment_name = 'NewExperiment' + str(1)
    Oghma.clone('NewExperiment0')

    Oghma.Optical.Light.set_light_Intensity(intensity)
    Oghma.Optical.Light.update()

    Oghma.Thermal.set_temperature(temperature)
    Oghma.Thermal.update()

    Oghma.Epitaxy.load_existing()
    Oghma.Epitaxy.pm6y6.dos.mobility('both', mobility)
    Oghma.Epitaxy.pm6y6.dos.trap_density('both', trap_desnsity)
    Oghma.Epitaxy.pm6y6.dos.trapping_rate('both', 'free to trap',..
    trapping_crosssection)
    Oghma.Epitaxy.pm6y6.dos.trapping_rate('both', 'trap to free',..
    recombination_crosssection)
    Oghma.Epitaxy.pm6y6.dos.urbach_energy('both', urbach_energy)
    Oghma.Epitaxy.update()

    Oghma.add_job(experiment_name)
    Oghma.run_jobs()

この例では、PyOghma は po としてインポートされ、 ソースとなる OghmaNano JSON ファイルは、移動度、トラップ密度、トラッピング速度、 および Urbach Energy の値を変更することで操作されています。 元のファイルは次の行によって複製されます:

Oghma.clone('NewExperiment0')

その後、コードの最後で次の2行が実行されます。最初の行はジョブを PyOghma のジョブリストに追加し、 2 行目はすべてのジョブを実行するよう PyOghma に指示します。 もし複数のジョブがあれば、PyOghma はそれらが終了するまで すべての CPU にまたがって複数ジョブを実行します。 異なる移動度の値でシミュレーションを実行したい場合は、各シミュレーションをジョブリストに追加し、 その後 \(run\_jobs\) を一度呼び出して、 すべてのコアで効率的にジョブを実行します。

Oghma.add_job(experiment_name)
Oghma.run_jobs()

PyOghma に関するさらに詳しい情報は GitHub ページで入手できます。