configuration files

Files COMBIN.FIG and COMBI4.FIG contain information about the lattice and are used by programs flux and yimp. Each projection of each lattice type has its own entry in one of these files. The z-axis in each entry is the channeling axis chosen for the simulation.

COMBIN.FIG contains entries for cubic crystals, or, more general, cases where the atoms may be grouped in equidistant planes perpendicular to the z-axis, including the c-axis of hexagonal or tetragonal lattices.

COMBI4.FIG contains entries where this is not the case, and the z-steps in the simulation are not constant.

COMBIN.FIG was used in flux version flux3 and later, while COMBI4.FIG was used in program flux4. (See L. Rebouta et. al, Phys Rev B48 (1993), 3600) Only in flux7.8 (2004) these two programs are combined, but some differences in the layout of the configuration files remain. The most important one to keep in mind is that in COMBIN.FIG the X- Y- Z-units are specified in terms of the lattice constant, while in COMBI4.FIG they are given in angstroms .This has also repercussions on the input of programs that use one of these files.

Besides these COMBI..FIG files, relevant bits and pieces for the configuration are present in files SYMMETRY.INC, flux7.f, and yimp1.f See "Configuration of GaN [-2113] for FLUX7" for an example.

Warning Users are advised to be very critical of the configuration descriptions supplied with this distribution. No guarantees are given! Things to check:

general format for the config files

 Anything before the header is comment
 header, format (A4,A10,A10): ****NAME      symmetry
                   symmetry may be 'hexagonal', 'tetragonal', or absent
 NLS             : number of atom species in the lattice
 NLC             : number of lattice constants
                   1 implies cubic symmetry,
                   2 for hexagonal or tetragonal, specified in header
                   3 if symmetry not specified
 NLZ             : 0 for flux3, nonzero for flux4
 base planes     : indices of zx and yz planes, 3 * 2 integers
 Nind            : number of xy positions of atom rows to collide with
 MOD x,y,z       : dimension of true primitive cell in x-,y-units
                   MODZ is the number of planes (or z-steps) within one
                   cell
 APC             : atoms per unit cell (NLS integers) 
 NABUR           : number of surrounding rows considered (NLS integers)
 LATTICE         : code for type of (projected) lattice
 
 for N=1 .. NLS{  
 (x,y) * NABUR(N): positions of the surrounding rows in x-,y-units
 }

 if NLZ .ne. 0:
 X-,Y-,Z-unit    : elementary units in ANGSTROM 
                   the flux is projected on an xy unit cell of
                   size X-unit * Y-unit.
                   the Z-unit corresponds to the whole cell
 
 if NLZ = 0:
 X-,Y-unit, UD   : elementary units in terms of lattice constant
                   the flux is projected on an xy unit cell of
                   size X-unit * Y-unit.
                   UD corresponds to the z step in the simulation program
                   i.e. the space between planes.
                   In the non-cubic case this is replaced by a 
                   3 x NLC matrix:
                     X-unit(L), L=1,NLC
                     Y-unit(L), L=1,NLC
                      UD   (L), L=1,NLC
                   where NLC is the number of lattice constants
                   (i.e. 2 for tetragonal or hexagonal)
 
 atom spacings   : spacing along the row in z-units (for each species)
 
 I-atom1 * MODZ  : for each of the MODZ z-positions
                   a 0 if there is no atom of this kind
                   an index in the range 1..Nind if an atom of kind 1
                   is present. This index is a pointer to the
                   corresponding (x,y) coordinates as specified below.
                   If two atoms of the same kind are present at the same
                   z, give index1*Nind + index2
 I-atom2 * MODZ  : same for atom species 2
 I-atom3 * MODZ  : same for atom species 3 
 (x,y) * Nind    : (x,y) coordinates in x-,y-units as referred
                   to by I-atom1, I-atom2 , ...
 
 Only if NLZ .ne. 0
 (z)*(MODZ+1)    : z coordinates for the MODZ planes, in Z-units, ranging
                   from 0 up to (and including) 1

What is new:

1) The extra numbers NLC and NLZ these are also used to flag whether a flux3 of flux4 type record is following.

2) The possibility to have more atoms of the same kind in one plane. This removes the need for 4, 5 or even 7 artificial atom species How this works is most easily explained for the case where we have 10 different sites (NIND=10). Then the entry 356 in array IATOM means we have at this z-position 3 atoms, one at (x,y) position with index 3, one at (x,y) position 5, and one at (x,y) position 6. Of course, 356 = (3*10 + 5)*10 + 6 In general, the same arithmetic is done in base NIND instead of 10. Thus, if NIND=6, the above 3 sites are specified in IATOM by the number (3*6 + 5)* 6 + 6, or 144 The arithmetic may be easily done by hand or by pocket calculator. There is also a program available to do this: comindex

example of a COMBIN.FIG record

 /   <111> STRING IN PbF2 STRUCTURE.
  atom species 1 is Pb, species 2 is F.
  X= <1-10> AXIS,          Y=<11-2> AXIS,          Z=<111> AX
  Z-X PLANE: (11-2),       Y-Z PLANE: (1-10)
  Pb at     (0,1,1),           (1,0.5,5),           (0,0,9)
   F at (0,0,0), (1,0.5,2), (0,1,4), (0,0,6), (1,0.5,8), (0,1
 ****PBF111
 2 1 0
   1,  1,  -2,      1,  -1,  0
    3,   2,   3,  12,
   4,     8,
        9,       9,
       111
    -1,0.5,  1,-0.5,  1,1.5,  -1,1.5,  -1,-0.5,  0,2,  0,-1,
     2,0,    2,1
    -1,0.5,  1,-0.5,  1,1.5,  -1,1.5,  -1,-0.5,  0,2,  0,-1,
     2,0,    2,1
                 0.3535534,  0.4082483, 0.1443376
       12, 6
    0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0
    1, 0, 2, 0, 3, 0, 1, 0, 2, 0, 3, 0
     0,0,  1,0.5,  0,1

To get a list of available configurations, give command "plotfig COMBIN.FIG:LIST"

example of a COMBI4.FIG record

 /   <10-11> STRING IN GaN(Wurtzite) STRUCTURE.
  X= <1-210> AXIS,     Y=<10-10> AXIS,    Z=<10-11> AXIS
  Z-X PLANE: (10-10),  Y-Z PLANE: (1-210)
  GA at (0,0,0),(.333,.666,.5)and N at (0,0,.375),(.333,.666,.875)
 ****GAN10112
 2, 3, 1
   0,   0,   0,        0,  0,  0
  21  1,   1,  14,
   2 2
   4 4
   8100
  -0.5 0.3333, -0.5 0.5,   1.5 0.3333, 1.5 0.5  
  -0.5 0.7084, -0.5 0.875, 1.5 0.7084, 1.5 0.875 
  3.19 3.7825 7.5805   
    1, 1
   23   0  89   0   0  10   0 265   0 331  17   0  20   0
    0   3   0 133 177   0  11   0  14   0   0 397   0  21
 0  0.0000 1  0.0000
 0.5 -0.2917
 0  0.8334 1  0.8334
 0  0.3750 1  0.3750
 0  1.2084 1  1.2084
 0.5  0.3334
 0.5 -0.1250
 0  1.0000 1  1.0000
 0.5  0.7084
 0 -0.1667 1 -0.1667
 0.5  0.5000
 0  0.2084 1  0.2084
 0.5  1.3335
 0.5  0.8751
 0.0000 0.0299 0.0573 0.1758 0.2331 0.3229 0.4414 0.4687
 0.4987 0.5885 0.7344 0.7643 0.7917 0.9102 1.0000

To get a list of available configurations, give command "plotfig COMBI4.FIG:LIST"

Configuration of GaN [-2113] for FLUX7

a detailed example of a configuration for files COMBI4.FIG, SYMMETRY.INC, and yimp1.f

atom rows

First thing to do is obtain the coordinates of atoms in the lattice in an orthogonal coordinate system, with Z-axis along the chosen string direction. For the <-2113> string of GaN this was done with the program gan.f, obtained from Katharina Lorenz, ITN, Lisbon.

From these, derive an XY plot of the atom rows involved, and select a set of atom rows to be used in FLUX. Also determine suitable values of the x- y- and z-units to be used for this projection. As a rule, all atom rows that are within about 2 Angstrom from the path of the ion should be used for binary collisions.

 These are the 28 selected atom rows, obtained from program gan.f
 -  divided by xun=2.7626, yun=2.7177, zun=6.0920 (angstroms)
 -  moved the origin to -0.3333  -0.3125

  n    x       y       z     Ga=1, N=2
  1  0.3333  0.3125  0.0000  1
  2  0.6667  0.3125  0.5000  1
  3  0.6667  0.6875  0.7722  2
  4  0.3333  0.6875  0.2722  2
  5  0.3333 -0.3125  0.5464  2
  6  0.6667 -0.3125  0.0464  2
  7  1.3333  0.1875  0.4093  2
  8  1.3333  0.8125  0.8629  1
  9  0.6667  1.3125  0.2258  1
 10  0.3333  1.3125  0.7258  1
 11 -0.3333  0.8125  0.3629  1
 12 -0.3333  0.1875  0.9093  2
 13 -0.3333 -0.1875  0.6371  1
 14  1.3333 -0.1875  0.1371  1
 15  1.3333  1.1875  0.1351  2
 16 -0.3333  1.1875  0.6351  2
 17  0.3333 -0.6875  0.2742  1
 18  0.6667 -0.6875  0.7742  1
 19  1.6667 -0.1875  0.6371  1
 20  1.6667  0.1875  0.9093  2
 21  1.6667  0.8125  0.3629  1
 22  1.6667  1.1875  0.6351  2
 23  0.6667  1.6875  0.4980  2
 24  0.3333  1.6875  0.9980  2
 25 -0.6667  1.1875  0.1351  2
 26 -0.6667  0.8125  0.8629  1
 27 -0.6667  0.1875  0.4093  2
 28 -0.6667 -0.1875  0.1371  1
 

 Here the first 16 are used for binary collision
 the last 12 are surrounding rows, as illustrated below.
gan2113cell.jpg

config file

This leads to a config file as follows: (the part in between the lines " ----- " to be inserted in COMBI4.FIG)

--------------------------------------------------------------------

 /   <-2113> STRING IN GaN(Wurtzite) STRUCTURE.
  X= <?> AXIS,     Y=<120> AXIS,    Z=<-2113> AXIS
  Z-X PLANE: (?),  Y-Z PLANE: (120)
  Ga at (0.3333,0.3125) and (0.6667,0.3125)
  N  at (0.3333,0.6875) and (0.6667,0.6875)
 ****GAN2113
 2, 3, 1
   0,   0,   0,        0,  0,  0
  16
  2 1 16
  2 2
  6 6
  8200
  0.3333 -0.6875
  0.6667 -0.6875
  1.6667 -0.1875
  1.6667  0.8125
 -0.6667  0.8125
 -0.6667 -0.1875
 
 
  1.6667  0.1875
  1.6667  1.1875
  0.6667  1.6875
  0.3333  1.6875
 -0.6667  1.1875
 -0.6667  0.1875
 
 
  2.7626 2.7177 6.092
  1 1
  1 0  0 14 9 0 11 0 2 0  0 13 10 0 8  0
  0 6 15  0 0 4  0 7 0 5 16  0  0 3 0 12
 
 
  0.3333  0.3125
  0.6667  0.3125
  0.6667  0.6875
  0.3333  0.6875
  0.3333 -0.3125
  0.6667 -0.3125
  1.3333  0.1875
  1.3333  0.8125
  0.6667  1.3125
  0.3333  1.3125
 -0.3333  0.8125
 -0.3333  0.1875
 -0.3333 -0.1875
  1.3333 -0.1875
  1.3333  1.1875
 -0.3333  1.1875
 
 
 0.0000
 0.0464
 0.1351
 0.1371
 0.2258
 0.2722
 0.3629
 0.4093
 0.5000
 0.5464
 0.6351
 0.6371
 0.7258
 0.7722
 0.8629
 0.9093
 1.0000

--------------------------------------------------------------------

The X and Y planes still have to be identified

SYMMETRY.INC

 mapping operations to be put in SYMMETRY.INC:
 (atom rows numbered as above)
           delta_x  delta_y delta_z
 10 --> 1:   0       -1     +0.2742
 17 --> 1:   0       +1     -0.2742
  8 --> 1:  -1       -0.5   +0.1371
 14 --> 1:  -1       +0.5   -0.1371
 26 --> 1:  +1       -0.5   +0.1371
 28 --> 1:  +1       +0.5   -0.1371

as we see, in all cases: delta_z/delta_y = -0.2742

The part in file SYMMETRY.INC looks as follows:

  8200 CONTINUE
 C GAN2113, WURTZITE LATTICE, <-2113> PROJECTION
 
 
       DELZZ= 0.2742*ZUNKL*IYUM
       IF (XX.GE.XUNKL) THEN
         XX = XX -XUNKL
         IF(YY.GE.YUNKL*0.5)THEN
           YY = YY - YUNKL*0.5
           DELZZ= DELZZ + 0.1371*ZUNKL
         ELSE
           YY = YY + YUNKL*0.5
           DELZZ= DELZZ - 0.1371*ZUNKL
         ENDIF
       ENDIF
       GOTO 77
      
 remarks:
 
 
 DELZZ is the z-shift in angstroms
 XUNKL,YUNKL,ZUNKL are the dimensions of the unit cell in angstrom
 
 
 When the program comes here the ion has already been located to a region
 of MODX*XUNKL, MODY*YUNKL
 (in our case MODX=2, MODY=1, defined in comfig file)
 IYUM is non-0 if the ion has been shifted in the Y-direction
 (see bit in flux7.f just before 'GOTO ISWITCH')

 We also need an addition in file flux7.f at the appropriate place,
 as follows:

        ELSE IF ( LATTICE(KL) .EQ. 8200 ) THEN
          ASSIGN 8200 TO ISWITCH

yimp1.f

Finally we have to formulate an entry in yimp1.f. Here the Z-shifts are no longer relevant. We only have to worry about X (since MODX > 1) and not about Y (since MODY = 1).

      IF ( LATTIX .EQ. 8200 ) GOTO 8200

      [ ...... ]

      
  8200 CONTINUE
 C Wurtzite LATTICE, <-2113> PROJECTION
          IF ( JX. GE. NX) THEN
           JX = JX - NX
           IF ( KY .GE. NY/2) THEN
             KY = KY - NY/2
           ELSE
             KY = KY + NY/2
           ENDIF
          ENDIF
       GOTO 777