Added to repository.
This commit is contained in:
167
accel/com/MAKE_E0_LIST.FOR
Normal file
167
accel/com/MAKE_E0_LIST.FOR
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
options /extend_source
|
||||
|
||||
program MAKE_E0_LIST
|
||||
c ====================
|
||||
|
||||
implicit none
|
||||
|
||||
c===============================================================================
|
||||
c Dieses Fortran-Programm erstellt Files 'E0-Intervalls.input_', die durch
|
||||
c Editieren (falls noetig) und Umbenennen in 'E0-Intervalls.input' (ohne
|
||||
c '_' am Ende) als entsprechende Eingabefiles fuer ACCEL verwendet werden
|
||||
c koennen. Der Inhalt dieser Datei umfasst die Definition von Startenergie-
|
||||
c intervallen, fuer die ACCEL-Simulationen durchgefuehrt werden sollen.
|
||||
c
|
||||
c Hierbei geht es um die Bereitstellung der fuer die Anpassung der Austritts-
|
||||
c energie der langsamen MYonen benoetigten Simulationen.
|
||||
c
|
||||
c Der untere Wert des ersten Startenergieintervalles, die Breite des ersten
|
||||
c Intervalles, und die Zunahme der Intervallbreite von einem zum naechsten
|
||||
c Intervall sowie die Anzahl der so zu erstellenden Intervalle werden zunaechst
|
||||
c eingelesen und die entsprechenden Daten in das Ausgabefile geschrieben.
|
||||
c
|
||||
c Um weiter Intervalle mit anderen Intervallbreiten-Incrementen anhaengen zu
|
||||
c koennen, wird dann wiederum die Breite des ersten hinzuzufuegenden Intervalles
|
||||
c sowie das neue Increment und die Anzahl damit anzuhaengender Intervalle
|
||||
c eingelesen. Das wiederholt sich dann so lange, bis eine negative Zahl
|
||||
c eingegeben wird. Dann wird das File geschlossen und das Programm beendet.
|
||||
c
|
||||
c Das File wird in 'ACCEL$READdirectory' erstellt
|
||||
c
|
||||
c Anselm Hofer
|
||||
c===============================================================================
|
||||
|
||||
integer lunOUT
|
||||
parameter (lunOUT = 10)
|
||||
|
||||
integer E0 /0/ ,E0Binwidth /2/ ,BinwidthIncr /0/
|
||||
integer E0_ ,E0Binwidth_ ,BinwidthIncr_
|
||||
integer nBins /20/, nBins_, i, lun, indx /1/, indx_
|
||||
|
||||
character*10 answer
|
||||
|
||||
c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
c Oeffnen des Files:
|
||||
|
||||
open (lunOUT,file='E0-Intervalls.input_',status='new',
|
||||
+ defaultFile='ACCEL$READdirectory')
|
||||
|
||||
write(lunOUT,*) '*==============================================================================='
|
||||
write(lunOUT,*) '* In dieser Datei koennen (aneinandergrenzende) E0-Intervalle fuer ACCEL'
|
||||
write(lunOUT,*) '* vorgegeben werden! Die Intervalle laufen dabei von der Angabe der i. bis'
|
||||
write(lunOUT,*) '* zur Angabe der i+1. Datenzeile. Die DATENzeilen 2 bis n-1 geben also'
|
||||
write(lunOUT,*) '* jeweils das Ende des einen sowie gleichzeitig den Anfang des anderen'
|
||||
write(lunOUT,*) '* Intervalls an.'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* Die E0-Angaben erfolgen in keV-Einheiten!'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* Beispiel:'
|
||||
write(lunOUT,*) '* Die Datenzeilen'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* 0.010'
|
||||
write(lunOUT,*) '* 0.040'
|
||||
write(lunOUT,*) '* 0.100'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* geben zwei E0-Intervalle an: von 10 eV bis 40 eV und von 40 eV bis 100 eV.'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* eine Zeile mit mindestens 5 aufeinanderfolgenden x (''xxxxx'') markiert ge-'
|
||||
write(lunOUT,*) '* gebenenfalls das Ende der Datenzeilen. Nachfolgende Zeilen werden ignoriert.'
|
||||
write(lunOUT,*) '*'
|
||||
write(lunOUT,*) '* Der Inhalt dieser Datei wird mit ''E0InterFromFile = .true.'' in ACCEL.INPUT'
|
||||
write(lunOUT,*) '* aktiviert.'
|
||||
write(lunOUT,*) '*==============================================================================='
|
||||
|
||||
|
||||
1000 format ($,x,A,:' (.LT.0 => finish) [',I4,'] > ')
|
||||
1001 format ($,x,A,:' [',I4,'] > ')
|
||||
|
||||
write(*,*)
|
||||
write(*,*) 'alle Eingaben in eV!'
|
||||
write(*,*)
|
||||
write(*,1001) ' lower E0 ',E0
|
||||
read(*,'(A)') answer
|
||||
if (answer.NE.' ') read(answer,*) E0
|
||||
|
||||
write(lunOUT,'(x,F8.3)') real(E0) / 1000.
|
||||
|
||||
|
||||
c Einlesen und Ausgeben ...:
|
||||
|
||||
10 write(*,*)
|
||||
|
||||
write(*,1000) ' first E0-Binwidth ',E0Binwidth
|
||||
read(*,'(A)') answer
|
||||
if (answer.NE.' ') read(answer,*) E0Binwidth
|
||||
if (E0Binwidth.LE.0) goto 100
|
||||
|
||||
write(*,1000) ' Binwidth-increment ',BinwidthIncr
|
||||
read(*,'(A)') answer
|
||||
if (answer.NE.' ') read(answer,*) BinwidthIncr
|
||||
if (BinwidthIncr.LT.0) goto 100
|
||||
|
||||
write(*,1000) ' number of bins to add ', nBins
|
||||
read(*,'(A)') answer
|
||||
if (answer.NE.' ') read(answer,*) nBins
|
||||
if (nBins.LE.0) goto 100
|
||||
|
||||
E0_ = E0
|
||||
E0Binwidth_ = E0Binwidth
|
||||
BinwidthIncr_ = BinwidthIncr
|
||||
nBins_ = nBins
|
||||
indx_ = indx
|
||||
|
||||
lun = 6
|
||||
write(*,*)
|
||||
write(*,*) ' so, next intervalls would be: (number, lowerE0, upperE0, binWidth)'
|
||||
write(*,*)
|
||||
write(*,2000) indx,E0, E0 + E0BinWidth,E0BinWidth
|
||||
|
||||
2000 format (x,I3,': ',I5,'-',I5, 4x,'(',I4,')')
|
||||
50 do i = 1, nBins
|
||||
indx = indx + 1
|
||||
E0 = E0 + E0BinWidth
|
||||
if (lun.EQ.6) then
|
||||
if (i.NE.nBins) write(*,2000) indx,E0, E0+E0BinWidth+BinwidthIncr,E0BinWidth+BinwidthIncr
|
||||
else
|
||||
write(lun,'(x,F8.3)') real(E0) / 1000.
|
||||
endif
|
||||
E0BinWidth = E0BinWidth + BinwidthIncr
|
||||
enddo
|
||||
|
||||
if (lun.EQ.6) then
|
||||
|
||||
write(*,*)
|
||||
write(*,1001) ' add them to file ? > '
|
||||
read(*,'(A)') answer
|
||||
call str$upcase(answer,answer)
|
||||
|
||||
E0 = E0_
|
||||
E0Binwidth = E0Binwidth_
|
||||
BinwidthIncr = BinwidthIncr_
|
||||
nBins = nBins_
|
||||
indx = indx_
|
||||
|
||||
if (index(answer,'Y').NE.0 .OR. index(answer,'J').NE.0) then
|
||||
lun = lunOUT
|
||||
goto 50
|
||||
else
|
||||
write(*,*) '=> cancel'
|
||||
endif
|
||||
endif
|
||||
|
||||
goto 10
|
||||
|
||||
c Schliessen des Ausgabefiles:
|
||||
|
||||
100 close (lunOUT)
|
||||
|
||||
write(*,*)
|
||||
write(*,*) ' -> created file ''accel$READdirectory:E0-Intervalls.input_'''
|
||||
write(*,*)
|
||||
|
||||
|
||||
END
|
||||
|
||||
|
||||
Reference in New Issue
Block a user