Flux7 is a program that simulates the trajectories of high energy ions in single crystals in a channeling, or near channeling, direction. In the model used, the ion experiences binary collisions at regular spatial intervals. In between, the ion path is considered a straight line. One of the quantities evaluated during the process is the effective flux density across the lattice plane, and this is where the program's name stems from.
The original programs flux, yimp, fityim, rbsim and some other programs in this distribution were developed by Peter Smulders and Dik Boerma, and are described in
P.J.M. Smulders and D.O Boerma
Nucl. Instr. and Meth. B29 (1987) 471
Please refer to this publication (and/or follow-ups, see appendix) when publishing results from any of these programs.
For a more recent description of flux and its capabilities see "Notes from a talk about FLUX" given at the RENIBEL workshop, 2004, see LINK below.
These programs are freely available for non-commercial use. It is understood however that all serious users of this software should keep in "contact" with the authors.
This implies that modifications and extensions will be reported.
We also expect you to send us preprints / reprints of any papers prepared with the use of this software.
And, please, also discuss unsatisfactory results with us.
install :Instructions for installation of the program
input : The input structure. See also the source in FLUXLIB/inp.f, and always run program fluxchk before starting a time consuming simulation.
configuration : description of configuration files COMBIN.FIG and COMBI4.FIG
coord for ways to obtain distributions of coordinates, energy, and other parameters.
faq various topics
plotxy program plotxy : graphics of distributions f(x,y)
rbsim : Help for program rbsim
rbsiminst. hints for installation of rbsim
hf : Some notes about the implementation of the Hartree-Fock potential
news recent developments
bugs known bugs
To download the programs see
Notes from a talk about FLUX given at the RENIBEL workshop, 2004.For any questions or remarks contact
"Peter Smulders" <p.j.m.smulders@home.nl>
The application to emission channeling was implemented by Ulrich Wahl, who also made a streamlined version of program yimp. For information contact:
"Ulrich Wahl" <uwahl@itn.mces.pt> Currently at ITN/CFNUL, Lisbon
The program flux7 can handle multilayer structures where the thickness of the alternating layers is repetitive, or, varies with depth. A requisite is that at most two different lattice structures are involved. If this condition is not fullfilled, two or more invocations of flux7 are necessary, as explained below.
At each interface a transformation is applied to the beam coordinates:
1. a rotation of the velocity vector, specified by a 3 by 3 rotation matrix
2. a translation, specified by delta (x,y,z) in angstrom units
Optionally the coordinates at the end of each ion's journey are recorded. The following data are saved:
These coordinates are relative to the position an ion would have that initially entered at x=0 and y=0 and travelled in a straight line along the beam direction.
Here the value is 0 for an ion that exits in the beam direction. (I.e. if the ion beam direction makes an angle with the crystal main axis an offset is applied to px and py as maintained in the program)
In the output these numbers are multiplied by a constant factor and possibly an offset is subtracted, as indicated in the output file.
These coordinates can be used as initial coordinates for a subsequent run of FLUX7. Thus, for the general case, of more than 2 different layers, it is possible to break up the calculation in parts, and feed the exit coordinates of one run as initial coordinates into the next run.
Just supply orientation of curvature axis and radius of curvature, see FLUXLIB/inp.f
A new feature in flux7.7 is the possibility to have a mixture of different atoms occupying equivalent sites, e.g. Si_(1-x)Ge_x. In a diatomic crystal, such as GaAs, each of the constituents may consist of a mixture of two or more elements. There may also be ai fraction of empty sites (vacancies) for each of the constituents.
New in flux7.72 is an option to use energy dependent stopping parameters. Up till this version this dependence was neglected and the best a user could do was to supply parameters for an average energy. Now, following an idea by Louis Selen, there is an option to obtain both the impact parameter dependent energy loss as the stopping due to valence electrons by means of interpolation from a set of energies and corresponding sets of stopping parameters.
For details, see "ENERGY DEPENDENT STOPPING" in input
Some parts of this distribution were 'borrowed' left and right.
The K-Bessel function routine BESK was adapted from a subroutine supplied by the "Interchange Users Group" (author unknown).
The integration routine ROMBERG was written by Hans de Jong.
The energy loss subroutines in RBSIM are due to Ziegler and Biersack.
The least square routines in program FITYIM are due to C.L.Lawson and R.J.Hanson, 'SOLVING LEAST SQUARES PROBLEMS', Prentice-Hall, 1974
The random number generator RANMAR is due to G. Marsaglia and A. Zaman, http://cmd.inp.nsk.su/old/cmd2/manuals/cernlib/shortwrups/node242.html
The graphics output of various programs is done by the PGPLOT package. PGPLOT is a Fortran subroutine package for drawing graphs on a variety of display devices by T. J. Pearson, http://www.astro.caltech.edu/~tjp/pgplot/. The source is available at ftp://ftp.astro.caltech.edu/pub/pgplot/.
This FLUX distribution contains a modified PostScript Driver for PGPLOT. This driver enables the use of PosScript fonts in output files. If you want to use this, you should patch the PGPLOT graphics package. For details see "PostScript Fonts in PGPLOT" in psdriver
In order to compile PGPLOT I had to adjust the pgplot makefile a bit, see file pgpatchfile in the directory FLUX7/PGPLOT
flux7.f FLUX
FLUX7.COM include file: common blocks for FLUX7, YIMP,
dettmann.f Dettmann & Robinson model for impact parameter
dependent stopping
dedx.f estimate of electronic stopping parameters
makemake prepare Makefiles for specified configuration
Makefile makes flux7 and auxiliary programs
HTML directory containing help files in html format
HELP directory containing help files in text format
POD directory containing source files for the above
FLUXLIB directory containing a library of subroutines, see below
FILE.LOC This file, in directory FLUXLIB, contains the locations
of some data files, and may be adapted to your site.
MISC directory containing auxiliary programs
FITYIM directory containing program FITYIM
INPUT directory: sample input and output
PLOTXY directory: program for plotting functions f(x,y)
The program plotxy has an option to build 2d
distributions from the flux output obtained with option
EXITCOORD.
RBSIM directory: RBS / channeling energy spectra
TAB This directory contains some input files, such as
stopping data (scoef88), a mass table, and file
COMBIN.FIG that defines the configurations for various
lattices in various projections.
CHECK directory: program fluxchk
XTAL directory containing programs to generate projections
of crystals.
YIMP directory containing U.Wahl's program yimp.
A set of subroutines. You don't need all of these, so if you can, make 'libraries' out of this to be presented to the linking loader. Some of these are machine dependent to wit:
f77start.f and/or igetarg.f: get command line arguments
systim.f get current date and time in human readable form used to put timestamps in the output and also .. to seed the random number generator.
program fityim, file fityim.f
sample input files: Mo100.y, Mo1200.exp, fityim.test
test script: fityim.test
directory FITYIM/TESTOUTPUT: output as made by the above
(in earlier distributions this directory was named AUX)
programs praak, yimp7, plotfig3, show
praak: extract close encounter probability from flux output file. Suitable as input for FITYIM.
yimp7: compute close encounter probability for an impurity distribution from flux output file. Suitable as input for FITYIM. This is the original yimp. The embellished version of Ulrich Wahl, called yimpu, is in directory YIMP. For the time being, both versions are maintained. The yimp7 version is probably useful for lattices other then BCC, ZnS, or diamond.
plotfig3: plot the projected lattice for a crystal structure and projection, using COMBIN.FIG as input
show: extract close encounter probability, energy loss, straggling, from flux output file, and plot the data.
track and ztrack: plot a set of ion tracks. track plots the xy projection, ztrack the projection onto a plane through the z axis. Try track.demo
test script: file testscripts, files with extension '.demo'.
sample input: file Mo100.flx (not included, but to be made with flux7 using included file Mo100.inp as input).
directory MISC/TESTOUTPUT: output as made by these programs
In the original flux1 collisons with atoms of only one row were treated as binary collisions, while the surrounding atom rows were treated in the continuum string approximation. In flux3, and later versions, the binary collision treatment is extended to several rows. This strongly diminishes the effect of the surrounding rows, which now, as a rule, are more than 2 angstroms away from the ion path.
The original version did a sloppy job of treating the z coordinate when a translation of the unit cell occured, and has been found to be insufficiently accurate in some cases.
Several small angle approximations have been eliminated. The model is believed to be acceptable for ion velocities with angles as large as 45 degrees with the z-axis.
Many new options
Correlated lattice vibrations are not implemented.
The idea is that you organize all the input and output pertaining to one case, in a separate directory. Before starting you change to this directory. Flux7 expects a file with the name 'batflux.ini', the startup file, in the current directory. This startup file should be a writeable file, as it is modified as the calculation proceeds.
The contents of batflux.ini are:
line 1: name of the inputfile of flux7
line 2: name of the outputfile of flux7 (flxfile)
line 3: name of the text file of flux7 (logfile)
line 4: name of the outputfile of yimp (may be a blank line)
line 5: current angle number (initially 1, updated by flux7)
line 6: current sub-run number (initially 1, updated by flux7)
line 7: the verb NEW or OLD : status of flxfile (updated by flux7)
An empty or absent line 7 means the same as NEW: the flxfile should not yet exist. For OLD, as you already guessed, the flxfile is expected to exist already.
If for some reason a flux7 simulation run was interrupted, it may be continued, by just changing to the proper directory and starting flux7. It will automatically resume were it left off.
The same file, now renamed to yimp.ini, may be used as a startup file for program yimp.
As an alternative, you may start flux7 with the startup file name (now not necessarily 'batflux.ini') as a command-line argument. This option has been tested on Unix systems (HP, Sun, SGI) but may cause problems on other machines. If so, comment out the two relevant lines in batinit.f, directory FLUXLIB.
A script to do the above automatically is provided in directory BIN. This works in Unix only. You then have to prepare only the input file, with extension '.inp', say <name>.inp, and type the command
ini -t <name> to check the input file, or,
ini <name> to run the simulation, with program flux7.
ini -p fluxhf <name> to run the simulation, with program fluxhf.
For further options, see file BIN/ini itself.
A simplified version of this is the script makeflx, with calling sequence 'makeflx <name>' to run the simulation using <name>.inp as input file.
See also the script fluxgo. See further "Launching Flux7" in input
The inputfile of flux is decribed in input, see also the source of subroutine INP.
After preparing the inputfile, and the startup file, run program fluxchk (see below) to check for trivial errors.
The output of FLUX consists of a text file, and a flux file. The flux file contains, for every simulation, a header, the close encounter probability, the energy loss, and the energy straggling as functions of depth, and the flux distribution integrated over depthi, as a function of x and y.
PLOTFIG: shows how the unit-cell is chosen, and how the x- and y-
units are defined
DETTMANN: generates the energy loss contribution of core electrons
as a function of impact parameter.
Input to this program are the electron binding energies
for the various shells.
DEDX: generates values of dE/dx due to valence electrons,
dE/dx (valence,local) and dE/dx (plasma).
FLUXCHK: tests the input file of flux7, without doing the lengthy
simulations. Also calculations the 'random stopping power'
corresponding to the input values of flux7
To make graphs of close encounter probability, energy loss or straggling the program SHOW may be used.
For simulating channeling profiles, several programs are available
1. For the profiles of host atoms one may use program PRAAK. N.B. a better way is to generate an RBS spectrum using the FLUX results as input, and set windows on this spectrum
2. For the profiles of impurity atoms use program YIMP7 or YIMPU The input of YIMP contains impurity lattice sites. To generate all projected lattice sites for a given displacement from substitutional programs XTAL (SI lattice) and FCCXTAL may be used.
The output of praak has the same format as the output of yimp. A little named getyim (source in MISC/getyim.f) may be used to convert it to a form more suitable for graphics programs. As a side effect it produces a file 'pgplot.ps' that visualizes the results of praak or yimp.
To fit experimental channeling profiles, use program FITYIM.
RBS spectra of scattered ions may be generated using RBSIM. RBSIM is not a standalone program but a subroutine package that should be integrated in a general data processing and analysis program.
To visualize individual ion histories, programs 'track' and 'ztrack' are available. To run these enable option XYOUT of flux. The coordinates are then output to the text file of flux, not the 'flux file'.
Besides the output file of flux7, the following input data are asked:
A,DEBYE
[ instead of the DEBYE temperature, one may also specify the
thermal vibration amplitude U1. For this purpose give -U1
instead of +Debye temperature for the parameter DEBYE ].
NSITES,NFAC: (2 integers)
ANGSTR=0,XYUN=1,(R,PHI)=2 (1 integer, called JANG)
IF(JANG.NE.2) X0,Y0,DX,DY,WEIGHT: (5 reals), NSITES times
IF(JANG.EQ.2) X0,Y0,R,PHI,WEIGHT: "
[ The idea is that X0,Y0 specifies a basic site (substitutional or
interstitial), DX,DY the displacement from this site.
Only DX,DY (not X0,Y0) will be multiplied by FACTOR, see below ]
FACTOR: (real), NFAC times
next A,DEBYE etc. give (A,DEBYE) = (0,0) to stop.
YIMP7 generates an ASCII output file that can be used as input for program FITYIM.
Two different ASCII input files are required:
1. An experimental data file, containing one or more records, where each record contains one angular scan, i.e. yield versus angle. The variable angle may be either the polar angle (tilt) or the azimuthal angle with respect to the channeling axis.
2. A simulated data file, containing one or more records, where each record contains an angular scan.
The format of these two files is quite different. The layout of the simulated data file is produced by programs YIMP and PRAAK. When using RBSIM to produce this file some editing will be needed.
Layout of the experimental data file: line 1: NI IVAR V0 VSTEP line 2: notes line3 and further (NI lines): xvar, yield
where:
NI: Number of data points.
IVAR: Flag for the variable coordinate (IVAR=1:THETA, IVAR=2:PHI)
ANGLE(I)=V0 + VSTEP * XVAR(I)
Another difference is the use within FITYIM. The experimental data are read sequentially (therefore put the records in the order you wish to analyse them). The simulated ("theoretical") data records can be accessed randomly, and it is even possible to use a linear combination of two or more of these to fit a given experiment. It is the responsibility of the user to do the bookkeeping, within FITYIM each theoretical data record is addressed by its sequence number in the file.
The program is keyword driven. Some of the keywords are:
Exp : read the next experimental data record.
Th : specify a theory
Ranfrac : do a fit
Graph: save graphic output to the plot file
Cal : change the calibration (that was given in the experimental data record)
Weight: specify the weights used in the fitting procedure
Limit : use a subset of the experimental data
Fix: Fix ratio of theoretical components
Computer simulation of channeling in single crystals.
P.J.M. Smulders and D.O. Boerma, Nucl. Instr. and Meth. B29(1987)471
The relation between depth and energy in channeling experiments.
M.Vos, D.O. Boerma and P.J.M. Smulders,
Nucl. Instr. and Meth. B30(1988) 38
W. Segeth, D.O. Boerma, L. Niesen and P.J.M. Smulders
Internal oxidation of In and Cd impurities in silver
Phys. Rev. B39 (1989) 10725-10735
Thermal stability of a supersaturated solution of Hafnium in
Aluminium.
D.O. Boerma, P.J.M.Smulders, K.G.Prasad, M.M.Cruz, R.M.C. da Silva
and F.Pleiter, Journal of the Less-Common Metals, 145(1988)487
P.J.M. Smulders, D.O. Boerma and M. Shanaan
Lattice site location of Te in GaAs
Nucl. Instr. and Meth. in Phys. Res. B45 (1990) 450-454
P.J.M. Smulders, D.O. Boerma, B. Bech Nielsen and M.L. Swanson
Lattice site location of clustered boron atoms in silicon
Nucl. Instr. and Meth. in Phys. Res B45 (1990) 438-441
W.G. Spanninga, P.J.M. Smulders and L. Niesen
Moessbauer and channeling measurements on buried layers of CoSi2 in Si
Proceedings of XXVI Zakopane School on Physics 1991, eds. J. Stanek and A.T.
Pedziwiatr (World
Scientific, Singapore, 1991) 360-362
P.J.M. Smulders, A. Dygo and D.O. Boerma
Giant focusing peak and potential dependence observed in a transition from axial to
planar channeling in
Si
Nucl. Instr. and Meth. in Phys. Res. B67 (1992) 185-188
W.G. Spanninga, P.J.M. Smulders and L. Niesen
Moessbauer channeling measurements on buried layers of CoSi2 in Si
Hyp. Int. 70 (1992) 927-930
W.G. Spanninga, P.J.M. Smulders and L. Niesen
Moessbauer and channeling measurements on buried layers of CoSi2 in Si
Nucl. Instr. and Meth. in Phys. Res. B63 (1992) 138-140
A. Dygo, P.J.M. Smulders and D.O. Boerma
Simulation analysis of ion channeling spectra: thermal vibrational amplitude in Si
Nucl. Instr. and Meth. in Phys. Res. B64 (1992) 701-705
M. Vos, C. Wu, I.V. Mitchell and P.J.M. Smulders
Channeling of B ions in silicon
Nucl. Instr. and Meth in Phys. Res. B67 (1992) 223-227
J.M.G.J. de Bakker, F. Pleiter and P.J.M. Smulders
Hafnium implanted in iron: I. Lattice location and annealing behaviour
J. Phys.: Condens. Matter 5 (1993) 2171-2180
L. Rebouta, P.J.M. Smulders, D.O. Boerma, F. Agullo-Lopez, M.F. da Silva and J.C.
Soares
Ion-beam channeling yields of host and impurity atoms in LiNbO3: computer
simulations
Phys. Rev. B48 (1993) 3600-3610
A. Dygo, W.N. Lennard, I.V. Mitchell, P.J.M. Smulders
Random spectrum for the channeling-backscattering technique: A rotating axial-dip
study
Nucl. Instr. and Meth. in Phys. Res. B84 (1994) 23-30
A. Dygo, W.N. Lennard, I.V. Mitchel and P.J.M. Smulders
Azimuthally averaged backscattering yield near the <100> axis in Si
Nucl. Instr. and Meth. in Phys. Res. B90 (1994) 161-165
P.J.M. Smulders
The nuclear encounter probability
Nucl. Instr. and Meth. in Phys. Res. B94 (1994) 595-596
P. J. C. King, M. B. H. Breese, P. J. M. Smulders, P. R. Wilshaw, and
G. W. Grime
Observation of a blocking to channeling transition for
MeV protons at stacking faults in silicon.
Phys. Rev. Letters 74 (1995) 411
M.B.H. Breese, P.J.C. King, P.J.M. Smulders, G.W. Grime,
Dechanneling of MeV protons by 60 degree dislocations,
Phys. Rev. B 51(5), pp.2742-2750, 1995
P.J.C. King, M.B.H. Breese, P.R.Wilshaw, P.J.M. Smulders, and
G.W.Grime
Transmission ion channeling images of crystal defects
Nucl. Instr. and Meth. B99 (1995) 419
P.J.C. King, M.B.H. Breese, P.J.M.Smulders, A.J. Wilkinson,
G.R. Booker, E.H.C. Parker, and G.W. Grime
Evidence from ion channeling images for the elastic relaxation
of a Si0.85Ge0.15 layer grown on a patterned Si substrate
Applied Physics Letters 67 (1995) 3566
M.B.H. Breese, P.J.C. King, G.W. Grime, P.J.M. Smulders, L.E.
Seiberling, and M.A. Boshart.
Observation of planar oscillations of Mev protons in silicon
using ion channeling patterns.
Phys. Rev. B 53(13) (1996) 8267
M.B.H. Breese, P.J.C. King, and P.J.M. Smulders
Characterisation of strain in crystal bilayers using ion chan
Phys Rev B54(14) (1996) 9693
M. B. H. Breese and D. G. Dekerckhove and P. J. C. King and G. W.
Grime and P. J. M. Smulders,
Direct observation of lattice strain in Si_{1-x}Ge_x/Si
crystals using planar channeling patterns.
Phys Rev B (1997) {to be published}
M. B. H. Breese, P. J. M. Smulders,
A study of channeling patterns from strained Si_{1-x}Ge_x/Si
bilayers close to <011> axes.
Nucl. Instr. and Meth. B132 (1997) 177
This list is outdated. Applications have been published since by
Mark Breese and co-workers, Louis Selen et. al. (Eindhoven University
of Technology), Anni Seppala and Reeta Salonen (Finland), and Ulrich
Wahl and the K.U. Leuven group.