User Tools

Site Tools


quantumespresso:respack

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
quantumespresso:respack [2020/07/28 18:38]
koudai [QuantumESPRESSOによるSCF計算]
quantumespresso:respack [2020/08/14 13:35]
koudai [分極関数の計算]
Line 5: Line 5:
     * 誘電関数から求まる動的物理量(電子エネルギー欠損スペクトル、光学伝導度、反射率)     * 誘電関数から求まる動的物理量(電子エネルギー欠損スペクトル、光学伝導度、反射率)
     * 制限乱雑位相近似 (constraint random-phase approximation, cRPA) を用いた電子間相互作用の大きさの見積もり     * 制限乱雑位相近似 (constraint random-phase approximation, cRPA) を用いた電子間相互作用の大きさの見積もり
-  * cRPAの理論はこちらのテキストの7章を参照してください https://www.cond-mat.de/events/correl11/ +  * cRPAの理論はこちらのテキストの7章を参照してください 
 +    * https://www.cond-mat.de/events/correl11/ 
   * 日本語および英語のマニュアルでは使用例とその結果が充実しているので、初心者でも特に困ることはないと思います   * 日本語および英語のマニュアルでは使用例とその結果が充実しているので、初心者でも特に困ることはないと思います
-    https://sites.google.com/view/kazuma7k6r +  メモリを非常に多く使うため、普通の計算機ですとユニットセルに原子が10個くらいの物質が限界かと思われます。スパコンを使えば20個くらいは行けるのではないかと思います  
-  * f電子系はできなようです? +  * f電子系やスピン軌道相互作用がある系に非対応 
 +  * 擬ポテンシャルはノルム保存型のものにのみ対応してます。例えば以下のサイトからダウンロードきま 
 +    * http://www.pseudo-dojo.org/ ... optimized norm-conserving Vanderbilt PPs 
 +    * https://www.quantum-espresso.org/pseudopotentials/hartwigesen-goedecker-hutter-pp ... Hartwigesen-Goedecker-Hutter PPs
  
  
Line 27: Line 31:
 </code> </code>
   - 作業ディレクトリを作成し、その中に入ります<code>   - 作業ディレクトリを作成し、その中に入ります<code>
-$ mkdir buiid+$ mkdir build
 $ cd build $ cd build
 </code> </code>
Line 41: Line 45:
 $ sudo make install $ sudo make install
 </code> </code>
-    * makeにやや時間がかかります 
   - パスをとおします<code>   - パスをとおします<code>
 $ echo 'export PATH=$PATH:/usr/local/respack/bin/' >> ~/.bashrc $ echo 'export PATH=$PATH:/usr/local/respack/bin/' >> ~/.bashrc
Line 54: Line 57:
   - QuantumESPRESSO の pw.x によるSCF計算   - QuantumESPRESSO の pw.x によるSCF計算
   - RESPACKの calc_wannier による最局在ワニエ関数の計算。事前にSCF計算が必要   - RESPACKの calc_wannier による最局在ワニエ関数の計算。事前にSCF計算が必要
-  - RESPACKの calc_chiqw による誘電関数の計算。事前にワニエ関数の計算が必要+  - RESPACKの calc_chiqw による誘電関数の計算。cRPAを使う場合は事前にワニエ関数の計算が必要
   - RESPACKの calc_w3d による直接相互作用の計算。事前にcalc_chiqwのcRPA計算が必要   - RESPACKの calc_w3d による直接相互作用の計算。事前にcalc_chiqwのcRPA計算が必要
   - RESPACKの calc_j3d による交換相互作用の計算。事前にcalc_chiqwのcRPA計算が必要   - RESPACKの calc_j3d による交換相互作用の計算。事前にcalc_chiqwのcRPA計算が必要
Line 88: Line 91:
   py  0.2d0 0.0d0 0.0d0 0.0d0             !n: py   py  0.2d0 0.0d0 0.0d0 0.0d0             !n: py
   pz  0.2d0 0.0d0 0.0d0 0.0d0             !n: pz   pz  0.2d0 0.0d0 0.0d0 0.0d0             !n: pz
-  dxy 0.2d0 0.0d0 0.0d0 0.0d0             !n: dx 
-  dyz 0.2d0 0.0d0 0.0d0 0.0d0             !n: dyz 
   dz2 0.2d0 0.0d0 0.0d0 0.0d0             !n: dz2   dz2 0.2d0 0.0d0 0.0d0 0.0d0             !n: dz2
   dzx 0.2d0 0.0d0 0.0d0 0.0d0             !n: dzx   dzx 0.2d0 0.0d0 0.0d0 0.0d0             !n: dzx
-  dx2 0.2d0 0.0d0 0.0d0 0.0d0             !n: dx2-y2+  dyz 0.2d0 0.0d0 0.0d0 0.0d0             !n: dyz 
 +  dx2 0.2d0 0.0d0 0.0d0 0.0d0             !n: dx2-y2   
 +  dxy 0.2d0 0.0d0 0.0d0 0.0d0             !n: dx
 &param_interpolation &param_interpolation
-  N_sym_points =5,  !n: 計算ラインを構成する対称 k 点数 +  N_sym_points = 5,  !n: 計算ラインを構成する対称k点数 
-  Ndiv         =40/ !n: 対称 k 点間の分割数 +  Ndiv         = 40/ !n: 対称k点間の分割数 
-  0.500 0.500 0.500 !n: 対称 k 点 ; SK_sym_pts(1:3,1); L(逆格子ベクトルの分率座標) +  0.500 0.500 0.500 !n: 対称k点(逆格子ベクトルの分率座標) 
-  0.000 0.000 0.000 !n: 対称 k 点 ; SK_sym_pts(1:3,2); G +  0.000 0.000 0.000 !n: 対称k点 
-  0.500 0.000 0.500 !n: 対称 k 点 ; SK_sym_pts(1:3,3); X +  0.500 0.000 0.500 !n: 対称k点 
-  0.500 0.250 0.750 !n: 対称 k 点 ; SK_sym_pts(1:3,4); W +  0.500 0.250 0.750 !n: 対称k点 
-  0.500 0.500 0.500 !n: 対称 k 点 ; SK_sym_pts(1:3,5); L+  0.500 0.500 0.500 !n: 対称k点
 &param_visualization &param_visualization
   flg_vis_wannier = 0, !o: 実空間ワニエ関数を計算 (しない: 0, する: 1)   flg_vis_wannier = 0, !o: 実空間ワニエ関数を計算 (しない: 0, する: 1)
Line 113: Line 116:
 &param_chiqw &param_chiqw
   Ecut_for_eps           = 3.6d0,   !o: 分極関数のカットオフ (Ry) 記述がなければSCF計算のecutwfcの値の1/10になる   Ecut_for_eps           = 3.6d0,   !o: 分極関数のカットオフ (Ry) 記述がなければSCF計算のecutwfcの値の1/10になる
-  Num_freq_grid          = 70,      !o: 計算周波数の総数+  Num_freq_grid          = 70,      !o: 計算周波数の総数(メッシュは log ω に対して切られる)
   N_CALC_BAND            = 50,      !o: 分極計算で考慮されるバンドの総数。SCF計算のnbndの数よりも小さくする。記述がなければSCF計算のnbndの値になる   N_CALC_BAND            = 50,      !o: 分極計算で考慮されるバンドの総数。SCF計算のnbndの数よりも小さくする。記述がなければSCF計算のnbndの値になる
-  MPI_num_proc_per_qcomm = 6,       !o: コミュニティ当たりのプロセス数。MPIを使用する際に指定+  MPI_num_proc_per_qcomm = 2,       !o: コミュニティ当たりのプロセス数。MPIを使用する際に指定
   MPI_num_qcomm          = 1,       !o: コミュニティの数。MPIを使用する際に指定   MPI_num_qcomm          = 1,       !o: コミュニティの数。MPIを使用する際に指定
   MPI_io_rank            = 0,       !o: 標準出力させる MPI の番号   MPI_io_rank            = 0,       !o: 標準出力させる MPI の番号
Line 142: Line 145:
 たとえばPWscfの入力ファイルが prefix.scf.in だった場合、次のようにします。 たとえばPWscfの入力ファイルが prefix.scf.in だった場合、次のようにします。
 <code> <code>
-$ mpirun -n 12 < prefix.scf.in > prefix.scf.out+$ mpirun -n 24 < prefix.scf.in > prefix.scf.out
 </code> </code>
   * 既約k点の情報が必要なので、SCF計算 (ネームリスト<nowiki>&control</nowiki>内で<nowiki>calculation='scf'</nowiki>とする計算) の直後にRESPACKを使った計算をする必要があります   * 既約k点の情報が必要なので、SCF計算 (ネームリスト<nowiki>&control</nowiki>内で<nowiki>calculation='scf'</nowiki>とする計算) の直後にRESPACKを使った計算をする必要があります
-  * k点数を変更したり、バンド計算など別の計算を行った後にRESPACKを使用する場合は、prefix.save を削除してから再度SCF計算を実行してください+  * k点数を変更したり、バンド計算など別の計算を行った後にRESPACKを使用する場合は、ディレクトリ prefix.save を削除してから再度SCF計算を実行してください
   * k点は automatic により生成し、シフトしていないもの (0 0 0) を使用してください   * k点は automatic により生成し、シフトしていないもの (0 0 0) を使用してください
  
Line 160: Line 163:
  
 <code> <code>
 +$ export OMP_NUM_THREADS=12
 +$ export MKL_NUM_THREADS=12
 $ calc_wannier < respack.in > LOG.wannier $ calc_wannier < respack.in > LOG.wannier
 </code> </code>
  
 +  * OpenMPによる並列化のみ対応しています
 +  * エネルギーウインドウはワニエ基底に射影するバンドの範囲です。
 +  * エネルギーインナーウィンドウ内のすべてのバンドがワニエ基底によるバンドと一致するように計算されます。指定しなくても計算可能ですが、できるだけ広い範囲を指定することでより確実なワニエ基底を得ることができます。
  
 ===== 分極関数の計算 ===== ===== 分極関数の計算 =====
Line 170: Line 178:
  
 <code> <code>
-$ mpirun -n 12 calc_chiqw < respack.in > LOG.chiqw+$ export OMP_NUM_THREADS=12 
 +$ export MKL_NUM_THREADS=12 
 +$ mpirun -n calc_chiqw < respack.in > LOG.chiqw
 </code> </code>
 +  * OpenMPとMPIのハイブリッド計算を行います。OMP_NUM_THREADSおよびMKL_NUM_THREADSにMPIの1スレッドあたりのOpenMP並列数を指定してください
 +  * MPI_num_qcommには、すべてのqで計算するときに、いくつの点を同時に並列計算を行うかを指定します
 +  * MPI_num_proc_per_qcommには、qの各点の計算に使用するスレッド数を指定します
   * MPIのプロセス数は MPI_num_proc_per_qcomm * MPI_num_qcomm に一致させます   * MPIのプロセス数は MPI_num_proc_per_qcomm * MPI_num_qcomm に一致させます
   * この計算に一番時間がかかります   * この計算に一番時間がかかります
 +  * バンドの数、カットオフ、k点数、ユニットセルの体積に比例して非常に多くのメモリを消費します
 +  * 観測される物理量としての光学応答を調べたければ通常のRPAを、相互作用パラメータを求めたければ制限RPAを使用します。それぞれ収束に必要なパラメータは異なるので注意してください。
 +    * 一般に、通常のRPAの方が計算コストが大きいです 
  
 ===== 相互作用の計算 ===== ===== 相互作用の計算 =====
Line 181: Line 197:
  
   * 直接相互作用<code>   * 直接相互作用<code>
 +$ export OMP_NUM_THREADS=12
 +$ export MKL_NUM_THREADS=12
 $ calc_w3d < respack.in > LOG.w3d $ calc_w3d < respack.in > LOG.w3d
 </code> </code>
   * 交換相互作用<code>   * 交換相互作用<code>
 +$ export OMP_NUM_THREADS=12
 +$ export MKL_NUM_THREADS=12
 $ calc_j3d < respack.in > LOG.j3d $ calc_j3d < respack.in > LOG.j3d
 </code> </code>
Line 199: Line 219:
   * Ecut_for_eps ... ecutwfcの1/10(デフォルト)   * Ecut_for_eps ... ecutwfcの1/10(デフォルト)
  
-次の手順で収束させます(flg_calc_type=1としてEELSの結果をプロットするのが便利です)+次の手順で収束させます(flg_calc_type=1としてEELSの結果をプロットして収束を確認するのが便利です)
  
-  - 多めの数のnbndでSCF計算を実行する(フェルミ準位より50eV程度上のバンドが入るくらいくらい) +  - 多めの数のnbndでSCF計算を実行する(最初は非占有状態のバンドが50本くらいになるか、あるいはフェルミ準位より2,30eV程度上のバンドが入るくらいで試すと良い) 
-  - N_CALC_BAND増や分極関数を収束させる。足りなくなったらnbndを増やしたSCF計算を再び行う +  - (制限RPAの場合)相互作用の大きさ求めたい軌道のワニエ基底を計算する。 
-  - Ecut_for_eps を増やしていき、計算を収束させる。+  - N_CALC_BAND に関分極関数を収束させる。足りなくなったらnbndを増やしたSCF計算を再び行う 
 +  - Ecut_for_eps に関して計算を収束させる。
   - SCF計算でk点数を増やし、分極関数を収束させる   - SCF計算でk点数を増やし、分極関数を収束させる
  
Line 222: Line 243:
 omega_max=200 omega_max=200
  
 +set logscale x
  
  
quantumespresso/respack.txt · Last modified: 2024/02/03 18:42 by koudai