MateriApps
物質科学シミュレーションのポータルサイト

現在アプリ掲載数307件

お問合せ / アプリ掲載依頼
    • JP
    • EN
  • MateriApps について
  • レビュー募集
もっと詳しく探す
  • NEWS / 講習会・イベント
  • アプリ一覧
  • アプリ詳細検索
  • キーワード解説
  • レビュー
  • 事例
  • アプリコンシェルジュ
  • インストールしないでアプリを
    試せる「MateriApps LIVE!」

    詳細はこちら
  • MateriApps について
  • レビュー募集
  • プライバシーポリシー
  • お問合せ / アプリ掲載依頼
  • アプリ一覧
  • OpenFermion

OpenFermion

  • 公開度:3 ★★★
  • ドキュメント充実度:2 ★★☆

量子化学計算を量子コンピューティングするためのオープンソフトウェア。第二量子化されたハミルトニアンをqubit形式に変換することができる。ハミルトニアンのパラメータは外部の第一原理ソフトウェアを用いた古典計算により算出される。他の量子シミュレータのアプリに繋げるプラグインも提供されている。

OpenFermionの使い方
Last Update:2021/12/09
あなたはすでに投票済みです!

執筆: 小西 優祐(2020-04-02)

(株式会社アカデメイア)

1.はじめに

OpenFermionは量子ゲートのモデルを用いて量子化学計算を含めたフェルミオン系の計算を実行するためのソフトウェアです。CirqやPySCFなど、外部ソフトウェアと連携するためのプラグインも整備されています。

2.インストール・コンパイル方法(推奨)

ここでは、AnacondaのPython3.6.5、Ubuntu 18.04上でのインストールについて記載します。
インストールはpipコマンドで実行して下さい

$ pip install openfermion

上記コマンド実行で、openfermionがインストールされます。
インストールの確認は以下の通りです。

$ python3

として、起動するPythonの対話モードで、

>>> import openfermion

と入力してEnterを押し、なにもエラーが出なければ、無事にインストール出来ています。
バージョンは

>>> openfermion.__version__

と入力してEnterを押す事で確認が出来、’0.10.0’などのバージョン番号が下の行に出力されます。

3.実行方法

それでは実際にOpenFermionを動かしてみましょう。ここでは、水素分子についての量子化学計算を実行して結合長とそれに対するエネルギーをプロットします。ここの例は、OpenFermionのGitHubリポジトリから抜粋したものです。
https://github.com/quantumlib/OpenFermion/blob/master/examples/openfermion_tutorial.ipynb

from openfermion.hamiltonians import MolecularData

# Set molecule parameters.
basis = 'sto-3g'
multiplicity = 1
bond_length_interval = 0.1
n_points = 25

# Generate molecule at different bond lengths.
hf_energies = []
fci_energies = []
bond_lengths = []
for point in range(3, n_points + 1):
    bond_length = bond_length_interval * point
    bond_lengths += [bond_length]
    description = str(round(bond_length,2))
    print(description)
    geometry = [('H', (0., 0., 0.)), ('H', (0., 0., bond_length))]
    molecule = MolecularData(
        geometry, basis, multiplicity, description=description)
    
    # Load data.
    molecule.load()

    # Print out some results of calculation.
    print('\nAt bond length of {} angstrom, molecular hydrogen has:'.format(
        bond_length))
    print('Hartree-Fock energy of {} Hartree.'.format(molecule.hf_energy))
    print('MP2 energy of {} Hartree.'.format(molecule.mp2_energy))
    print('FCI energy of {} Hartree.'.format(molecule.fci_energy))
    print('Nuclear repulsion energy between protons is {} Hartree.'.format(
        molecule.nuclear_repulsion))
    for orbital in range(molecule.n_orbitals):
        print('Spatial orbital {} has energy of {} Hartree.'.format(
            orbital, molecule.orbital_energies[orbital]))
    hf_energies += [molecule.hf_energy]
    fci_energies += [molecule.fci_energy]

# Plot.
import matplotlib.pyplot as plt

plt.figure(0)
plt.plot(bond_lengths, fci_energies, 'x-')
plt.plot(bond_lengths, hf_energies, 'o-')
plt.ylabel('Energy in Hartree')
plt.xlabel('Bond length in angstrom')
plt.show()

上記ファイルを、h_bond.pyとして保存し、このプログラムを実行します。

python h_bond.py

計算は、5秒程度で終了し、最後にグラフが表示されます。

4.実行結果

計算結果は以下のように標準出力に出力されます。

0.3
At bond length of 0.30000000000000004 angstrom, molecular hydrogen has:
Hartree-Fock energy of -0.59382776458494 Hartree.
MP2 energy of -0.5997818888874376 Hartree.
FCI energy of -0.6018037168352988 Hartree.
Nuclear repulsion energy between protons is 1.7639240286333335 Hartree.
Spatial orbital 0 has energy of -0.8028666187118976 Hartree.
Spatial orbital 1 has energy of 1.368938795250223 Hartree.
0.4

At bond length of 0.4 angstrom, molecular hydrogen has:
Hartree-Fock energy of -0.904361397713845 Hartree.
MP2 energy of -0.9114367296997896 Hartree.
FCI energy of -0.9141497082141279 Hartree.
Nuclear repulsion energy between protons is 1.322943021475 Hartree.
Spatial orbital 0 has energy of -0.7452125332909346 Hartree.
Spatial orbital 1 has energy of 1.167416395038123 Hartree.
(中略)
2.5

At bond length of 2.5 angstrom, molecular hydrogen has:
Hartree-Fock energy of -0.7029435983728299 Hartree.
MP2 energy of -0.8535394695489013 Hartree.
FCI energy of -0.9360549198442759 Hartree.
Nuclear repulsion energy between protons is 0.21167088343600005 Hartree.
Spatial orbital 0 has energy of -0.2144671917818725 Hartree.
Spatial orbital 1 has energy of 0.04995242289757026 Hartree.

上記では、ボンド長と、それに対応した分子のエネルギー(Hartree-Fockエネルギー、FCI(Full-CI)エネルギー、軌道のエネルギー等)の情報が出力されます。また、計算後、水素分子の結合長に対するHartree-FockエネルギーとFull-CIエネルギーが以下のようにプロットされます。

上記図で、●の点がHartree-Fockのエネルギー、×の点がFull-CIのエネルギーとなります。

5.終わりに

ここではOpenFermionを用いた簡単な計算例を紹介しました。量子ゲート模型を用いて量子化学等のフェルミオン系の計算を容易に行う事が可能です。この紹介例の他にもGithubリポジトリのexamplesにJupyter Notebook形式で例がありますので興味のある方はご確認いただければと思います。
https://github.com/quantumlib/OpenFermion/blob/master/examples

04 / 06

  • 01基本情報
  • 02事例・論文
  • 03講習会
  • 04レビュー
  • 05開発者の声
  • 06このアプリ情報に
    ついてのお問い合わせ
TOP

MateriApps
物質科学シミュレーションのポータルサイト

  • NEWS / 講習会・イベント
  • アプリ一覧
  • アプリ詳細検索
  • キーワード解説
  • 事例
  • アプリコンシェルジュ
  • プライバシーポリシー
お問合せ / アプリ掲載依頼
  • 東京大学 物性研究所 The Institute for Solid State Physics
  • 東京大学 The University of Tokyo
  • CDMSI
  • CCMS

© MateriApps, 2013-2023. All rights reserved.