12. 対称性を考慮したワニエ関数作成¶
ここでは対称性を考慮してワニエ関数を作成する方法について説明します。 そのためのプログラムとして、 symWannier が公開されていますので、詳細や最新情報はそちらも参考にしてください。 また、ワニエ関数の作成そのものについては、前章を参考にしてください。
対称性を考慮することで、以下のことが可能になります。
既約k点のみのDFT計算で、ワニエ関数を生成できる。mmnファイルの生成の計算コストを1/2~1/10に削減できる。
(手順:pw2wannier90.x のあと symWannier のコードを用いて、既約k点の情報(immn, iamn, ieigファイル)を可約k点の情報に翻訳し、wannier90を用いる。)
既約k点のみのDFT計算で、対称性を課したワニエ関数(symmetry-adapted Wannier functions)を生成することができる。
(手順:pw2wannier90.x のあと symWannierを用いてワニエ関数を生成する。)
12.1. symWannierのインストール¶
symWannierはpythonのパッケージです。
% pip install symWannier
とすれば利用中のpython環境にsymwannierコマンドをインストールすることができます。
なお、Materiapps live で pip を用いてpythonパッケージをインストールするためには、pythonの仮想環境を先に構築する必要があります。
% python3 -m venv /path/to/venv
% source /path/to/venv/bin/activate
として仮想環境を構築し、その環境を有効にしてください。(/path/to/venv は venv 用のディレクトリ名として好きな場所を指定してください。) source コマンドはターミナルを起動するたびに実行する必要がありますので、面倒なら .bashrc などに記載しておくとよいでしょう。
12.2. 既約k点のDFT計算からワニエ関数の作成のためのデータ生成¶
前章で紹介した、ダイヤモンドの例を使って、既約k点のDFT計算からワニエ関数を作成する例をみてみます。 計算に必要なインプットは前章と同じく以下の4つです。
前章との変更点は、nscf計算でのkメッシュが
K_POINTS {automatic} 6 6 6 0 0 0
となっている点と、pw2wannier90.xのインプットに
irr_bz = .true.
が指定されている点です。
注釈
irr_bz オプションはQE-7.3でサポートされました。
次に、前章と同じように計算を進めていきます。
% pw.x < diamond.scf.in > diamond.scf.out
% pw.x < diamond.nscf.in > diamond.nscf.out
% wannier90.x -pp diamond
% pw2wannier90.x < diamond.pw2wan.in > diamond.pw2wan.out
前章の計算では、diamond.amn, diamond.mmn, diamond.eig というファイルが生成されましたが、今回は、それらのかわりに、 diamond.iamn, diamond.immn, diamond.ieig, diamond.isym というファイルが生成されます。
これらのファイルに既約なk点でのワニエ関数をつくるための情報、および対称性の情報が格納されます。
12.3. 既約k点の情報から可約なk点の情報を復元¶
以下のコマンドで、diamond.{iamn,immn,ieig,isym} ファイルから diamond.{amn,mmn,eig} ファイルが復元されます。
% symwannier expand diamond
このあとは、前章と同様にwannier90を利用することができます。
% wannier90 diamond
12.4. 既約k点の情報から対称性を考慮したワニエ関数の作成¶
diamond.{iamn,immn,ieig,isym} ファイルから直接ワニエ関数を作成できます。
% symwannier wannierize -S diamond
-Sオプションは、ワニエ関数がサイト対称性を満たすように制限がかけられます。-sでは制限なしになります。 また、何もオプションをつけずに実行すると diamond.{amn,mmn,eig}を用いてワニエ関数を作成します。