分类:
2010-02-05 16:17:36
PWSCF计算实例分析(6)原子位置优化 转载自:http://old.blog.edu.cn/user1/11542/archives/2006/1578700.shtml | |
在pwscf中提供了两种优化方法对原子位置进行驰豫:a) BFGS quasi-newton algorithm, b)最速下降法(quick-min Verlet)。除非初始位置很接近平衡位置,一般采用BFGS准牛顿算法比较快。在结构优化时,calculation需设置为"relax",下面相关的参数有时也需要设置:
一、在&control .../中设置优化的收敛标准参数、步数等 nstep :优化的最大步数; tstress :设置True,表示要计算体系的应力; tprnfor:设置为True,表示要计算原子所受的力,在calculation='relax'时,默认为.True.; etot_conv_thr:用来控制原子位置优化时,总能变化收敛的标准;默认值为1.0D-4 Ha; forc_conv_thr:用来控制原子位置优化时,原子所受力的收敛标准,默认值为1.0D-3 Ha/a.u,只有当etot_conv_thr和forc_conv_thr的标准都满足时,优化才停止; 二、在&IONS..../中设置优化方法中的相关参数 在calculation='relax'时,ion_dynamics设置为'bfgs'表示用BFGS准牛顿算法来进行优化,设置为'damp'表示用最速下降法来进行优化。 pot_extrapolation:用来控制优化或电子迭代过程中势的混合方式,在原子位置优化时,最好设置为'second_order',表示采用二阶方式来进行混合; wfc_extrapolation:用来控制优化或电子迭代过程中波函数的混合方式,在原子位置优化时,最好设置为'second_order',表示采用二阶方式来进行混合; 当设置了采用BFGS准牛顿算法来优化后,下面的参数需设置: upscale:用来控制conv_thr在结构优化过程中最可能的缩小值,在优化快接近收敛时,conv_thr会自动减小以保证所计算的力仍然很精确,但是conv_thr并不会减小到conv_thr/upscale; bfgs_ndim:用来控制有多少个旧的力和位移矢量会用在残差矢量的Pulay混合中,其中残差矢量是基于BFGS算法中的Hessian矩阵的逆来得到的。设置为1,就是标准的BFGS准牛顿算法;
trust_radius_max:离子优化过程中,离子每一步最大移动量; 默认值为0.8D0; trust_radius_min:离子优化过程中,当trust_radius小于trust_radius_min 时,离子每一步最小移动量; 默认值为 1.D-3;
trust_radius_ini:默认值为 0.5D0,在原子位置优化计算中初始的离子位移量;
w_1, w_2 :用在基于Wolfe条件的线性搜索方法中的参数。
例子1:优化CO分子
&CONTROL
calculation = "relax",
prefix = "CO",
pseudo_dir = "./",
outdir = "./",
tprnfor=.true.
forc_conv_thr=1.0D-4
/
&SYSTEM
ibrav = 1, celldm(1) = 12.D0, nat = 2, ntyp = 2,
ecutwfc = 24.D0, ecutrho = 144.D0,
/
&ELECTRONS
conv_thr = 1.D-7,
mixing_beta = 0.7D0,
/
&IONS
ion_dynamics='bfgs',
pot_extrapolation = "second_order",
wfc_extrapolation = "second_order",
/
ATOMIC_SPECIES
O 1.00 O.LDA.US.RRKJ3.UPF
C 1.00 C.pz-rrkjus.UPF
ATOMIC_POSITIONS {bohr}
C 2.256 0.0 0.0
O 0.000 0.0 0.0 0 0 0
K_POINTS {Gamma} |