c=============================================================================== c INITIALIZE.INC c=============================================================================== c die Spezifizierungen der Schleifen-Parameter (character*22): par_text(UTarget) = 'U(Target) [kV] : ' par_text(UGuard ) = 'U(Guard) [kV] : ' par_text(UGi1 ) = 'U(Gitter1)[kV] : ' par_text(BTD ) = 'B(TD) [Gauss] : ' par_text(BHelm ) = 'B(Helmh.) [Gauss] : ' par_text(mass ) = 'Masse [keV/c**2]: ' par_text(charge ) = 'Ladung [e] : ' par_text(ener ) = 'Energie [keV] : ' par_text(yPos ) = 'y0 [mm] : ' par_text(zPos ) = 'z0 [mm] : ' par_text(thetAng) = 'theta0 [degree] : ' par_text(phiAng ) = 'phi0 [degree] : ' c die Gebiets-Bezeichnungen (character*40): Gebiet_Text(upToGrid1) = 'in 1. Beschl.Stufe:' Gebiet_Text(upToGrid2) = 'in 2. Beschl.Stufe:' Gebiet_Text(upToHeShield) = 'bis He-Schild:' Gebiet_Text(upToLNShield) = 'bis LN-Schild:' c die Bezeichnungen fuer die moeglichen Teilchenschicksale (character*26): code_text(code_vor_Mappe ) = 'Testort vor Potentialmappe: ' code_text(code_neben_Mappe ) = 'Potentialmappe verlassen: ' code_text(code_hit_grid2 ) = 'auf Gitter 2 aufgeschlagen: ' code_text(code_hit_grid1 ) = 'auf Gitter 1 aufgeschlagen: ' code_text(code_hit_TgtHolder ) = 'Targethalter getroffen: ' code_text(code_OK ) = 'bis jetzt alles ok: ' code_text(code_decay ) = 'zerfallen: ' code_text(code_reflektiert ) = 'reflektiert: ' code_text(code_wand ) = 'aufgeschlagen: ' code_text(code_lost ) = 'verloren (steps>maxsteps): ' code_text(code_dtsmall ) = 'zu oft dt < dtSmall: ' c die Ueberschriften der Tabellen-files (character*9): statName(Nr_S1M2) = 'S1M2 ' c die Extensions der Tabellen-files (character*9): TabExt(Nr_S1M2) = '._S1M2 ' c die Reihenfolge, in welcher die Schleifen der 'Schleifenparameter' par(i,k) c im Hauptprogramm abgearbeitet werden: DATA reihenfolge / + UTarget,UGuard,UGi1, BHelm,BTD, mass,charge, + ener,thetAng,phiAng,yPos,zPos / c====== Initialisierungen fuer die benutzerdefinierbaren Parameter ============ c Das Startgebiet 'Gebiet0' wird indirekt im SUB 'READ_INPUTFILE' via eine der c lokalen Variablen 'Startflaeche' oder 'x0_' initialisiert. c - - - - - - - - - - zufallsverteilte Startparameter - - - - - - - - - - - - - c Energie: DATA random_E0 /.false./ DATA random_energy / 0 / DATA random_E0_equal /.false./ DATA lowerE0 / 0.000 / DATA upperE0 / 0.010 / DATA random_E0_gauss /.false./ DATA sigmaE0 / 0.010 / c Position: DATA random_pos /.false./ DATA random_position / 0 / DATA sigmaPosition / 15. / DATA random_y0z0_equal /.false./ DATA random_r0_equal /.false./ DATA random_y0z0_Gauss /.false./ DATA random_r0_Gauss /.false./ DATA StartBreite / -1. / DATA StartHoehe / -1. / DATA StartRadius / -1. / c Winkel: DATA random_angle /.false./ DATA random_winkel / 0 / DATA random_lambert /.false./ DATA random_gauss /.false./ DATA StartLambertOrd / 1. / DATA sigmaWinkel / 1. / DATA ener_offset / .true. / DATA pos_offset / .true. / DATA angle_offset / .true. / c - - - - - - - - - - Schleifen-Parameter - - - - - - - - - - - - - - - - - - - ! Das Schleifenparameterfeld 'par(i,k)' (1 <= k <= par_Anzahl) ! wird indirekt im SUB 'read_inputFile' ueber die dortigen lokalen ! Variablen '_parameter' initialisiert. (siehe dort). ! Hier wird nur die 'Zufallsschleife' par(i,0) initialisiert. DATA par(1,0) / 1. / DATA par(2,0) / 1. / DATA par(3,0) / 1. / c - - - - - - - - - - Projektile- - - - - - - - - - - - - - - - - - - - - - - - DATA art_Name / 'm+ ', 'm- ', ! character*4 + 'Mu ', 'Mu- ', + 'e+ ', 'e- ', + 'H+ ', 'H ', 'H- ', + 'H2+ ', 'H2 ', 'H2- ', + 'alfa', + 'A11+', 'A12+', 'A21+', 'A31+', 'A32+', + 'N11+', 'N21+', + 'K11+', 'K12+', + 'H2O1', 'H2O2', 'H2O3', 'H2O4', 'H2O5', + 'Hyd1', 'Hyd2', 'Hyd3', 'Hyd4', 'Hyd5', + 'Hyd6', 'Hyd7', 'Hyd8', 'Hyd9' + / c folgende Werte wurden aus bzw. mittels 'HANDBOOK OF CHEMESTRY AND PHYSICS, c 74th edition' und 'PHYSICAL REVIEW D, 50, S.1173-1826 (August 1994)' bestimmt: DATA art_Masse / 105658., 105658., + 106169., 106680., + 510.9991, 510.9991, + 938272.3, 938783.3, 939294.3, + 1877055.6, 1877566.6, 1878077.6, + 3727380.2, + 37.96238E6,37.22371E6,74.44896E6,111.673689E6,111.673178E6, + 13.043273 ,26.087057, + 78.16258E6,78.162070E6, + 16.77623E6,33.55297E6,50.32971E6,67.10644E6,83.88318E6, + 17.71501E6,34.49175E6,51.26849E6,68.04523E6,84.82197E6, + 101.59870E6,118.37544E6,135.15218E6,151.92892E6 + / DATA art_Ladung / +1., -1., + 0., -1., + +1., -1., + +1., 0., -1., + +1., 0., -1., + +2., + +1., +2., +1., +1., +2., + +1., +1., + +1., +2., + +1., +1., +1., +1., +1., + +1., +1., +1., +1., +1., + +1., +1., +1., +1. + / DATA artList / ' ' / DATA artList_defined /.false./ c - - - - - - - - - - Programmsteuerung - - - - - - - - - - - - - - - - - - - - DATA scaleFactor / 1. / DATA UseDecay / .false. / DATA DEBUG / .false. / DATA HVs_from_map / .false. / DATA TestRun / .false. / DATA log_confine / .false. / DATA maxBelowDtSmall / 50 / c - - - - - - - - - - Graphikausgabe- - - - - - - - - - - - - - - - - - - - - - DATA GRAPHICS / .false. / DATA GRAPHICS_Anzahl / 25 / DATA n_postSkript / 1 / DATA imonitor / 2 / c - - - - - - - - - - FileName- - - - - - - - - - - - - - - - - - - - - - - - - DATA filename / 'AC_' / c - - - - - - - - - - Vorgaben fuer das Summary - - - - - - - - - - - - - - - - DATA n_outWhere / 2 / DATA LogFile / .false. / DATA smallLogFile / .false. / DATA statsInSummary / .false. / ! 'statInSummary' wird indirekt im SUB 'read_inputFile' ueber die ! lokalen Variablen 'SUM_*' initialisiert (alle auf .false.) c - - - - - - - - WELCHE FILES sollen erzeugt werden? (ausser .SUM)- - - - - - DATA createTabellen / .false. / ! 'createTabelle' wird indirekt im SUB 'read_inputFile' ueber die ! lokalen Variablen 'TAB_*' initialisiert (alle auf .false.) DATA createPhysTab / .false. / DATA NTP_Misc / .false. / DATA NTP_start / .false. / DATA NTP_stop / .false. / DATA NTP_40mm / .false. / c - - - - - - - - - - Fehlerkontrolle - - - - - - - - - - - - - - - - - - - - - DATA eps_x / 1.e-5 / DATA eps_v / 1.e-5 / DATA log_relativ / .false. / DATA maxStep / 6000 / DATA dtsmall / .001 / c - - - - - - - - - - Programmablauf- - - - - - - - - - - - - - - - - - - - - - DATA n_dtsmall / 0 / DATA n_dtsmall_Max / 0 / DATA dtsmall_counter / 0 / DATA Lost_counter / 0 / DATA Startflaeche / 0 / DATA SchleifenNr / 0 / c Ausgabekanaele (fuer die 'do indx = indx1, indx2 ....' Anweisungen): DATA lun / lunLOG, lunScreen / DATA OneLoop / .false. / DATA OneStartPerLoop / .false. / c fuer Random-Generator: 'seed' soll gross und ungerade sein. -> c nimm den Sinus von secnds, und mache daraus durch Multiplikation mit ent- c sprechender 10er-Potenz eine 8stellige Integer-Zahl. Sollte seed dann c gerade sein, mache es ungerade: help1= abs(sin(secnds(0.))) ! abs(), da sonst log10(sec) zu Fehler fuehrt seed = int(help1* 10.**(8-int(log10(help1)) ) ) if ((seed/2)*2.EQ.seed) seed=seed-1 ! z.B. seed=3 -> seed/2=1, wegen Integer