170 lines
9.9 KiB
Plaintext
170 lines
9.9 KiB
Plaintext
Sep 1998: to create an executable for PC running under WIN95
|
|
using the DIGITAL VISUAL FORTRAN compiler (ed. Aug. 97)
|
|
Insertion of !DEC$REAL:8 (all REAL are REAL*8)
|
|
Conversion of function to double precession
|
|
Conversion of function to integer*4
|
|
Conversion of random number generator from DRAND48()
|
|
to DBLE(RAN(ISEED))
|
|
UNIT 17 (data to tape) disabled
|
|
UNIT 11 (input data) changed to file name EINGABE1.inp
|
|
UNIT 21 (output.data) changed to file name AUSGABE1.out
|
|
Insertion of UNIT 22 (only range data), file name AUSGABE1.rge
|
|
Dec 1998: Introduction of gaussian distributed projectile energies
|
|
new variable RI2 = random number initializer for gaussian energy distribution
|
|
new variable ISEED2 = random number for gaussian energy distribution
|
|
new variable Esig = sigma of the energy distribution
|
|
if Esig=0. then fixed projectile energy
|
|
new variable Epar = projectile energy
|
|
new subroutine ENERGGAUSS = for the gaussian distribution
|
|
new variables in subroutine p1,p2,p3, necessary for calculation of
|
|
the gaussian energy distribution
|
|
Mar 1999: LOGICAL FUNCTION EQUAL inserted. This function is used for comparision
|
|
of REAL*8 variables with 0.
|
|
OUTPUT to files AUSGABE1:
|
|
bug fixed for the output of the CH(i), bug was also present
|
|
in the original and the older version of TRIMSPP*C
|
|
if OUTPUT file exists then program asks for new OUTPUT filename
|
|
all variables are now defined as REAL*8 or INTEGER*4
|
|
for variable conversion from REAL to INTEGER or INTEGER to REAL
|
|
conversion function inserted (IDINT, DFLOTJ)
|
|
use of correct MIN or MAX functions
|
|
data initialization for all variables (like in BHam) but without
|
|
DATA ier/102*0/ give an error in calculation of ions stopped in layer 2 - 3
|
|
Unit 99 for file ausgabe1.err inserted, if and IF... (see below is true
|
|
then a message is included into this file
|
|
IF's inserted - can be found by using find WRITE(99,
|
|
DABS inserted for DLOG and DLOG10 arguments
|
|
Mai 1999: Version h
|
|
for TRIMSP simulations running in batch mode (i.e. to calculate
|
|
a serie of different range profiles using the same target an output
|
|
file FOR33 is created. In this file the following parameters are
|
|
written:
|
|
E0,Esig,NH,IIM,IB,IT,IRPL(1),IRPL(2),IRPL(3),fix0,sigmax
|
|
the FILE open statement is inserted after label 1502
|
|
new variable column(100)*104 and colcount inserted.
|
|
Mai 1999: Version i
|
|
tried to fix bug for variable C2 (in Do 65 loop).
|
|
Sometimes this variable becames smaller then 10-10 (an underflow occurs,
|
|
the variable C2 is NaN, variables S2 and DENS, which are directly calculated
|
|
from C2 are also NaN. If variable C2 is less then 10-10 then C2 is 10-10.
|
|
S2 and DENS are calculated with the resetted value of C2.
|
|
Range file (output to unit 22) slightly changed. Now the midth of a channel
|
|
is calculated and only the number of particles is written to the file
|
|
|
|
Jun 1999: Version j1
|
|
changed calculation of Firsoc screening length according to the IRCU 49 report.
|
|
the Andersen-Ziegler tables (file stopping.dat) are revised,i.e. the coefficients
|
|
from the ICRU 49 report are included for all elements (file stopicru.dat)
|
|
|
|
PROGRAM DATMAK2c: this program creates the input files for TRIMSPP4*.
|
|
with this program one can change the energy,
|
|
the energy distribution, the number of muons, and the
|
|
layer thickness easily. This is for making different
|
|
simulations (i.e. energy scan, sigma scan, particle
|
|
number scan, layer thickness scan). A corresponding
|
|
batch file is created with this program too.
|
|
Nov 1999: Version j1a
|
|
UNIT33: now Etrans, sigmaEtrans, Eback, sigmaEback included
|
|
Bug fixed in line 2084, location of 'write to unit33' changed.
|
|
Dec 1999: Version k
|
|
inclusion of variables
|
|
tryE :how often a random energy is calculated by the random generator
|
|
for large E0 this number should be the same as the number of projectiles nh
|
|
negE :how often a negative energy is calculated by the random generator
|
|
tryE - negE should be nh
|
|
both variables are type integer, both variables included in the output file
|
|
and in the fort33.file
|
|
inclusion of alphasig: one dimensional distribution of the angle of incidence
|
|
if alphasig .NE. 0 THEN a gaussian distribution of alpha will be calculated
|
|
in the subroutine ALPHAGAUSS
|
|
if the calculated angle is < 0 then the absolute value is taken because of
|
|
the options alpha = -1 or alpha = -2 (see file TRVMC95-v4k.txt)
|
|
inclusion of RI3: random seed for the calculation of the gaussian distribution
|
|
of alpha.
|
|
Header line for file for33 included.
|
|
Jan 2000: no new version but
|
|
included energy scaling of particle reflection coefficients after Thomas et al.
|
|
NIM B69 (1992) 427
|
|
the calculated particle reflection coefficients prcoeff are written to the fort.33 file
|
|
prc is calculated if 1st layer consists only one element !
|
|
included constants prc(1) - prc(6)
|
|
Thomas-Fermi reduced energy: epsilon
|
|
output of E0 and Esig now in keV
|
|
Apr 2000: BUG fixed, Var CHM2 removed, i.e. stopping power for energies below 10 keV
|
|
was a little bit overestimated. now version TrimSpP4L
|
|
Prg Datmak4L creates input files.
|
|
Jun 2000: Source code enlarged to simulate implantation profiles in up to 7 layers.
|
|
Each layer can have up to 5 different elements.
|
|
BUG fixed in line 1470,i.e. in calculation of scattering angle for the
|
|
Moliere potential the variable rrr1 was not handled correct. The length of
|
|
line 1470 was too long, RRR1 was read as RRR which has the value 0.
|
|
Due to the fact, that all calculation based on the other interaction potentials
|
|
(Krypton Carbon and ZBL) give more or less the same inplantation profiles, this
|
|
bug has a minor influence to the implantation profile.
|
|
Variables DateTime(8) = Integer array and
|
|
Real_Clock(3) = Character array included for date and time output to file
|
|
Changes for output file to UNIT 33:
|
|
Size of character variable column enlarged from 214 to 246
|
|
Program datmak7a creates input files for this TrimSp release.
|
|
true calculation, i.e. indendent of bin width, of particles stopped
|
|
in layers - see UpTiefe,LowTiefe,number_in_layer(7)
|
|
INTEGER check_layer_flag : IF 1 then calculated implantation profile
|
|
in the 100 depth intervals agrees with
|
|
number of particles stopped in the different layers
|
|
IF 0 not, message will be written in the range file
|
|
UNIT 21 and UNIT22
|
|
Nov 2000: Tanya Riseman
|
|
Starts porting program to Open VMS and DEC UNIX.
|
|
Compile options: f90/list/warn/ext
|
|
Minor problems with continuation characters in wrong column and
|
|
with a few variables undeclared, mostly functions.
|
|
Make code fit on 72 columns, because -extend_source
|
|
does not appear to work on DEC Unix.
|
|
Start changing strings in format and write statments so that
|
|
strings don't straddle continuation character in
|
|
column 6. Straddling can be non-portable!
|
|
Comment out !DEC$REAL:8 because all
|
|
reals are already declared REAL*8. Add implicit none.
|
|
|
|
Jun 2002: Thomas Prokscha PSI
|
|
Stopped porting to f90, use f77 only.
|
|
replaced all non-standard f77 function by standard functions.
|
|
use ranlux random number generator from the CERN library (libmathlib.a must
|
|
be installed) to get rid of machine specific random number generators.
|
|
Add pre-compiler instructions for making different output for the .rge files
|
|
on Windows and Unix.
|
|
|
|
Oct 2002: Thomas Prokscha PSI
|
|
corrected error in the calculation of the Thomas-Fermi reduced energy:
|
|
it was 1/(Z1 Z2 * sqrt( Z1**2/3 + Z2**2/3))
|
|
it must be:
|
|
1/(Z1 Z2 * sqrt( Z1**(2/3) + Z2**(2/3)))
|
|
|
|
Aug 2009: Zaher Salman PSI
|
|
Changed input file reading to non-formatted. This still works
|
|
with old input files, but makes it much easier to create new
|
|
input files without the hassle of formatting.
|
|
Included the source of ranlux for random numbers generation
|
|
into trimsp7l source. No need for cern libraries to be installed.
|
|
|
|
Feb 2013: Zaher Salman PSI
|
|
Cleaned up the code.
|
|
When possible remove loop numbres and use do-enddo instead.
|
|
Using proper fortran line indentation (emacs style).
|
|
Created TimeStamp subroutine to generate time stamp and removed
|
|
original code from main (two places)
|
|
|
|
Mar 2013: Zaher Salman PSI
|
|
Started implementation of a more flexible input file format, with
|
|
flexible number of layer, not limited to max 7.
|
|
|
|
Apr 2013: Zaher Salman PSI
|
|
Implantation into structures up to 100 layers is possible
|
|
Depth profiles with up to 500 points are now possible
|
|
|
|
Note: The .out file contains only the first 7 layers. This is due
|
|
Fortran formatting limitation and is unlikely to changes unless the
|
|
layout of the output files is changed. However, for most purposes
|
|
this does not affect the functionality of the simulation.
|
|
|