地域密着型エリア広告配信リクルートの地域密着型広告ドコイク?アドネットワーク Ads by ドコイク?[無料でホームページを作成] [通報・削除依頼]
[無料でホームページを作成] [通報・削除依頼]

phonopy & phono3py

------------------------------------------------------------------------------
■ phonopyおよびphono3pyに関する情報

◇ 京都大 田中研究室の計算機の環境
Ubuntu server 14.01 / LDAP / NFSv3
1 ギガビットイーサネット / OpenMPI / Grid-engine
Xeon-16-core @ 2.4 GHz, 100 + nodes
タワー型PC約64台をハブと有線LANで繋いでいる

◇ VASP
・フォース(=force=ちから=力)が正しく出るようにしている
・DFPT: 自由度を上手く分散してくれない。計算効率が悪い

◇ VASPの入力ファイルの情報
・IBRION=2; ISIF=3
 上記の設定では空間群が保持される。ただし、ヘキサゴンは時々変わる
・EDIFF = 1.0e-8 にしているのは、ユーザーの設定の限界値であるため
(内部ではもっと変えられる)
・LREAL = .FALSE. は絶対に必要
 PWscfでは上手く計算できないのはこれが原因か?
・EDIFFG = -1.0e-3 や -1.0e-4 で良いかも。
・ENCUT = 500 であると安定に動作するとこのこと
 (もしかしたらエネルギーとフォースでは必要なカットオフが異なるのかもしれない)
・非金属: IALGO=38; ISMEAR=0; SIGMA=0.1

◇ PWscf
・フォースの計算が悪い
・メモリ分散が悪い
(エネルギーとフォースは別物と考えた方が良い。エネルギーが正しく出ていてもフォースが正しいかどうかは?)
以上のことから、phonopyではPWscfでも良いが、熱伝導を計算するphono3pyではPWscfで上手く計算できないこともある。

◇ VASPでωが正、PWscfでωが負となる理由
・計算の離散化の仕方の違いによる

◇ DFPTとスーパーセルでの計算
・昔はDFPTでないと論文で文句を付けられたが、最近はDFPTにおけるXC(交換相関)でのノイズがのりやすいことが分かってきており、従来のスーパーセル法を用いた方法と大差ないことが知られている。むしろスーパーセル法の方が推奨される。DFPTを何故使わないのかを訪ねられたら、上記のことを説明すればよい。DFPTは上記の理由もあることから収束性に問題がある。(※ レフェリーがそれでも納得しない場合は良く分かっていないレフェリーの人にあたったのだと諦めよう)
・スーパーセルがあまりにも大きくなるときは計算がなかなか収束しないので、単位胞でのDFPTにした方が良い
・金属は隣の原子だけでも良いのでスーパーセルを大きくとる必要はない(フォースは原子をわずかに動かして計算するので、わずかに原子を動かした影響{動かした原子から一番遠い原子への影響}が無視できる大きさまでスーパーセルを大きくする必要がある)

◇ フォノンの分散のk-pathの指定
・バンド分散は、Bilbao crystallographic server (http://www.cryst.ehu.es/) > KVECをクリック > Label と Primitive を用いて指定すればよい

◇ 熱伝導率
・Eggbox effect:原点の取り方で熱伝導率の値が変わる
・LBTEの方が理論的に精度が高いが大規模な計算資源を必要とする。LBTEとRTEの差は5%程度である
・単結晶の熱伝導率はRTEの計算方法で、MFP(平均自由行程)はディフォルトで良い一致を示す

◇ 磁性
・スピンはフェロで大きな値でやってみる
・アンチフェロまではphonopyで可能
・フェロでも位置で強さが違う場合は、空間群が変わるので、MAGMONのオプションを用いる
・ローカルミニマムに注意

◇ 欠陥や置換の計算
・欠陥が作る体積をどうすればよいか分からない。そんなことを気にせずに計算している論文もある
・置換は単純に計算すればよい。縮退系の半導体など。

◇ 界面の計算
・上手くエラーをキャンセルするように構造のモデルを作る

◇ ある温度で構造相転移する場合の評価
・格子の場合はよい
・リノマライゼーションの場合はPhonopyでは×

◇ ラットリングと判断する理由
・ωが低いとディスプレイスメントが大きくなる
・バンドが独立している
・バンドが局在(ローカライズ)している
などの理由からラットリングしていると判断したりする。

◇ その他の情報(私としては特に重要)
・q点数:通常は4x4x4で良い
・q点数が1の場合:Γ(ガンマ)点では×、位置をズラす
・PAW:一電子波動関数は理論上直交するが、数値計算上は直交していない。という問題はあるが、phonopy開発者もPAWを使っている
・調和近似が使えない系:ペロブスカイト系
・CpとCvでは、Cpの方が実験値に近い
・グリュナイゼンパラメーターにはモードグリュナイゼンパラメーターとサーモグリュナイゼンパラメーターがある。wikipediaなどを参照とのこと。モードからサーモに変換するのが良いとのこと。
・グリュナイゼンパラメーターはqhaで計算している。qhaと3次ではほとんど結果が変わらない
・phonopyのweb上の記述では、各スーパーセルを構造最適化していない
・原子の変位させたときの計算では、中心差分を用いて計算するようにしているので精度が高いとのこと
・計算が重い部分はC言語で書かれている
・FORCE_SETSの記述様式にすれば、どの計算コードでも計算可能とのこと
・phonopy で対称性のチェックは
 phonopy -symmetry -tolerance=some_distance
 Being robust against large atomic position tolerance; default 0.2Å
・規約表現(ラマンやIRに役立つ)を知るには
 --irreps = "0 0 0" のオプションを付ける
・primitive cellの作り方はspglibに書かれている。spglibはphonopyに入っている。
・第一原理計算ではConventional cellが精度が高いため、Conventional cellで計算してから、primitive cellの指定をする
・分散のためのk-pathは、Seek-path(http://materialscloud.org/tools/seekpath/input_structure/)で得られる
・バンドコネクション(群速度や規約表現での理解に役立つ)
 推定を失敗しているときは、q点数を増やして対処する
 群速度は別の方法で計算している
・-nac:マクロスコーピックなコーレレーションがあるときに用いる
 NaClはNa+とCl-でダイポールを作り、Γ(ガンマ)点近くでちょっとずつ違う。その効果を入れるオプション。NaClのようなダイポールを作る系でこのオプションを入れればよい。
・Phononでの各元素でのDOSはprimitive cell表記での順番になっている。対応関係を調べるには、-v オプションを追加して、----primitive cell----の記述がある欄を参照すればよい。元素が記述されている上から1, 2, 3...となる。POSCARの時点でprimitive cell表記の場合は、POSCAR-unitcellでもprimitive cellでそのままの記述になっている
 (conventional cell から primitive cellの変換は、international table volume Aを参照, https://www.jstage.jst.go.jp/article/jcrsj1959/38/4/38_4_267/_article/-char/ja/https://www.jstage.jst.go.jp/article/jcrsj1959/38/4/38_4_267/_pdf も参照)
・中性子回折で得られる変位Uは、
  phonopy --td ...
  phonopy --tdm ...
  phonopy --tdm_cif ...
で得られる。描画はクリスタルメーカーでの記述が楽であるとのこと。
・Physical properties and tensors; 対称性を使うことでノイズが減る
・ルジャンドル変換: ヘルムホルツの自由エネルギー > ギプスの自由エネルギー
・電子のエントロピーはフェルミオンから計算するものがよい
・Irreducible representations: フォノンモードは規約表現で割り当てられる。フォノンの固有値はモードの対称性の情報を持つ。対称操作の特徴はw*Swで得られる。ここでwは固有値、Sはあるq点での固有値帯する対称操作の行列である。それらの情報はBilbao crystallographic server (http://www.cryst.ehu.es/) > REPRES から得られる
・理論値の方が熱伝導率が小さい場合、長距離の影響が効いている可能性がある。これを考慮に入れるには、より大きなスーパーセルを用いたり、カットオフの長さやk点の細かさなどによる値の変化を調査する必要がある。
・界面は非調和がほとんど効かないので調和で良い。界面は非平衡グリーン関数(MD)で計算可能。ナノ多結晶体などでは界面は界面フォノン透過関数が用いられ、粒内は単結晶と同等して計算されたりする。
・力場がしっかり分かっているとよい平衡位置からズレたものはMDで行うとよい。
・緩和時間τ∝ω^2(クレメンス)などが知られている。
・4次以上の非調和が必要な系はクラスレートなどがある。メキシカンハット(ω)のようなポテンシャルを描くものは、4次の非調和を入れるとより正しくフォノン分散が描ける。
・クヌッセンス数 = フォノンの平均自由行程 / 界面の距離
・拡散熱輸送(フォノンの平均自由行程<<粒径)はクヌッセンス数が小さく、界面の影響も小さいもの
・弾道熱輸送(フォノンの平均自由行程>>粒径)はクヌッセンス数が大きく、界面の影響も大きいもの
・実際には、上記の二つのの熱郵送(拡散熱輸送と弾道熱輸送)が共存している準弾道熱輸送となる

◇ 理論式
・グリュナイゼン γ(q,s) = (-V/w(q,s)) * (∂w(q,s)/∂V)
 ここで、Vは体積、wは固有値、sはバンドの番号である。この式は、つまり、体積を変化させたときのフォノンの固有値の変化を見ている
 ∂w(q,s)/∂V ≒ -1
・縦軸にグリュナイゼン数、横軸に波数をとると、グリュナイゼン数が大きいところが非調和性がが大きいところになる(この非調和は3次まで考慮)。
・Force constants Φij(Mμ, Nν) = ∂2V/(∂ui(Mμ)∂uj(Nν)) ≒ -Fi(Mμ)/uj(Nν)
 ここで、M, Nは格子点の番号、μ, νは単位胞中の原子の番号である。第一原理計算でuj(Nν)だけ動かしたときに計算されるフォースFj(Mμ)を使ってフォノンをphonopyで計算する。
 動かす量uj(Nν)はディフォルトでは0.01Åである。この値より小さすぎてもForce constantsの数値的なエラーが大きくなるし、この値より大きくても非調和の寄与が大きくなりすぎてしまう。phonopyでは変位を0.01Åと-0.01Åの二つ計算することでresidual forecesを打ち消すようにしている。
 Force constantsからダイナミカルマトリックス D(q)が得られる。ここから、D(q)w(q,s)=[ω(q,s)]2w(q,s)の式を用いて、周波数ω(q,s)と固有値 w(q,s)を得る(と思う)。

◇ ライセンス (BSD-3 = 企業が使って配布しても良い)
spglib, phonopy, phono3py, cogue

◇ コード
・spglib (with C, Fortran and Python-API)
・phonopy/phono3py (with Python-API)
・Automation environment (cogue), オートメーションのプログラム

◇ check
0. cd ../disp-00001
1. Ctrl + F
2. vasprun.xml
3. ・- (top right)
4. check Size (almost same kB)

group velocity (THz x Angstrom units) for VASP&phonopy defaults units
= THz x Angstrom = 100 m/s

◇ References
[1] M. T. Dove, Introduction to Lattice Dynamics; 概略の理解に良い
[2] D. C. Wallace, Thermodynamics of Crystals; 詳細な記述(修行に近い苦しさを味わう)
[3] J. M. Ziman, Electrons and Phonons; 行間が面白く、こっそりジョークが書いてあったりする
[4] M. El-batanouny and F. Wooten, Symmetry and Condensed Matter Physics; 群論
------------------------------------------------------------------------------
■ thermal displacement

phonopy --help

◇ Mean square displacements projected to Cartesian axes as a function of temperature
1. gedit tdis.conf
-----
DIM = 2 2 2           
MP = 16 16 16         
FORCE_CONSTANTS = READ          
TDISP = .TRUE.
PROJECTION_DIRECTION = 1 1 0
-----
2. phonopy --tdm tdis.conf
3. you can get thermal_displacements.yaml

◇ Mean square displacement matricies
1. gedit tdis.conf
-----
DIM = 2 2 2           
MP = 16 16 16         
FORCE_CONSTANTS = READ          
TDISPMAT = .TRUE.
-----
2. phonopy --tdm tdis.conf
3. you can get thermal_displacement_matrices.yaml

◇ cif
1. gedit tdis.conf
-----
DIM = 2 2 2           
MP = 16 16 16         
FORCE_CONSTANTS = READ          
TDISPMAT = .TRUE.
-----
2. phonopy --tdm tdis.conf --tdm_cif=1273
  This setting mean you get results at 1273 K
3. put tdispmat.cif to VESTA
  Please, see [http://www.isis.stfc.ac.uk/learning/neutron-training-course/downloads/chemistry/single-crystal-diffraction---jana2006-tutorial10618.pdf]
4. VESTA: Eidt > Edit DATA > Structure parameters > Atomic displacement parameter Anisotropic:U > Isotropic* U
5. VESTA: Objects > Proterties > atoms... > Show as displacement ellipsoids > Show printipal ellipses > OK
------------------------------------------------------------------------------
■ Ubuntu 14.04 or later
# phonopy
sudo apt-get -y install python-dev python-numpy python-matplotlib python-yaml python-h5py

# phono3py
sudo apt-get -y install libgomp1 liblapack-dev liblapacke-dev

■ Phonopy
1) download phonopy: https://pypi.python.org/pypi/phonopy
2) download phonopy-1.11.10.40.tar.gz
3) tar zxvf phonopy-1.11.10.40.tar.gz
4) cd phonopy*
5) sudo python setup.py install

■ Phono3py
1) download phono3py: https://pypi.python.org/pypi/phono3py
2) download phono3py-1.11.11.92.tar.gz
3) tar zxvf phono3py-1.11.11.92.tar.gz
4) cd phono3py*
5) sudo python setup.py install
------------------------------------------------------------------------------
■ CentOS
yum install python
yum install numpy
yum install scipy
yum install h5py
yum install python-matplotlib
yum install python-yaml
------------------------------------------------------------------------------
■ Phonopy
1) download phonopy: http://atztogo.github.io/phonopy/
to http://atztogo.github.io/phonopy/inst...
2) sudo apt-get install python-dev python-numpy \
python-matplotlib python-yaml python-scipy
or
sudo apt-get update
sudo apt-get instll python-dev
sudo apt-get instll python-numpy
sudo apt-get instll python-matplotlib
sudo apt-get instll python-yaml
sudo apt-get instll python-scipy
sudo apt-get instll texlive
3) download phonopy-1.11.2.tar.gz
4) tar zxvf phonopy-1.11.2.tar.gz
5) cd phonopy*
6) sudo python setup.py install
or
python setup.py install --home=.
7) gedit .bashrc
export PYTHONPATH=~/phonopy-1.11.2/lib/python

■ Phono3py (Ubuntu-12.10 LST or later)
1) download phono3py: http://atztogo.github.io/phono3py/
to http://atztogo.github.io/phono3py/ins...
2) sudo apt-get install python-dev python-numpy python-matplotlib \
python-yaml python-h5py libgomp1 liblapacke-dev
3) tar zxvf phono3py-1.11.3.tar.gz
4) cd phono3py*
5) sudo python setup.py install
or
python setup3.py install --home=.
6) gedit .bashrc
export PYTHONPATH=~/phono3py-1.11.3/lib/python
or
export PYTHONPATH=$PYTHONPATH:~/phono3py-1.11.3/lib/python


■ lapacke (Ubuntu-12.04 LST or earlier case)
1) tar zxvf lapack-3.5.0.tgz
2) cd lapack-3.5.0
3) cp make.inc.example make.inc
4) make lapackelib

■ OpenBLAS (Ubuntu-12.04 LST or earlier case)
1) tar zxvf OpenBLAS*
2) cd  OpenBLAS+
3) make FC=gfortran
4) sudo make install


■ Phono3py (Ubuntu-12.04 LST or earlier case, sorry, failed)
1) download phono3py: http://atztogo.github.io/phono3py/
to http://atztogo.github.io/phono3py/ins...
2) sudo apt-get install python-dev python-numpy python-matplotlib \
python-yaml python-h5py libgomp1 liblapacke-dev
3) tar zxvf phono3py-1.11.3.tar.gz
4) cd phono3py*
5) gedit setup.py
◆  before----- line 58-
# this is when lapacke is installed on system
extra_link_args_lapacke = ['-llapacke',
                            '-llapack',
                            '-lblas']

extra_compile_args = ['-fopenmp',]
include_dirs = (['c/harmonic_h',
                 'c/anharmonic_h',
                 'c/spglib_h',
                 'c/kspclib_h'] +
                include_dirs_numpy)

 ◆ after  ----- line 58-
# this is when lapacke is installed on system
#extra_link_args_lapacke = ['-llapacke',
#                            '-llapack',
#                            '-lblas']
extra_link_args_lapacke = ['-L/opt/OpenBLAS/lib -lopenblas -lgfrotran -lpthreads -lm']

extra_compile_args = ['-fopenmp',]
include_dirs = (['c/harmonic_h',
                 'c/anharmonic_h',
                 'c/spglib_h',
                 'c/kspclib_h',
                 '/opt/OpenBLAS/include'] +
                include_dirs_numpy)
6) sudo python setup3.py install
  or
  python setup3.py install --home=.
7) gedit .bashrc
  export PYTHONPATH=~/phono3py-1.11.3/lib/python
  or
  export PYTHONPATH=$PYTHONPATH:~/phono3py-1.11.3/lib/python
------------------------------------------------------------------------------
QRコード
携帯用QRコード
アクセス数
ページビュー数