[Pw_forum] program modification of virtual.f90
yukihiro_okuno at fujifilm.co.jp
yukihiro_okuno at fujifilm.co.jp
Fri Mar 21 08:54:19 CET 2008
Dear PW users and developer.
I now want to use virtual crystal approximation for USPP.
The virtual.f90 is not implemented still on the case
that riiners is different ( where riiner is the length of pseudized
argumentation function and
if r < rinner Q function is given like Q_{n,m}(r) = r^{L} * (C1 + C2r^{2}
+ C3r^{4} + .... ),
The virtual.x output error message like
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
from Virtual : error # 1
different rinner are not implemented (yet)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
So I want to modify the virtual.f90 in order to use for the case that
ultra soft pseudo potentials
have different rinner.
If atom A and B had different different riiner r_A, r_B respectively (
which lengths specify the pusedized lengths of
charge argumentation function Q_{n,m}(r), if r < riiner, Q is expressed
like polynomial; Q_{n,m}(r) = r^{L} * (C1 + C2r^{2} + C3r^{4} + ....
and r > riiner Q{n,m}(r) = qfun(r) where qfun is defined in the UPF file
format.)
( we follow the paper PRB vol47 10142)
The modification of virtual.f90 when A atom and B atom is mixed by the
ratio A:B= x:1-x , I planed the modification like ,
1) We set new riiner = min(r_{A}.r_{B}) for each angular momentum L
for the virtual atom.
2) then we make virtual potential like
r < min(r_{A}. r_{B}) = r_{A} = r_inner ( we set r_{A} < r_{B} )
upf_qfcoef(n,m) = x * qfcoef_{A} (where n, m is for A atom index
and qfcoef is A atom pseudized polynomial coefficient C1,C2....)
upf_qfcoef(n,m) = (1-x) * qfcoef_{B} (where n,m is for B atom index
and qfcoef is B atom pseudized polynomial coefficient )
r_{A} < r < r_{B}
qfun(n,m)[r} = x * r^{L} * (C1_{A} + C2_{A} * r^{2} + C3_{A} * r^{4} +
...)
qfun(n,m)[r] = (1-x) * qfun_{B} ( where qfun is the argumentation
function for r > riiner which are specified in UPF file ).
r_{B} < r
qfun(n,m)[r} = x * qfun_{A}
qfun(n,m)[r] = (1-x) * qfun_{B}
Is it right the above mentioned plan I wrote in order to modify the
virtual.f90 ?
Sincerely,
Yukihiro Okuno.
More information about the users
mailing list