[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