* xc_gga.f90 [#o190ebca] ** subroutine xc_gga_chg [#od1e2fca] - if文でxctypeに関する比較を順に行う際には最も使われやすいggapbeは最初に比較するべき。~ 現状ではggapbeを使う際のif文の回数がxctypeの数に比例して増加する。 - xctypeが間違っている場合にelseでggapbeが呼ばれ計算が実行されると、パラメータの間違いに気づきにくくなる。~ xctypeが間違っているならエラーかxctypeのリストを出力してabortすべき。 ** subroutine exch*_wb [#dd31e70e] - LDAの交換エネルギーの計算でrho^{1/3}が必要になるので rho = max(fft_grad_l(ig,0),eps_chg) によりrhoが負になるのを防いでいるが、rhoをゼロでなくeps_chg=1d-25で置き換えているのは、規約密度勾配sの分母にrhoが現れるためである。~ しかしrhoが振動し負の値が現れる真空領域は本来はほぼ密度一様かつ勾配ゼロの領域であるが、現状では勾配はそのままの値が用いられている。~ その副作用としてrhoが負の位置ではsの分母に微小量eps_chgが現れ発散するが、PBE等ではLieb-Oxford boundによりsの発散はさほど問題にならなかった。~ 一方vdW-DF(の派生版)ではLieb-Oxford boundが効かない交換汎関数を用いる機会が多いので、sの非物理的な発散は見逃さないのが得策と思われる。 ** Makefile [#oe5a3941] - 本来-O1でコンパイルするファイルを NOVECT = opgr.o filter.o inputf.o util.o で区別していたはずが、5.5.*辺りから NOPARA = opgr.o filter.o inputf.o util.o inopts.o fsrfsi.o f77_wisdom.o は-O3でコンパイルするように変更されている。~ 5.5.3で例えばnum_space_group=221とすると計算が止まってしまうのはopgr.f90の最適化が原因か?