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

現在アプリ掲載数328件

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

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

PFAPACK

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

反対称行列に対して定義されるパフィアン(行列式の平方根)を計算するためのライブラリ。各種言語(Fortran, Python, Matlab, Mathematica)で書かれており、ユーザーは必要に応じて言語を選択することができる。また、C言語用のインターフェースも用意されている。

PFAPACKの実行例 (2018.6.17)
Last Update:2021/12/09
あなたはすでに投票済みです!

MateriApps開発チーム

パフィアン(Pfaffian)は行列式の平方根に対応する量であり、物性物理でも様々な場面で現れることが知られています(日本語の解説として最近の物理学会誌の記事があります)。例えば、スレーター行列式の拡張であるジェミナル波動関数と実空間配置との内積がパフィアンになることが知られています(J.P. Bouchaud et al., 1988)。また、固体のバンド構造のトポロジカル指数(Z2 index)を求めるさいにパフィアンが現れことも知られています(Kane-Mele 2005)。行列式に比べて、パフィアンを計算するルーチンは現段階ではそこまで多くなく、PFAPACKがほとんど唯一のルーチンです。PFAPACKはfortran, matlab, mathmatica, python, C言語用のインタフェースが用意されており、ユーザーは必要に応じて、言語を選択することができます。ここでは物性研スパコン(システムB, sekirei)でpythonでパフィアンを計算した例について紹介します。

1.ダウンロード

wget http://wwwhome.lorentz.leidenuniv.nl/%7Ewimmer/pfapack.tgz

tar -xvf pfapack.tgz

これで pfapackというディレクトリができます。

2. pythonの準備
numpy,scipyを使う必要があるので、
物性研で用意しているpythonの環境を使用します。

source /home/issp/materiapps/tool/env.sh

とうてば、必要な環境が設定されます。

3. テストスクリプト
まず、pythonのスクリプトがおいてあるディレクトリに
移動します。

cd ./pfapack/python

テストとして、4×4の反対称行列のパフィアンを求める
スクリプトは以下のようになります(test.py).

import pfaffian as pf
import numpy.linalg
import numpy.matlib

A = numpy.zeros((4,4))
A[0][1] = 1
A[0][2] = 2
A[0][3] = 3
A[1][2] = 4
A[1][3] = 5
A[2][3] = 6
A = A-A.T #anti-symmetrized
print(A)

pfa1 = pf.pfaffian(A)
pfa2 = pf.pfaffian(A, method=’H’)
pfa3 = pf.pfaffian_schur(A)
deta = numpy.linalg.det(A) #determinant
print(pfa1,pfa2,pfa3,deta)

これを実行すると、
python test.py

[[ 0. 1. 2. 3.]
[-1. 0. 4. 5.]
[-2. -4. 0. 6.]
[-3. -5. -6. 0.]]
のパフィアンが8であることを確認できると思います
(行列式が64になっているのも確認できます。)。

4×4のパフィアンの明示的な定義は

Pf(A) = a01a23-a02a13+a03a12

で与えらるので、
Pf(A)=1*6-2*5+3*4=8となります。

4.まとめ

(反対称)行列Aを適切に定義して、

pf.pfaffian(A)

とするだけでパフィアンが計算できますので、
非常に便利なアプリとなっています。
fortranやcのインタフェースも用意されていますので、
大規模数値計算にすぐに使用することもできます。

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-2025. All rights reserved.