+ All Categories
Home > Documents > cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG...

cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG...

Date post: 16-Mar-2018
Category:
Upload: dinhdan
View: 215 times
Download: 1 times
Share this document with a friend
31
Bloch wave dynamical programs. Clear reviews of the Bloch-wave theory of dynamical electron diffraction can be found in Hirsch, Howie et al. (1977), Howie (1971), Humphreys (1979, Metherall (1975) and Reimer (1984), as discussed in chapter 3. The exact incorporation of HOLZ reflections in this approach is described in Lewis, Villagrana et al. (1978). A recent review which emphasises Bloch waves in real space and the atomic string approach can be found in Bird (1989) , where the use of perturbation methods for the HOLZ is also reviewed . The papers by Ishizuka and Uyeda (1977) and Goodman and Moodie (1974) discuss the relationship between the various algorithms and the Schrodinger equation. Methods for computing CBED patterns from quasicrystals are discussed in Cheng and Wang (1989). The development of computer algorithms based on these expressions is reviewed in the books Krakow and O'Keefe (1989) and Buseck, Cowley et al. (1989). Many FORTRAN source programs useful for electron microscopy can obtained at no charge by telephone (using a computer modem) from the Argonne Public domain software library (Bitnet address ZALUZEC@ANLMST, Username EMMPDL, Password EMMPDL . Telephone USA 312- 972-7919. 800 or 1200 Baud, 8 data, 1 stop bit, no parity. See also EMSA Bulletin Vol 16, No 1, p.42 . A popular suite of programs, (EMS) which compute both lattice images (multislice) and CBED patterns (Bloch-wave) are described in the chapter by Stadelmann in Krakow and O'Keefe (1989), and in Stadelmann (1987). This program is installed in many laboratories around the world, operating on many computers including the Silicon Graphics and Vax types. Another popular
Transcript
Page 1: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

Bloch wave dynamical programs.

Clear reviews of the Bloch-wave theory of dynamical electron diffraction can be found in

Hirsch, Howie et al. (1977), Howie (1971), Humphreys (1979, Metherall (1975) and Reimer

(1984), as discussed in chapter 3. The exact incorporation of HOLZ reflections in this approach

is described in Lewis, Villagrana et al. (1978). A recent review which emphasises Bloch waves in

real space and the atomic string approach can be found in Bird (1989) , where the use of

perturbation methods for the HOLZ is also reviewed . The papers by Ishizuka and Uyeda (1977)

and Goodman and Moodie (1974) discuss the relationship between the various algorithms and

the Schrodinger equation. Methods for computing CBED patterns from quasicrystals are

discussed in Cheng and Wang (1989).

The development of computer algorithms based on these expressions is reviewed in the

books Krakow and O'Keefe (1989) and Buseck, Cowley et al. (1989). Many FORTRAN source

programs useful for electron microscopy can obtained at no charge by telephone (using a

computer modem) from the Argonne Public domain software library (Bitnet address

ZALUZEC@ANLMST, Username EMMPDL, Password EMMPDL . Telephone USA 312-972-

7919. 800 or 1200 Baud, 8 data, 1 stop bit, no parity. See also EMSA Bulletin Vol 16, No 1, p.42

. A popular suite of programs, (EMS) which compute both lattice images (multislice) and CBED

patterns (Bloch-wave) are described in the chapter by Stadelmann in Krakow and O'Keefe

(1989), and in Stadelmann (1987). This program is installed in many laboratories around the

world, operating on many computers including the Silicon Graphics and Vax types. Another

popular commercial suite of programs for many types of diffraction calculations and atomic

modelling is the Cerius Crystals Module (from Cambridge Molecular Design, St John's Center,

Cowley Rd., Cambridge, CB4 4WS, U.K.). The Refine/CB program discussed in section 4.2 for

automated structure factor refinement is available from the authors (c/o Department of Physics,

Arizona State University, Tempe, Az, 85287, USA), and is further discussed in Zuo and Spence

(1991).

Page 2: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

A listing of our Bloch-wave Fortran program TCBED follows, with sample input and

output. An earlier version of this was listed in full in Zuo, Gjonnes et al. (1989), and is available

at no charge from the Argonne Publicv domain library by modem. New programs may be tested

against the output given in figure A5.1, or against the data shown in figure 5.2, which agrees well

with experiment at two thicknesses.

The TCBED program listed below uses the subroutines for automatic beam generation

and crystallographic computations which have been listed in the previous section. The program

also requires subroutines for the diagonalization of a complex general matrix. These can be

found in the EISPACK package Smith (1976). These subroutines may be obtained from a public

domain library at the electronic mail address [email protected]. For a listing of

programs in this library (and for help), send a message to above address with the words 'send

index'.

Page 3: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

PROGRAM TCBED

************************************************************************

* A FORTRAN PROGRAM FOR SIMULATING TRANSMISSION CONVERGENT BEAM *

* ELECTRON DIFFRACTION PATTERNS WITH ABSORPTION BY BLOCH WAVE METHOD *

* VERSION 2 *

* *

* THIS PROGRAM HAS THE FOLLOWING SPECIAL FEATURES: *

* 1) HOLZ INTERACTIONS ARE INCLUDED *

* 2) ABSORPTION IS INCLUDED BY DIAGONALIZING A GENERAL COMPLEX MATRIX *

* 3) THE DEFAULT ABSORPTION POTENTIAL IS CALCULATED BY "ATOM" PROGRAM *

* 4) INDIVIDUAL STRUCTURE FACTORS AND ABSORPTION PARAMETERS CAN BE *

* ADJUSTED *

* 5) AUTOMATIC GENERATION OF BEAMS FOR SIMULATION *

* *

* THIS PROGRAM ASSUMES THE FOLLOWING CONVENTIONS *

* 1) THE CRYSTALLOGRAPHIC SIGN CONVENTION EXP(-IKR) FOR PLANE WAVE *

* 2) ISOTROPIC DEBYE-WALLER FACTOR FOR EACH ATOM IN THE UNIT CELL *

* 3) ANSTROM AS THE UNIT OF LENGTH *

* 4) INCIDENT BEAM DIRECTION SPECIFIED BY THE CENTER OF LAUE CIRCLE *

* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE *

* SURFACE AND Z=-t FOR EXIT SURFACE *

* *

* OUTPUT FILE *

* OUTPUT DATA FILE IS UNFORMATED, TO READ THE FILE, USE *

* READ (UNIT) NP,(BINT(I),I=1,NP) *

* NY=BINT(NP) !NUMBER OF POINT IN Y-DIRECTION *

* NX=BINT(NP-1) !NUMBER OF POINT IN X-DIRECTION *

* ND=BINT(NP-2) !NUMBER OF THICKNESS *

* NB=BINT(NP-3) !NUMBER OF OUTPUT BEAMS *

Page 4: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

* TO GET CBED INTENSITY FOR THE I1 REFLECTION, I2 THICKNESS, USE *

* DO J=1,NY *

* DO I=1,NX *

* IPOS=(J-1)*NX*ND*NB+(I-1)*ND*NB+(I1-1)*NB+I2 *

* CBED(I,J)=BINT(IPOS) *

* END DO *

* END DO *

* *

* J.M. ZUO, NOV. 1989 *

************************************************************************

CHARACTER TEXT*80,STATUS*4

PARAMETER (NM=300)

INTEGER HKL(3,NM),HKLOUT(3,NM),HKLSR(3,NM),ID(NM)

REAL UGHR(NM,NM),UGHI(NM,NM),CCR(NM,NM),CCI(NM,NM),

* VR(NM),VI(NM),BINT(60000),UGSR(NM),UGSI(NM),

* ABSPR(NM),ABSPI(NM)

COMPLEX CVT(NM,NM),CINV(NM)

PARAMETER (NJ=10)

CHARACTER*4 LABEL(NJ)

REAL ZT(NJ),CX(NJ),AX(4,NJ),BX(4,NJ),AF(NJ),AFI(NJ)

PARAMETER (NK=500)

DIMENSION ITYPE(NK),XP(3,NK),DW(NK)

REAL*8 GMX(3,3),GMXR(3,3)

COMMON/METRIC/ GMX,GMXR

Page 5: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

CHARACTER*2 ELNAME

DOUBLE PRECISION MATM,SATM,KVATM,FEATM,FAATM

INTEGER STATM

CHARACTER*2 ABSCTL

REAL KV,CELL(6),TILT0(3,3),ZONE(3),GH(3),GG(3)

REAL TILTX(3),TILTY(3),TILT(3),BIGK,DEPTH(5000)

INTEGER INDZ(3),GX(3),GY(3),GZ(3),NET(2,10000)

REAL*8 PI,TWOPI,TEMP,CN,SN,SFRE,SFIM,S2

COMPLEX ZERO,ONE,C1,C2,C3

DATA PI/3.14159254/,TWOPI/6.283185307/,

* NR,NW,IW/10,12,14/,

* DELTA/1.0E-7/

100 FORMAT (80A)

110 FORMAT (A4)

120 FORMAT (/,' OUTPUT LISTING OF TCBED PROGRAM BY J. M. ZUO, V2.0',

* /,X,80A)

140 FORMAT (/,' INCIDENT ELECTRON BEAM HIGH VOLTAGE ',F12.5,' KV',

* /,' WAVELENGTH ',F12.6,' A')

160 FORMAT (/,' NEAREST ZONE AXIS ',3I4)

180 FORMAT (/,' 3 POINTS DEFINE A PARALLEL BOX CBED REGION',

* /,' POINT 1, THE ORIGIN ',3F10.5,

* /,' POINT 2, THE X-AXIS ',3F10.5,

* /,' POINT 3, THE Y-AXIS ',3F10.5,

* /,' NUMBER OF SAMPLING POINTS IN X-DIR ',I4,

* /,' IN Y-DIR ',I4)

200 FORMAT (/,' BASE G VECTOR ALONG X DIRECTION ',3I4,

* /,' Y DIRECTION ',3I4,

Page 6: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

* /,' Z DIRECTION ',3I4)

220 FORMAT (/,' THE UNIT CELL IS DEFINED BY a = ',F9.5,' Angstrom',

* /,' b = ',F9.5,' Angstrom',

* /,' c = ',F9.5,' Angstrom',

* /,' alpha = ',F9.5,' Degree',

* /,' beta = ',F9.5,' Degree',

* /,' gamma = ',F9.5,' Degree')

240 FORMAT (/,' THERE ARE TOTAL',I4,' ATOMS AND',I3,' SPECIES')

260 FORMAT (/,' THE ATOMS, THEIR X-RAY SCATTERING FACTOR PARAMETERS'

* /,' AND THEIR DEBYE-WALLER FACTOR')

280 FORMAT (/,X,I2,2X,A4,' Z=',F6.2,/,9F8.4)

300 FORMAT (/,' THE ATOMS TYPE, THEIR COORDINATES AND D-W FACTOR')

320 FORMAT (2(X,I2,3F9.5,F6.3))

340 FORMAT (/,' STATUS = AUTO , BEAM INDEX (HKL) ARE GENERATED BY'

* ' PROGRAM BEAM_SETUP',

* /,' UP TO HOLZ ',I1,' AND MAXIMUM EXCITATION ERROR ',F5.2)

360 FORMAT (/,' NUMBER OF BEAMS EXCEEDS THE CAPACITY OF THIS PROGRAM')

380 FORMAT (/,' TOTAL',I4,' BEAMS ARE INCLUDED, THEY ARE')

400 FORMAT (5(X,3I4,','))

420 FORMAT (/,' BEAM INTENSITIES ARE CALCULATED FOR ',I3,' DIFFERENT'

* ' THICKNESSES, THEY ARE')

440 FORMAT (10(X,F8.3))

450 FORMAT (/,' BEAM INTENSITIES ARE CALCULATED FOR ',I3,' DIFFERENT'

* ' THICKNESSES WITH A INCREMENT',F10.5)

460 FORMAT (/,' STRUCTURE FACTOR AND ABSORPTION COEFFICIENTS IN Ugh',

* ' MATRIX',

* /,4X,'i',3X,'j',6X,'H',3X,'K',3X,'L',7X,'|Ugh|',3X,'AND',

* 2X,'PHASE',9X,'|U''gh|',2X,'PHASE')

480 FORMAT (1X,2I4,' (',3I4,')',E15.5,F13.6,E15.5,F10.3)

500 FORMAT (/,' NUMBER OF BEAMS OUTPUTED ARE',I4,' THEY ARE')

Page 7: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

520 FORMAT (/,' NUMBER OF REFINED REFLECTIONS ARE',I4,' THEY ARE')

540 FORMAT (' (',3I4,')',E15.5,F13.6,E15.5,F13.6)

560 FORMAT (/,' THE MEAN CRYSTAL ABSORPTION POTENTIAL IS ',F13.6)

580 FORMAT (/,' THE MEAN CRYSTAL POTENTIAL IS ',F13.6)

600 FORMAT (/,' WARNING!!!, ERROR IN APSORPTION CAL. FOR ATOM ',A4,

* ' REFLECTION ',3I4)

ZERO=CMPLX(0.0,0.0)

ONE=CMPLX(1.0,0.0)

C

C START INPUT FROM CHANNEL 10 AND LISTING TO CHANNEL 12

C

C TEXT: 80 CHARACTER TITLE

C

READ (NR,100) TEXT

WRITE (NW,120) TEXT

C

C KV INCIDENT ELECTRON ENERGY IN UNIT OF KeV

C INDZ(3) NEAREST ZONE AXIS INDEX

C TILT0(3,3) 3 INCIDENT BEAM DIRECTIONS, TOGETHER THEY DEFINES A PARALLEL

C BOX REGION OF CBED. THE 1ST IS THE ORIGIN, THE 1ST AND 2ND IS

C THE X SIDE AND 1ST AND 3RD IS THE Y SIDE OF THE

C PARALLELOGRAM

C THE INCIDENT BEAM DIRECTION IS DEFINED BY THE COORDINATES

C OF THE LAUE CIRCLE IN UNITS OF CRYSTAL RECIPROCAL LATTICE

C NX,NY NUMBER OF SAMPLING POINTS IN X AND Y DIRECTIONS

C

READ (NR,*) KV,INDZ,((TILT0(I,J),J=1,3),I=1,3),NX,NY

KVATM=KV

WAVEL=0.3878314/SQRT(KV*(1.0+0.97846707E-03*KV))

Page 8: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

WRITE (NW,140) KV,WAVEL

WRITE (NW,160) INDZ

WRITE (NW,180) ((TILT0(I,J),J=1,3),I=1,3),NX,NY

C

C CELL(6) CRYSTAL UNIT CELL PARAMETERS IN THE ORDER OF

C a, b, c, alpha, beta, and gamma

C

READ (NR,*) CELL

WRITE (NW,220) CELL

DO I=4,6

CELL(I)=COS(PI*CELL(I)/180.0)

END DO

CALL METRIC(CELL)

DO I=1,3

ZONE(I)=FLOAT(INDZ(I))

END DO

CALL SCALE(0,ZONE,TEMP1)

DO I=1,3

ZONE(I)=ZONE(I)/TEMP1

END DO

C

C NATOMS NUMBER OF ATOMS IN THE UNIT CELL

C NTYPE NUMBER OF TYPES OF ATOMS IN THE UNIT CELL

C

READ (NR,*) NATOMS,NTYPE

WRITE (NW,240) NATOMS,NTYPE

WRITE (NW,260)

DO I=1,NTYPE

C

C LABEL ATOMIC SYMBOL

Page 9: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C

READ (NR,110) LABEL(I)

C

C ZT ATOMIC NUMBER

C AX,BX,CX 9 GAUSSIAN FITTING PARAMETERS OF ATOMIC X-RAY SCATTERING

C FACTORS

C

READ (NR,*) ZT(I),(AX(J,I),BX(J,I),J=1,4),CX(I)

IF (ZT(I).EQ.0) THEN

ZT(I)=CX(I)

DO J=1,4

ZT(I)=AX(J,I)+ZT(I)

END DO

END IF

WRITE (NW,280) I,LABEL(I),ZT(I),(AX(J,I),BX(J,I),J=1,4),

* CX(I)

END DO

C

C ITYPE THE SEQUENTIAL NUMBER ASSIGNED TO THE ATOMS IN PREVIOUS

C X-RAY SCATTERING FACTOR INPUT

C XP(3) FRACTIONAL ATOMIC COORDINATES

C DW DEBYE-WALLER FACTOR OF THE ATOM

C

READ (NR,*) (ITYPE(I),(XP(J,I),J=1,3),DW(I),I=1,NATOMS)

WRITE (NW,300)

WRITE (NW,320) (ITYPE(I),(XP(J,I),J=1,3),DW(I),I=1,NATOMS)

C

C STATUS A PROGRAM FLOW CONTROL PARAMETER, IF STATUS =

C 'AUTO' THEN

C THE PROGRAM GENERATES THE REFLECTIONS NEEDED IN

Page 10: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C THIS SIMULATION,

C ELSE

C USER ENTERS THE REFLECTIONS

C

READ (NR,100) STATUS

IF (STATUS(1:4).EQ.'AUTO'.OR.STATUS(1:4).EQ.'auto') THEN

C

C GX(3),GY(3),GZ(3) THREE INDEPENDENT BASE G VECTORS FOR GENERATING

C THE ENTIRE G VECTORS IN THE ZONE AXIS

C GX AND GY FOR THE ZOLZ

C GZ FOR THE HOLZ

C

READ (NR,*) GX,GY,GZ

WRITE (NW,200) GX,GY,GZ

C

C IHOLZ NUMBER OF HOLZ RINGS TO BE INCLUDED

C SGMAX THE MAXIMUM EXCITATION ERRORS TO BE CONSIDERED

C THIS PARAMETER DETERMINES WHICH REFLECTION SHOULD BE

C INCLUDED, AND WHICH SHOULD NOT

C

READ (NR,*) IHOLZ,SGMAX

WRITE (NW,340) IHOLZ-1,SGMAX

DO I=1,3

TILT(I)=TILT0(1,I)+0.5*TILT0(2,I)+0.5*TILT0(3,I)

END DO

CALL BEAM_SETUP(NPEAMS,HKL,GX,GY,GZ,ZONE,IHOLZ,TILT,SGMAX,

* WAVEL,1)

READ (NR,*) NBEAMS

NPEAMS=NPEAMS-NBEAMS

ELSE

Page 11: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C

C NBEAMS NUMBER OF REFLECTIONS TO BE INCLUDED

C HKL(3,I) H, K, L OF THE REFLECTION

C

READ (NR,*) NPEAMS

READ (NR,*) ((HKL(J,I),J=1,3),I=1,NPEAMS)

READ (NR,*) NBEAMS

NPEAMS=NPEAMS-NBEAMS

END IF

WRITE (NW,380) NBEAMS+NPEAMS

WRITE (NW,400) ((HKL(J,I),J=1,3),I=1,NBEAMS+NPEAMS)

IF (NBEAMS+NPEAMS.GT.NM) THEN

WRITE (NW,360)

STOP

END IF

WRITE (NW,402) NPEAMS

402 FORMAT (/,I5,' BEAMS ARE TREATED BY PERTURBATION')

C

C STATUS A PROGRAM FLOW CONTROL PARAMETER, IF STATUS =

C 'STOP' THEN

C STOP

C IF STATUS =

C 'AUTO' THEN

C PROGRAM GENERATES THE THICKNESS

C ELSE

C USER ENTERS THE THICKNESS

C

READ (NR,100) STATUS

IF (STATUS(1:4).EQ.'STOP'.OR.STATUS(1:4).EQ.'stop') STOP

C

Page 12: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C THICKNESS SETUP

C

IF (STATUS(1:4).EQ.'AUTO'.OR.STATUS(1:4).EQ.'auto') THEN

C

C NDEPTH NUMBER OF THICKNESSES TO BE CALCULATED

C TSTEP THE THICKNESS STEP

C

READ (NR,*) NDEPTH,TSTEP

DO I=1,NDEPTH

DEPTH(I)=I*TSTEP

END DO

WRITE (NW,450) NDEPTH,TSTEP

ELSE

C

C DEPTH THE THICKNESS TO BE CALCULATED

C

READ (NR,*) NDEPTH,(DEPTH(I),I=1,NDEPTH)

WRITE (NW,420) NDEPTH

WRITE (NW,440) (DEPTH(I),I=1,NDEPTH)

END IF

C

C NOUT THE NUMBER OF REFLECTIONS WHOSE INTENSITY TO BE CALCULATED

C IF NOUT = 0, CALCULATES FOR ALL REFLECTIONS

C

READ (NR,*) NOUT

IF (NOUT.EQ.0) THEN

NOUT=NBEAMS

DO I=1,NBEAMS

ID(I)=I

DO J=1,3

Page 13: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

HKLOUT(J,I)=HKL(J,I)

END DO

END DO

GOTO 1000

END IF

C

C HKLOUT(3,I) THE H, K, L INDEX OF THE ith REFLECTION TO BE CALCULATED

C

IF (NOUT.GT.0) THEN

READ (NR,*) ((HKLOUT(J,I),J=1,3),I=1,NOUT)

END IF

DO I=1,NOUT

DO K=1,NBEAMS

DO J=1,3

IF (HKL(J,K).NE.HKLOUT(J,I)) GOTO 900

END DO

ID(I)=K

GOTO 950

900 CONTINUE

END DO

950 CONTINUE

END DO

1000 WRITE (NW,500) NOUT

WRITE (NW,400) ((HKLOUT(J,I),J=1,3),I=1,NOUT)

C

C NRF THE NUMBER OF REFLECTIONS WHOSE STRUCTURE FACTORS ARE TO BE

C ADJUSTED

C HKLSR THE INDEX OF ADJUSTED REFLECTIONS

C TEMP1,TEMP2 THE AMPLITUDE (ANGSTROM**-2) AND PHASE (IN RADIANS) OF

C ADJUSTED STRUCTURE FACTOR

Page 14: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C ABSPR,ABSPI THE ABSORPTION COEFFICIENT RATIO (|Ug'/Ug|) AND PHASE

C DIFFERENCE BETWEEN Ug' AND Ug (IN RADIANS) OF THE

C ADJUSTED ABSORPTION PARAMETER

C

READ (NR,*) NRF

WRITE (NW,520) NRF

IF (NRF.EQ.0) GOTO 1500

DO I=1,NRF

READ (NR,*) (HKLSR(J,I),J=1,3),UGSR(I),UGSI(I),ABSPR(I),ABSPI(I)

WRITE (NW,540) (HKLSR(J,I),J=1,3),UGSR(I),UGSI(I),ABSPR(I),ABSPI(I)

END DO

C

C ABM THE MEAN ABSORPTION

C

1500 READ (NR,*) ABM

WRITE (NW,560) ABM

C

C OPTIONAL CONTROL PARAMETER:

C ABSCTL = 'NO' NO DEFAULT ABSORPTION. IF ZERO DEBYE-WALLER

C FACTOR IS ENTERED, TO AVOID ERROR, ENTER 'NO'

C LISCTL = 'YES' INTENSITY LISTING, DEFAULT NO

C

READ (NR,100) ABSCTL

IF (ABSCTL(1:2).EQ.' ') ABSCTL(1:2)='YE'

C

C * END OF INPUT *

C

VOL=1.0-CELL(4)*CELL(4)-CELL(5)*CELL(5)-CELL(6)*CELL(6)+

* 2.0*CELL(4)*CELL(5)*CELL(6)

VOL=SQRT(VOL)*CELL(1)*CELL(2)*CELL(3)

Page 15: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

RATIO=(1+1.9569341E-03*KV)/(PI*VOL)

C

C GET U(000) AND K HERE

C

DO I=1,NTYPE

AF(I)=0.0

DO J=1,4

AF(I)=AF(I)+AX(J,I)*BX(J,I)

END DO

AF(I)=0.023933754*AF(I)

END DO

U0=0.0

DO I=1,NATOMS

J=ITYPE(I)

U0=U0+AF(J)

END DO

U0=U0*RATIO

WRITE (NW,580) U0

BIGK=SQRT(1.0/(WAVEL*WAVEL)+U0)

C

C GET U(G,H) MATRIX HERE

C

WRITE (NW,460)

DO I=2,NBEAMS+NPEAMS

L=I-1

IF (L.GT.NBEAMS) L=NBEAMS

DO J=1,L,1

DO K=1,3

GH(K)=HKL(K,I)-HKL(K,J)

END DO

Page 16: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

S2=0.25*SUM(GMXR,GH,GH)

SATM=DSQRT(S2)

IF (S2.LT.DELTA) THEN

WRITE(NW,*) 'ERROR!, SAME REFLECTION IS ENTERED TWICE FOR',I,J

STOP

END IF

N=0

DO K=1,NRF

IF (GH(1).EQ.HKLSR(1,K).AND.GH(2).EQ.HKLSR(2,K).AND.

* GH(3).EQ.HKLSR(3,K)) THEN

SFRE=UGSR(K)*COS(UGSI(K))

SFIM=UGSR(K)*SIN(UGSI(K))

AFRE=ABSPR(K)*UGSR(K)*COS(ABSPI(I))

AFIM=ABSPR(K)*UGSR(K)*SIN(ABSPI(I))

GOTO 1700

END IF

IF (GH(1).EQ.-HKLSR(1,K).AND.GH(2).EQ.-HKLSR(2,K).AND.

* GH(3).EQ.-HKLSR(3,K)) THEN

SFRE=UGSR(K)*COS(UGSI(I))

SFIM=-UGSI(K)*SIN(UGSI(I))

AFRE=ABSPR(K)*UGSR(K)*COS(ABSPI(I))

AFIM=-ABSPR(K)*UGSR(K)*SIN(ABSPI(I))

GOTO 1700

END IF

END DO

DO K=1,NTYPE

AF(K)=CX(K)

DO M=1,4

AF(K)=AF(K)+AX(M,K)*EXP(-BX(M,K)*S2)

END DO

Page 17: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

AF(K)=0.023933754*(ZT(K)-AF(K))/S2

END DO

SFRE=0.0

SFIM=0.0

AFRE=0.0

AFIM=0.0

DO M=1,NATOMS

TEMP=TWOPI*(GH(1)*XP(1,M)+GH(2)*XP(2,M)+GH(3)*XP(3,M))

CN=DCOS(TEMP)

SN=DSIN(TEMP)

TEMP=EXP(-DW(M)*S2)

SFRE=SFRE+CN*AF(ITYPE(M))*TEMP

SFIM=SFIM+SN*AF(ITYPE(M))*TEMP

IF (ABSCTL(1:2).EQ.'YE'.AND.I.LE.NBEAMS) THEN

C

C CALL ATOM SUBROUTINE FOR CALCULATION OF ABSORPTION POTENTIAL

C

ELNAME(1:2)=LABEL(ITYPE(M))(1:2)

MATM=DW(M)

CALL ATOM(ELNAME,MATM,SATM,KVATM,FEATM,FAATM,STATM)

IF (STATM.LT.0.0) THEN

WRITE (NW,600) LABEL(ITYPE(M)),GH

END IF

AFRE=AFRE+CN*FAATM*TEMP

AFIM=AFIM+SN*FAATM*TEMP

END IF

END DO

SFRE=SFRE*RATIO

SFIM=SFIM*RATIO

AFRE=AFRE*RATIO

Page 18: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

AFIM=AFIM*RATIO

1700 UGHR(I,J)=SFRE-AFIM

UGHI(I,J)=SFIM+AFRE

UGHR(J,I)=SFRE+AFIM

UGHI(J,I)=-SFIM+AFRE

C

C STRUCTURE FACTOR LISTING HERE

C

IF (J.EQ.1) THEN

TEMP1=SFRE

TEMP2=SFIM

TEMP1=SQRT(TEMP1*TEMP1+TEMP2*TEMP2)

TEMP2=180.0*ASIN(TEMP2/TEMP1)/PI

IF (SFRE.LT.0) TEMP2=SIGN(180.0-ABS(TEMP2),TEMP2)

SFRE=TEMP1

SFIM=TEMP2

TEMP1=AFRE

TEMP2=AFIM

TEMP1=SQRT(TEMP1*TEMP1+TEMP2*TEMP2)

IF (TEMP1.GT.DELTA) THEN

TEMP2=180.0*ASIN(TEMP2/TEMP1)/PI

IF (AFRE.LT.0) TEMP2=SIGN(180.0-ABS(TEMP2),TEMP2)

ELSE

TEMP2=0.0

END IF

WRITE (NW,480) I,J,(IFIX(GH(M)),M=1,3),SFRE,SFIM,TEMP1,TEMP2

END IF

END DO

END DO

OPEN (UNIT=7,FILE='BLOCH.TMP',STATUS='NEW',FORM='UNFORMATTED')

Page 19: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

DO J=1,NBEAMS

WRITE (7) (UGHR(I,J),UGHI(I,J),I=1,NBEAMS)

END DO

CLOSE (UNIT=7)

C

C SET UP BEAM DIRECTION HERE

C

IF (NX.GT.1) THEN

DO I=1,3

TILTX(I)=(TILT0(2,I)-TILT0(1,I))/FLOAT(NX-1)

END DO

END IF

IF (NY.GT.1) THEN

DO I=1,3

TILTY(I)=(TILT0(3,I)-TILT0(1,I))/FLOAT(NY-1)

END DO

END IF

I1=0

DO J=1,NY

DO I=1,NX

I1=I1+1

NET(1,I1)=I-1

NET(2,I1)=J-1

END DO

END DO

NTILT=I1

C

C DO LOOP FOR CBED

C

DO I1=1,NTILT

Page 20: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

DO I=1,3

TILT(I)=NET(1,I1)*TILTX(I)+NET(2,I1)*TILTY(I)+TILT0(1,I)

END DO

IF (I1.GT.1) THEN

OPEN (UNIT=7,FILE='BLOCH.TMP',FORM='UNFORMATTED',STATUS='OLD')

DO J=1,NBEAMS

READ (7) (UGHR(I,J),UGHI(I,J),I=1,NBEAMS)

END DO

CLOSE (UNIT=7)

END IF

UGHR(1,1)=0.0

UGHI(1,1)=ABM*U0

C

C EXCITATION ERROR

C

TEMP1=SUM(GMXR,TILT,TILT)

BIGKZ=SQRT(BIGK*BIGK-TEMP1)

DO I=2,NBEAMS+NPEAMS

DO J=1,3

GG(J)=HKL(J,I)

GH(J)=2.0*TILT(J)+GG(J)

END DO

SG=SUM(GMXR,GH,GG)

SG=2.0*BIGKZ*(ZONE(1)*GG(1)+ZONE(2)*GG(2)+ZONE(3)*GG(3))-SG

UGHR(I,I)=SG

UGHI(I,I)=ABM*U0

END DO

C

C CALCULATES THE BETHE PERTURBATION POTENTIAL

C

Page 21: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

DO I=1,NBEAMS

DO J=1,I-1,1

TEMP1=0.0

TEMP2=0.0

DO K=NBEAMS+1,NBEAMS+NPEAMS

TEMP1=TEMP1+(UGHR(I,K)*UGHR(K,J)-UGHI(I,K)*UGHI(K,J))/UGHR(K,K)

TEMP2=TEMP2+(UGHR(I,K)*UGHI(K,J)+UGHI(I,K)*UGHR(K,J))/UGHR(K,K)

END DO

UGHR(I,J)=UGHR(I,J)-TEMP1

UGHI(I,J)=UGHI(I,J)-TEMP2

UGHR(J,I)=UGHR(J,I)-TEMP1

UGHI(J,I)=UGHI(J,I)+TEMP2

END DO

END DO

DO I=1,NBEAMS

TEMP1=0.0

DO K=NBEAMS+1,NBEAMS+NPEAMS

TEMP1=TEMP1+(UGHR(I,K)**2+UGHI(I,K)**2)/UGHR(K,K)

END DO

UGHR(I,I)=UGHR(I,I)-TEMP1

END DO

CALL EISPACK(NM,NBEAMS,UGHR,UGHI,VR,VI,CCR,CCI,IERR)

IF (IERR.NE.0) THEN

WRITE (NW,*) 'EISPACK FAILS'

STOP

END IF

C

C OBTAIN THE FIRST COLUMN OF C-INVERSE MATRIX

C

DO J=1,NBEAMS

Page 22: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

DO I=1,NBEAMS

CVT(I,J)=CMPLX(CCR(I,J),CCI(I,J))

END DO

END DO

CALL INVERSE(NM,NBEAMS,CVT,CINV,IERR)

IF (IERR.EQ.0) THEN

WRITE (NW,*) 'INVERSE FAILS'

STOP

END IF

C

C CALCULATE THE BEAM INTENSITY AND OUTPUT

C

DO I=1,NDEPTH

DO M=1,NOUT

J=ID(M)

SFRE=0.0

SFIM=0.0

DO K=1,NBEAMS

C1=CMPLX(CCR(J,K),CCI(J,K))

C BIGKZ SHOULD BE NEGATIVE (ALONG NEGATIVE SURFACE NORMAL)

TEMP=-PI*VR(K)*DEPTH(I)/BIGKZ

CN1=DCOS(TEMP)

SN1=DSIN(TEMP)

C2=CMPLX(CN1,SN1)

TEMP1=PI*VI(K)*DEPTH(I)/BIGKZ

DECAY=EXP(-TEMP1)

C1=C1*C2*CINV(K)*DECAY

SFRE=SFRE+REAL(C1)

SFIM=SFIM+AIMAG(C1)

END DO

Page 23: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

IPOS=(I1-1)*NDEPTH*NOUT+(I-1)*NOUT+M

BINT(IPOS)=SFRE*SFRE+SFIM*SFIM

END DO

END DO

END DO

C

C OUPUT INTENSITY

C

NP=NTILT*NDEPTH*NOUT+4

BINT(NP-3)=NOUT

BINT(NP-2)=NDEPTH

BINT(NP-1)=NX

BINT(NP)=NY

WRITE (IW) NP,(BINT(J),J=1,NP)

END

SUBROUTINE INVERSE(NM,N,A,B,IERR)

C

C TO CALCULATE THE FIRST ROW OF C-INVERSE BY GAUSSIAN ELIMINATION

C AND BACK SUBSTITUTION

C BY J.M. ZUO OCT. 1987

C

COMPLEX A(NM,N),T,ZERO,B(N)

INTEGER IPVT(100),KP1,JPVT,IERR,NM1

IERR=100

ZERO=CMPLX(0.0,0.0)

IF (N.EQ.1) GOTO 35

AMX=0.0

C

C PIVOTING FOR THE FIRST ROW

Page 24: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

C

DO 5 J=1,N

IF (CABS(A(1,J)).GT.AMX) THEN

AMX=CABS(A(1,J))

JPVT=J

ELSE

END IF

5 CONTINUE

DO 10 I=1,N

T=A(I,JPVT)

A(I,JPVT)=A(I,N)

A(I,N)=T

10 CONTINUE

C

C INTERCHANGE FIRT ROW AND LAST ROW

C

DO 12 I=1,N

T=A(1,I)

A(1,I)=A(N,I)

A(N,I)=T

12 CONTINUE

C

C GAUSSIAN ELIMINATION WITH PARTIAL PIVOTING

C

NM1=N-1

DO 35 K=1,NM1

KP1=K+1

M=K

IF (KP1.EQ.NM1.OR.K.EQ.NM1) THEN

DO 15 I=KP1,NM1

Page 25: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

IF(CABS(A(I,K)).GT.CABS(A(M,K))) M=I

15 CONTINUE

ENDIF

IPVT(K)=M

T=A(M,K)

A(M,K)=A(K,K)

A(K,K)=T

IF (CABS(T).LE.1.0E-07) GOTO 35

DO 20 I=KP1,N

A(I,K)=-A(I,K)/T

20 CONTINUE

DO 30 J=KP1,N

T=A(M,J)

A(M,J)=A(K,J)

A(K,J)=T

IF (T.EQ.ZERO) GOTO 30

DO 25 I=KP1,N

A(I,J)=A(I,J)+A(I,K)*T

25 CONTINUE

30 CONTINUE

35 CONTINUE

IF (CABS(A(N,N)).LE.1.0E-07) IERR=0

C

C BACK SUBSTITUTION TO GET X

C

B(N)=1.0/A(N,N)

DO 50 KB=2,N

K=N-KB+1

KP1=K+1

B(K)=ZERO

Page 26: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

DO 40 J=KP1,N

40 B(K)=B(K)-A(K,J)*B(J)

B(K)=B(K)/A(K,K)

50 CONTINUE

T=B(JPVT)

B(JPVT)=B(N)

B(N)=T

RETURN

END

SUBROUTINE EISPACK(NM,N,AR,AI,WR,WI,VR,VI,IERR)

C

C EIGENVALUES AND EIGENVECTORS OF A COMPLEX GENERAL MATRIX

C CALLING EISPACK SUBROUTINE (B. T. SMITH, LECTURE NOTES IN COMPUTER

C SCIENCE, VOL 6, SPRINGER-VERLAG 1976)

C SUBROUTINES CBAL, CORTH, COMQR2, CBABK2 AND RELATED SUBROUTINES

C ARE COPIED FROM [email protected]

C

C NM ROW DIMENSION OF THW TWO-DIMENSIONAL MATRIX, MAXIMUM SET AT 300

C N ORDER OF THE MATRIX

C AR,AI REAL AND IMAGINARY PART OF THE MATRIX TO BE DIAGONALIZED

C AR,AI DESTROYED AFTER THE CALL

C WR,WI RETURNED REAL AND IMAGINARY PART OF THE EIGENVALUES

C VR,VI RETURNED REAL AND IMAGINARY PART OF THE EIGENVECTOR MATRIX

C IERR ERROR FLAG, 0 SUCCESS, I HAS PROBLEM WITH ITH EIGENVALUES

C

INTEGER NM,N,IS1,IS2

REAL AR(NM,N),AI(NM,N),WR(N),WI(N),VR(NM,N),VI(NM,N),FV1(300)

REAL FV2(300),FV3(300)

C

Page 27: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

CALL CBAL(NM,N,AR,AI,IS1,IS2,FV1)

CALL CORTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)

CALL COMQR2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,VR,VI,IERR)

IF (IERR.NE.0) RETURN

CALL CBABK2(NM,N,IS1,IS2,FV1,N,VR,VI)

RETURN

END

c

c example input data

c

A TEST DATA

200.0

0 1 2

0.0 0.0 0.0

0.0 0.0 0.0

0.0 0.0 0.0

1 1

6.08112 6.08112 6.08112 90.0 90.0 90.0

8 2

ZN

0 14.0743 3.2655 7.0318 0.2333 5.1652 10.3163 2.4100 58.7097 1.3041

TE

0 19.9644 4.81742 19.0138 0.420885 6.14487 28.5284 2.5239 70.8403 4.3520

1 0.0 0.0 0.0 0.0

1 0.0 0.50 0.50 0.0

1 0.50 0.0 0.50 0.0

1 0.50 0.50 0.0 0.0

2 0.25 0.25 0.25 0.0

2 0.25 0.75 0.75 0.0

2 0.75 0.25 0.75 0.0

Page 28: cbed.matse.illinois.educbed.matse.illinois.edu/download/TCBED.docx · Web view* 5) Z AXIS IS ALONG THE ZONE AXIS DIRECTION, Z=0 FOR ENTRANCE * * SURFACE AND Z=-t FOR EXIT SURFACE

2 0.75 0.75 0.25 0.0

AUTO

2 0 0

0 4 -2

1 -1 1

1 8.0

23

AUTO

500 2.15

4

0 0 0, 2 0 0, -2 0 0, 0 4 -2

0

0.0

NO


Recommended