[Wien] Simulating STM images

M. Todorova todorova at fhi-berlin.mpg.de
Thu Sep 4 13:25:34 CEST 2003


Dear Michael, 

I have simulated STM images using WIEN97. Please find all the necessary
information in the attachment. I hope it helps.

Best wishes
Mira

Michael Gurnett wrote:
> 
> Hello
>
>Just wondering if anyone has used Wien2k information to simulate STM images and if >so how was this done
>
>Best wishes
>
>Michael Gurnett 

------------------------------------------------------------------
Mira Todorova                           todorova at fhi-berlin.mpg.de
Fritz-Haber-Institut, Abt. Theorie      Phone:  +49 30 8413 4808
Faradayweg 4-6                          FAX:    +49 30 8413 4701
D-14195 Berlin (Germany)                www.fhi-berlin.mpg.de/th
------------------------------------------------------------------
-------------- next part --------------
To do an STM-Simulation one needs:
1) a converged calculation

2) run LAPW2 to get a case.clmval file
   Use a energy window around the Fermi energy (usually Ef +- 0.5 eV)

3) Run LAPW5
   This program has been rewritten, so that you get not only the
   charge density in one plane, but in many planes, parallel to each
   other. Accordingly, one has to specify one more dimension in the
   input file case.in5. An example file case.in5 is attached to this mail:

   line 1-4: four points in the unit cell (origin, x-end, y-end,
             z-end), which specify the volume in which the charge
             density will be calculated. 
             In the old LAPW5 one had to specify just 3 points
             (origin, x-end, y-end).
   line 7  : specifies number of x, y and z grid points 
             To make an STM-simulation I found it useful to plot more
             than one cell - the example file is for (5 x 5) unit cells. For
             plotting more than one cell, make sure, that you have the
             same number of x and y points in each cell. In the
             example file I have used 41 points for each direction in
             a plane (x and y). This corresponds to 9 points per cell
             in x(y) direction, approximately 1 point per Angstroem.
             For the z-direction it seems to be sufficient to have a
             plane each 0.06 Angstroem. The z-coordinate of each plane
             is written in the case.output5 file (look for 'k,ZI'; k
             is the  number of the plane, ZI is the z-coordinate of
             the first point in each plane).  
   Everything else in case.in5 is as one knows it from the old LAPW5.

   To calculate the charge density in just one plane (like in the old
   LAPW5) the z-coordinates of each specified point should be the same
   and the number of points in z direction should be 1.

4) Simulate an STM-image by running STM.f
   
   This programm enables one to draw a isosurface of constant
   density. One has to try different values to get a reasonable
   picture. Values for the density corresponding to a height 5 - 6
   Angstoems above the surface seem to work for metals.

   Input file: The STM.f programm requires a file STM.rho as input, 
               so one has to copy the case.rho file to STM.rho.
   Output file: The output file is called STM.out and is suitable for
                plotting with XFarbe. If one wants to use an other
                plotting programm, it might be necessary to change the
                format of the output

   Run STM.f 
   The program will ask for a threshold value for the density 
   to be specified.
   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: LAPW5.tar.gz
Type: application/x-gzip
Size: 16833 bytes
Desc: not available
Url : http://zeus.theochem.tuwien.ac.at/pipermail/wien/attachments/20030904/da5290a4/LAPW5.tar.gz
-------------- next part --------------

      PROGRAM STM

      IMPLICIT NONE
      INTEGER nx,ny,nz,x,y,z,val
      
      DOUBLE PRECISION value(1:300), value1(1:300,1:300)
      DOUBLE PRECISION thresh, dz
      DOUBLE PRECISION  value_cov(0:300,0:300,0:300)

      CHARACTER*40 dummy
      CHARACTER*10 test

      DO z=0,300,1
         DO x=0,170,1
            DO y=0,170,1
               value_cov(x,y,z) = 0.0
            ENDDO
         ENDDO
         value(z)=0
      ENDDO

      open(unit=15,file='STM.rho',status='old',err=91)
      open(unit=16,file='STM.out',status='new',err=92)
91    WRITE(*,*) 'STM.rho file does not exist'      
      STOP
92    WRITE(*,*) 'File STM.out already exists.'
      WRITE(*,*) ' Overwrite (y/n)?'
      READ(*,93) test
      if (test.eq.'y' .or. test.eq.'Y') then
       open(unit=16,file='STM.out')
c       return
      else
       STOP
      endif
93    FORMAT(a1) 

      WRITE(*,*)  'SELECT CONSTANT DENSITY VALUE:'
      READ(*,*) thresh

c      READ (5,'(3I4,A40,E20.13)') nx,ny,nz,dummy,z_axis
      READ (15,'(3I4,A70)') nx,ny,nz,dummy

      WRITE (16,'(A40)')
      WRITE (16,'(2I5)') ny-2,nx-2
       
      READ  (15,'(5E16.8)') (((value_cov(x,y,z),y=1,ny),x=1,nx),z=1,nz)

      DO y=1,ny,1
         DO x=1,nx,1
            DO 20 z=1,nz,1
               
               IF (value_cov(x,y,z) .LE. thresh) GO TO 10
 20   CONTINUE       
 10   dz= (value_cov(x,y,z-1) - thresh)/(value_cov(x,y,z-1)
     &           -value_cov(x,y,z)) 
      value1(x,y)= dble(z-1) + dz 

         ENDDO
c          WRITE (16,'(5F16.8)') (value1(x,y),x=1,nx,1)
      ENDDO

      DO x=2,nx-1,1
         DO y=2,ny-1,1
         value(y)=(value1(x,y-1)+value1(x,y)+value1(x,y+1)+
     &            value1(x-1,y)+value1(x+1,y)+
     &            value1(x-1,y-1)+value1(x-1,y+1)+
     &            value1(x+1,y-1)+value1(x+1,y+1))/9.0
         ENDDO
         WRITE (16,'(5F16.8)') (value(y),y=2,ny-1,1)
      ENDDO
 

      END
-------------- next part --------------
0  0  3 4                     # x, y, z, divisor    of origin
20 0  3 4                     # x, y, z, divisor    of x-end
0  20 3 4                     # x, y, z, divisor    of y-end
0  0  4 4                     # x, y, z, divisor    of z-end                                      
6 6 6                       # number of shells
41 41 125                   # number of points in x, y and z direction
RHO                         #   RHO|DIFF|OVER; ADD|SUB or blank 
ANG VAL NODEBUG             #   ANG|ATU; VAL|TOT; DEBUG|NODEBUG


More information about the Wien mailing list