[Pw_forum] Re: about electric field potential in pp.x

Xunlei Ding ding at sissa.it
Fri May 26 17:43:38 CEST 2006


Dear All,

I am now using v3.0. This error is still there.
No matter whether tefield = .true. and dipfield = .true. are set in the pw.x calculation,
/the electric field potential //in output file of pp.x is zero./
How to use /plot_num =12 to plot the e_field?

Yours,
Ding

/On Sat, 2005-03-26 at 13:58 +0800, xywu wrote:
>/ Dear all,
/>/ 
/>/  I add a sawlike electric potential in SCF and want to get the electric 
/>/ potential from pp.x.
/>/ But when i use the pp.x with plot_num=12, the electric field potential 
/>/ in output file is zero.
/
Thank you for noticing this. You are right, there is a bug with
plot_num=12. This will be fixed on the cvs version.

>/ 
/>/ But if i get the electric potential from pp.x without adding electric 
/>/ field in SCF, the error occurs as follows;
/>/ 
/>/  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/>/      from punch_plot : error #        -1
/>/      e_field is not calculated
/>/  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/>/  
/>/ what's the wrong with it.
/>/ 
/plot_num=12 is supposed to work only if tefield=.true. in the pw.x
calculation, otherwise pp.x will not plot any field and stops with an
error message.


>/ Please give me some advice.
/>/ 
/>/ ! plot_num    selects what is saved in filplot:
/>/   !                0=charge
/>/   !                1=total potential V_bare+V_H + V_xc
/>/   !                2=local ionic potential
/>/   !                3=local density of states at e_fermi
/>/   !                4=local density of electronic entropy
/>/   !                5=STM images
/>/   !                6=spin polarization (rho(up)-rho(down))
/>/   !                7=|psi|^2
/>/   !                8=electron localization function (ELF)
/>/   !                9=planar average of all |psi|^2
/>/   !               10=integrated local density of states (ILDOS) from
/>/   !                  emin to emax (emin, emax in eV)
/>/   !                  if emax is not specified, emax=E_fermi
/>/   !               11=the V_bare + V_H potential
/>/   !               12=the electric field potential
/>/   !               13=the noncolinear magnetization.
/>/ 
/>/ BTW, still another question about add_efield.
/>/ 
/>/ In the file add_efield.f90
/>/ 
/>/ " !--------------------------------------------------------------------------
/>/   subroutine add_efield(rho,vpoten,etotefield)
/>/ !--------------------------------------------------------------------------
/>/ !
/>/ !   This routine adds an electric field to the local potential. The
/>/ !   field is made artificially periodic by introducing a saw-tooth
/>/ !   potential. The field is parallel to a reciprocal lattice vector bg, 
/>/ !   according to the index edir.
/>/ !
/>/ !   if dipfield is false the electric field correction is added to the
/>/ !   potential given as input (the bare local potential) only
/>/ !   at the first call to this routine. In the following calls
/>/ !   the routine exit.
/>/ !
/>/ !   if dipfield is true the dipole moment per unit surface is calculated
/>/ !   and used to cancel the electric field due to periodic boundary
/>/ !   conditions. This potential is added to the Hartree and xc potential
/>/ !   in v_of_rho. NB: in this case the electric field contribution to the 
/>/ !   band energy is subtracted by deband.
/>/ "
/>/ "  if (first) then
/>/      WRITE( stdout,*)
/>/      WRITE( stdout,'(5x,"Adding an external electric field")')
/>/      WRITE( stdout,'(5x,"Intensity [a.u.]: ",f15.8)') eamp
/>/   endif
/>/   if (dipfield) WRITE( stdout,'(5x,"Dipole field [a.u.]: ", f15.8)') dip
/>/   if (first) then
/>/      WRITE( stdout,'(5x,"Potential amplitude [Ry]: ", f15.8)') vamp
/>/      WRITE( stdout,'(5x,"Total length [points]: ", i5)') npoints
/>/      WRITE( stdout,'(5x,"Total length [bohr rad]: ", f15.8)') length
/>/      WRITE( stdout,'(5x,"Field is reversed between points: ",2i6)')nmax, nmax+ndesc
/>/   endif
/>/ "
/>/ 
/>/ And in a typical output file of PW.x with efield:
/>/ "
/>/      Adding an external electric field
/>/      Intensity [a.u.]:      0.01000000
/>/      Potential amplitude [Ry]:      0.24480000
/>/      Total length [points]:   200
/>/      Total length [bohr rad]:     61.20000000
/>/      Field is reversed between points:      1   161
/>/ 
/>/ "
/>/ >From the output file and the code in add_efield.f90, the "first" in the code is TRUE and the "dipfield" is  FALSE, which means that the subroutine is only running only at the first call and the dipole correction in periodic boundary conditions is never used! Is it the truth?
/>/ 
/>/ 
/Yes this is true. However, from your output, the region where the field
is reversed seems too large. This region is supposed to be a narrow
region within the vacuum. 


>/ ------------------------------------------------------------
/>/ Best regards
/>/ 
/>/ Xiyong Wu(X.Y.Wu) 
/>/ E_mail:xywu at imr.ac.cn <mailto:xywu at imr.ac.cn>
/




More information about the users mailing list