- INPUT STRUCTURE
- Choice of potential
- Description of accepted keywords.
- NLAYER
- MIXED
- LATTICE
- T0
- EFILE
- CFILE
- ENERGY LOSS
- NBIN
- DEDX WEIGHTED
- DEDX UNWEIGHTED
- ENERGY DEPENDENT STOPPING
- DEDX VALENCE
- ELCORE
- ZDIST GAUSS
- ZDIST UNIFORM
- ZDIST EXPON
- CROSS SECTION
- BEAM DIVERGENCE
- BEAMSPOT
- COLLIMATE
- INTERFACE
- THICKNESS
- CURVATURE
- NSEED
- NTRACKS
- NREPEAT
- ANGLES
- ANGLES_P
- FLUX
- VFINAL
- NCHAN
- EFINAL
- XYOUT
- SCORE
- IMPURITY
- EXITCOORD
- STARTCOORD
- EOI
- example of an input file GaP.inp

- Launching Flux7

Input of FLUX7 consists of records, consisting of a keyword, followed by additional input, if any.

A keyword is a character string, starting at the begin of a new line.

These records may be interspersed with comment lines, starting with the character '#', and empty lines.

Comment lines are not allowed inside a record.

This is not an input option, but is mentioned here for completeness. For a different potential a differently built program must be used.

Three versions of flux are automatically built, each using a different potential: fluxzbl, fluxhf, and fluxmol, for the ZBL, HF (see hf), and Moliere potential respectively. The original name 'flux7', linked to 'fluxzbl', remains the default. The input files for each of these potentials are the same. To choose a different potential, choose a different program file. e.g. 'ini -p fluxhf gaas211'.

This ' -p programname ' option is also available in the scripts fluxgo and makeflx.

The program fluxchk, to check an input file, uses the zbl potential.

```
NLAYER: (1 or 2), number of sublayers
(there may be more than 2 layers, but only 2 kinds)
The sample is supposed to consist of a structure on NLAYER
layers, optionnally repeated several times.
Scematically, if NLAYER=2:
lattice1 || lattice2 || lattice1 || lattice2 ....
The layer thicknesses and possible discontinuities at the
interfaces are specified by keyword INTERFACE, see below.
It is assumed that all layers of each sublattice have the same
thickness, unless option THICKNESS is given.
```

```
Used when the sample contains a mixture of different kinds of atoms
that occupy the same kind of sites, e.g. Si_x Ge_(1-x).
Also useful to create a fraction of vacancies.
This keyword may only be given before LATTICE
Input the following information,
for K=1..NLAYER
{
NLA0(K): Number of constituents in the unmixed host lattice
Less or equal to parameter NLS in the configuration file.
(e.g. 1 for Si, 2 for GaAs)
NLA1(L,K), L=1..NLA0(K): Number of actual constituents for each site.
for L=1..NLA0(K):
{
ATOMFRAC(LL,L,K), (LL=1,NLA1(L,K)) : Atomic fractions.
normalized to 1 for each constituent site.
If the sum is less then 1 the remainder will be treated as
vacancies. A sum > 1 or a negative fraction is illegal.
}
}
Example: Layer 1 is GaAs, layer 2 is In_x Ga_(1-x) As
2
1 1
0.95
1.0
2
2 1
0.15 0.85
1.0
Here layer 1 has 2 constituents each with 1 kind of atom.
the Ga site 0.95 occupancy, i.e. 5% vacancies.
Layer 2 has 2 constituents, the first occupied by 2 kinds of
atoms, (fractions 0.15 and 0.85), the second by
1 kind ("fraction" 1.0).
For a Si_x Ge_(1-x) layer with x=0.15 the input would be:
1
2
0.15 0.85
(1 constituent in original lattice, 2 actual constituents)
```

See also configuration

```
The following information, for K=1..NLAYER
{
NAME(K): Identifier of lattice type and projection, as in file
COMBIN.FIG or COMBI4.FIG.
Layout: <filename>:<identifier>
Default for <filename> is COMBIN.FIG.
Difference between upper and lower case is ignored
Examples: GaAs100
COMBIN.FIG:NACL111
COMBI4.FIG:GAN2113
Some of the choices that are available:
PBF100
PBF110
PBF111
GAAS100 GAAS entries may also be used for Si
GAAS100NS don't use, except for testing
GAAS110
GAAS111
GAAS211R replaces the original GAAS211
BCC100
BCC110
BCC111
FCC100
FCC111
FCC110
NACL100
NACL111
NACL110
SPINEL100
SPINEL110
For an up to date list, use the commands
plotfig COMBIN.FIG:LIST , or
plotfig COMBI4.FIG:LIST
Or look in files COMBI4.FIG and COMBIN.FIG
NL(K) : Number of constituents in host lattice (1 for Si, 2 for GaAs)
(
In the MIXED case, set NL(K) to the sum over L of NLA1(L,K),
see above; and in the following, first specify the data for
the atom type(s) at the site of the first constituent, and
then for the next constituent if any.
Thus, for the example given above NL(1) = 2, NL(2) = 3 ,
Layer 1: L=1 and L=2 correspond to the atoms Ga and As
Layer 2: L=1,2,3 correspond to the atoms In, Ga and As
)
Z1,(Z2(L,K),L=1..NL(K)): Charge numbers Z of ion and lattice atoms.
A1,(A2(L,K),L=1..NL(K)): Mass numbers. [for PbF2:L=1 for Pb,L=2 for F]
(DEBYE(L,K),L=1..NL(K)): Debye temperatures.
TEMP : Temperature of lattice in Kelvin.
Note: if a negative value is input for the Debye temperature
it is considered to be -u1 in Angstrom units. In that case
TEMP is not used.
UA(L,K),L=1..NLC(K) : Lattice constants in Angstrom
the number of lattice constants NLC(K) needed is given in the
file COMBIN.FIG or COMBI4.FIG.
COMBIN.FIG:
for cubic symmetry, input 1 lattice constant UA(K)
hexagonal or tetragonal lattices, 2 constants: UA(K),UC(K)
COMBI4.FIG:
in general 3 lattice constants UA(K), UB(K), UC(K)
Note: UA*UB*UC is the volume of the unit cell
implied by 'APC' (atoms per cell) of COMBI4.FIG.
e.g. for a hexagonal lattice give a, a*sqrt(3)/2, c
Make sure UA,UB,UC are consistent with the
X- Y- Z-units given in COMBI4.FIG.
}
```

Remark. The specification of the sample composition is done by keywords MIXED and LATTICE. There may be 1, 2, 3, or more species of atoms in any one layer of the sample. The order in which these elements appear in the further input and output, is the order specified under keyword LATTICE:

```
Layer 1, site 1, atom kind 1
Layer 1, site 1, atom kind 2
Layer 1, site 2, atom kind 1
Layer 1, site 2, atom kind 2
[ ... similar for layer 2 ...]
Layer 2, site 2, atom kind 2
```

The numbering is from 1 upwards, skipping elements that are absent. Thus for a sample of GaP_(x)As_(1-x) the constituents Ga P As are numbered 1, 2, 3, respectively, not 1, 3, 4. Also in programs that process the flux output (rbsim, show, praak) the same numbering applies.

```
T0 : Initial energy of channeling particle in MeV.
TMIN : Minimum energy of channeling particle in MeV.
Ion history is no longer followed if T < TMIN
```

```
EFILE : file name of file containing initial energy distribution
(ZVAL(L,K),L=1,NL(K),K=1,NLAYER): number of valence electrons
This is an alternative to keyword T0
ZVAL is used to estimate energy dependent stopping power
```

These ZVAL values are not used when the energy dependence is specified via keyword "ENERGY DEPENDENT STOPPING".

When keyword "ENERGY DEPENDENT STOPPING" is given keyword "DEDX VALENCE" is also needed

```
CFILE : file name of file containing initial coordinates.
(This should be a file as prepared by a previous run with
option EXITCOORD)
((ROTi(I,J),I=1,3),J=1,3): rotation matrix
(TRANSi(I), I=1,3): XY translation vector
This rotation and translation are applied to the initial
coordinates of each ion.
The initial coordinates mostly supersede information specified
by T0 and ANGLES. Nevertheless these keywords should also be
given.
```

*optional*

```
LOSS: if LOSS > 0, energy is lost (default, ion beam studies)
if LOSS < 0, energy is gained (emission channeling)
if LOSS = 0, no electronic energy loss
```

*optional*

```
NBIN: Number of bins to use in distributions of NEP, dE, etc.
versus depth. Default: NBIN=100
The energy loss and straggling distributions are
always output. Other distributions, including the flux (!)
are only output when requested.
```

*use if RBS spectra are to be simulated*

*use for transmitted energy distribution*

` One of the keywords DEDX WEIGHTED or DEDX UNWEIGHTED must be given.`

(this keyword may be abbreviated to ENERGY DEPENDENT)

*optional*

```
NSTOP: Number of energy values for which stopping parameters are
given.
ESTOP(I), I=1,NSTOP : those energy values, in MeV.
The energy values should be consecutive, highest energy first.
```

Stopping parameters corresponding to the set of energies specified in array ESTOP (or for a single average energy value if NSTOP = 1) are input under </DEDX VALENCE> and </ELCORE>

In the simulations linear interpolation in energy will takes place for the data supplied under 'DEDX VALENCE' and 'ELCORE'.

```
((DEDXVL(K,M), DEDXVP(K,M)), K=1,NLAYER), M=1,NSTOP)
where DEDXVL : (dE/dx)_valence,local (in eV/Angstrom)
DEDXVP : (dE/dx)_valence,plasma "
```

If the option "ENERGY DEPENDENT STOPPING" is not given, the value of NSTOP = 1 (no energy dependence).

```
for M=1,NSTOP, for K=1,NLAYER, for L=1,NL(K), for I=1,50
ELCORE(I,L,K,M)
50 values for deltaE(b) due to core electrons
for b= 2/50 step 2/50 to 2 Angstrom.
deltaE in eV/atom.
---> If NL(K)=2: 50 values for L=1, then 50 values for L=2.
```

If the option "ENERGY DEPENDENT STOPPING" is not given, the value of NSTOP = 1 (no energy dependence).

*One of the ZDIST keywords is required*

```
ZIMAX : average depth of impurity atoms (top of the gaussian).
ZIFWHM: FWHM of impurity distribution. ( both in Angstrom )
```

```
ZIMAX : Maximum depth.
A uniform impurity distribution is assumed.
```

```
ZIMAX : Maximum depth.
ZIFWHM: Width of the exponential distribution (both in Angstrom).
C(Z) = exp (-Z/ZIFWHM) , Z=[0..ZIMAX]
```

*optional*

```
NCROSS : Number of values of (ECROSS,CROSS) for the impurity
ECROSS(J),CROSS(J), for J=1,NCROSS : Energy (MeV) and cross section
The values of ECROSS must be in ascending order.
if NCROSS=0 : Use no cross section
if NCROSS<0 : Use Rutherford cross section
for K=1,NLAYER
{
for L=1,NL(K)
NCROSS(L), (ECROSS(J),CROSS(J),J=1..NCROSS(L),
}
i.e. the same type of information for the host atoms
with the same options NCROSS=0 and NCROSS < 0.
NL(K) as specified under LATTICE.
```

The input to be given with flux7.7 input option CROSS SECTION now requires one record for the impurity atoms, and one record for each of the host atom types in the same order as specified with the LATTICE option. Here a record means one of the numbers -1 or 0, or a table of energy and cross section values as described in the file input.hlp. (Previously, in flux7.6 and earlier, option CROSS SECTION always required two of such records, one for the impurity atoms, and one for one of the host atoms)

*optional*

```
XSD : Beam standard deviation horizontal (degrees)
YSD : " " " vertical "
ANGH : Angle of horizontal with scan direction
(angle of horizontal with crystal X-Z plane is PHI + ANGH)
default: no angular beam spread
```

*optional*

```
BEAMX, BEAMY: size of the incident beam spot, in Angstrom units
Normally the incident beam spot is taken to be one unit cell.
With this option it may be enlarged to a size BEAMX x BEAMY.
The user should take care to take BEAMX and BEAMY equal to
an integer number of X or Y units.
```

*optional *

```
AMAWBEAM: maximum permitted angle with beam direction (degrees).
This affects quantities for the transmitted beam.
and also the energy loss versus depth (if DEDX UNWEIGHTED is used).
```

*optional*

```
{
ZINTERF(K): DEPTH (ANGSTROM) OF INTERFACE
WINTERF(K): FWHM of spread in interface depth (Angstrom)
((ROTM(I,J,K),I=1,3),J=1,3): rotation matrix
(TRANSL(I,K), I=1,3): XY translation vector
}
for K=1..NLAYER
Notes:
The information pertains to the interface at the END of layer K.
ZINTERF(K) is possibly overruled by keyword THICKNESS, below
```

*optional*

```
NTHICK : number of data that follow
(THICK(N), N=1,NTHICK) : layer thickness in angstrom
Here the layers are counted consecutively, i.e. each
interface increases N by 1.
Note: this option may only be used in conjunction with 'INTERFACE'
but overrules the value of ZINTERF(K) given there.
```

*optional*

```
CURPLANE: specifies a plane perpendicular to the cylinder axis.
by giving angle phi of intersection with the xy plane
(CURRADIUS(K), K=1,NLAYER): radius of curvature (Angstrom)
```

*optional*

```
ISEED : arbitrary integer for random number generator.
default value 0: program selects NSEED.
```

` NTRX : Number of tracks to follow.`

*optional*

```
NRUN : Number of runs with NTRX tracks.
(In order to estimate uncertainties the whole calculations
may be split up in a number of runs).
default value: NRUN=1
```

```
NANG : Number of incident angles
ANG(1,K),ANG(2,K), FOR K=1,NANG : THETA and PHI in degrees.
If PHI>360 is given, the program will select a random PHI for
every track.
If THETA>360 is given, the program will simulate a random sample,
by making a random step in the xy-plane after every z-step.
(The same effect might be obtained by choosing a large value for
the vibration amplitude).
```

```
NANG : Number of incident angles
THETA0(K), PHI0(K), TILT(K), FOR K=1,NANG : all in degrees.
This is an alternative to keyword 'ANGLES'.
The ion beam is first tilted by an angle THETA0 away from the axis,
in the plane defined by PHI0, and subsequently tilted by an angle
TILT away from the plane defined by PHI0.
Thus the plane through the ion beam and the direction
(THETA0, PHI0) is perpendicular to the plane defined by PHI0.
```

*optional*

```
NF: flux distribution is accumulated in a NF*NF array
The following only if NLAYER > 1 :
LFLX: layer number for which flux distribution is accumulated.
```

*optional*

```
NV: final velocity vector distribution accumulated in NV*NV array
ANGPMDG: angular range at exit of sample
```

*optional*

```
CRITXDG: Critical angle (x component)
CRITYDG: Critical angle (y component)
These values are only used to calculate the number of
channeled particles as a function of depth, i.e.
particles within the angular range specified.
Needless to say this is not a good criterion for
'channeling' (should be based on transverse kinetic +
*potential* energy).
```

*optional*

```
TFMIN, TFMAX: (MeV) min and max of range of final energy,
used in energy distribution of exiting ions
```

*optional*

```
IXYOUT: XY coordinates are output every IXYOUT collisions
when option XYOUT is selected.
Note: with this option the output is excessively large
don't use it with more then a few hundred tracks
```

*optional*

```
output the effective values of the contributions of the core
electrons and the valence electrons as a function of depth
```

*only needed if the file is used as input for YIMP*

```
A,DEBYE: Mass number, Debye temperature or -u1(angstrom)
IAUTO: Flag, determining which impurity sites to use.
```

*optional*

```
output the values of x,y (Angstrom) px, py (direction cosines)
and final energy (MeV) at the end of each track
```

*optional*

```
output the values of x,y (Angstrom) px, py (direction cosines)
and final energy (MeV) at the beginning of each track.
```

*optional*

` Input ends with either this keyword, or with end of file.`

```
NLayer
2
LATTICE
GAAS110
2
2, 31 16.6
4.0026, 70 35
505 505
295
5.451
GAAS110
2
2, 31 15
4.0026, 70 31
505 505
295
5.451
T0
1.2 0.1
DEDX WEIGHTED
DEDX VALENCE
5 5
5 5
ELCORE
2952.34425 1800.18715 1271.69475 996.56024 815.33825
677.07929 565.96217 475.84281 402.99485 344.34768
297.22641 259.23518 228.42793 203.20736 182.31085
164.75638 149.78680 136.83590 125.48489 115.38506
106.32874 98.12903 90.65195 83.79762 77.49045
71.66814 66.28406 61.29951 56.68076 52.40061
48.43780 44.75896 41.35486 38.20475 35.28573
32.58782 30.09162 27.78803 25.65800 23.69152
21.87606 20.20241 18.65532 17.22861 15.91469
14.70160 13.58479 12.55414 11.60375 10.72825
1553.76140 1149.28762 891.97571 686.26399 516.97646
381.56348 276.82621 197.93006 139.81670 97.76732
67.77909 46.64987 31.90752 21.70739 14.69968
9.91410 6.66284 4.46380 2.98231 1.98757
1.32169 0.87713 0.58105 0.38428 0.25376
0.16735 0.11022 0.07250 0.04765 0.03128
0.02051 0.01344 0.00880 0.00576 0.00376
0.00246 0.00161 0.00105 0.00068 0.00044
0.00029 0.00019 0.00012 0.00008 0.00005
0.00003 0.00002 0.00001 0.00001 0.00001
2952.34425 1800.18715 1271.69475 996.56024 815.33825
677.07929 565.96217 475.84281 402.99485 344.34768
297.22641 259.23518 228.42793 203.20736 182.31085
164.75638 149.78680 136.83590 125.48489 115.38506
106.32874 98.12903 90.65195 83.79762 77.49045
71.66814 66.28406 61.29951 56.68076 52.40061
48.43780 44.75896 41.35486 38.20475 35.28573
32.58782 30.09162 27.78803 25.65800 23.69152
21.87606 20.20241 18.65532 17.22861 15.91469
14.70160 13.58479 12.55414 11.60375 10.72825
1553.76140 1149.28762 891.97571 686.26399 516.97646
381.56348 276.82621 197.93006 139.81670 97.76732
67.77909 46.64987 31.90752 21.70739 14.69968
9.91410 6.66284 4.46380 2.98231 1.98757
1.32169 0.87713 0.58105 0.38428 0.25376
0.16735 0.11022 0.07250 0.04765 0.03128
0.02051 0.01344 0.00880 0.00576 0.00376
0.00246 0.00161 0.00105 0.00068 0.00044
0.00029 0.00019 0.00012 0.00008 0.00005
0.00003 0.00002 0.00001 0.00001 0.00001
ZDIST UNIFORM
3946
INTERFACE
477.950 0
1 0 0
0 1 -0.0028
0 +0.0028 1
0.0 0.0 0.0
477.950 0
1 0 0
0 1 +0.0028
0 -0.0028 1
0.0 0.0 0.0
BEAM DIVERGENCE
0.01 0.01 0.0
NTRACKS
20000
NBIN
256
ANGLES
11
5.51 -3.47
5.506 -2.78
5.504 -2.086
5.502 -1.391
5.5 -0.696
5.5 0
5.5 0.696
5.502 1.391
5.504 2.086
5.506 2.78
5.51 3.47
EOI
```

The basic way to start up Flux is to prepare a file name "`batflux.ini`

" see "batflux.ini" in flux7. This a rather roundabout way that was designed in the days that a Flux simulation might take days, and might be interrupted due to computer troubles. To make life easier a few scripts are supplied, in directory $FLUX/BIN. They are

```
ini , intended to run Flux in the background as a batch job
makeflx , to run Flux from the terminal
fluxgo , to run Flux from the terminal and send the output through a filter
```

```
Usage: ini [-p program] [-h host] [-t|b|f|c] filename (without extension)
<program> may be flux7, fluxhf, fluxmol, fluxzbl, or fluxchk
<filename> assumes the file <filename>.inp to be present.
The file batflux.ini (see above) will be created,
unless option -c is given, see below
option -t: the same as "-p fluxchk", i.e. test the input
option -b: batch= "true" (this is the default)
option -f: batch= "false"
option -c: continue a previously aborted run of Flux.
From the data in batflux.ini it is found out where to continue
```

Usage: `makeflx [-p program] filename (without extension)`

` Usage: fluxgo [ -p programname] arguments`

exactly 1, 3, or 9 arguments required

` basename=$1`

to filter out two coordinates, from the set `x,y,px,py,T,x0,y0,px0,py0,T0`

(program coordfilter is invoked)

```
xname=$2
yname=$3
```

to sort those coordinates as a distribution f(x,y) (program fxyfilter is invoked)

```
nx=$4
ny=$5
xmin=$6
xmax=$7
ymin=$8
ymax=$9
```