Extract the next .out output block into a new subroutine.

This commit is contained in:
2026-06-18 10:29:31 +02:00
parent 6f5be23e67
commit 4bc2697695
+196 -134
View File
@@ -2451,141 +2451,14 @@ C ZT(1,2) is not read for NJ(1)=1 and may be uninitialised.
C 2nd CALL DATE_AND_TIME
C
C How many seconds are needed for the simulation ??
C Write input and beam summary to the main output file.
C
CALL TimeStamp(day_stop,month_stop,year_stop, hour_stop,min_stop
& ,sec_stop,seconds_stop_total)
WRITE(21,*)
WRITE(21,10051)day_stop,month_stop,year_stop, hour_stop,min_stop
& ,sec_stop
WRITE(*,10051)day_stop,month_stop,year_stop, hour_stop,min_stop
& ,sec_stop
10051 FORMAT(1x,' End: ',A2,'.',A4,1x,A4, 1x,A2
& ,':',A2,':',A2)
WRITE(21,*)
WRITE(21,10052)nh,(seconds_stop_total-seconds_start_total)
10052 FORMAT(1x,' Simulation needed for ',I7,' projectiles ',I7,
& ' seconds')
call writeInputSummary(innam,outnam,rgenam,Z1,M1,E0,Esig,
& ALPHA,ALPHASIG,EF,ESB,SHEATH,ERC,NH,RI,RI2,RI3,X0,RD,
& CW,CA,KK0,KK0R,KDEE1,KDEE2,IPOT,IPOTR,IRL,L,DX,RHO,
& CK,NJ,ZT,MT,CO,SBE,ED,BE,CH1,CH2,CH3,CH4,CH5,TI,
& ZARG,VELC,EMX,MAXNL,MAXEL,seconds_start_total)
WRITE(21,1402)innam
1402 FORMAT(//30X,'* INPUT DATA *',5X,A12)
WRITE(21,1404) Z1,M1,E0,Esig,ALPHA,ALPHASIG,EF,ESB,SHEATH,ERC
1404 FORMAT(//,7X,2HZ1,8X,2HM1,10X,2HE0,6X,4HEsig,7X,5HALPHA,7X
& ,8HALPHASIG,7X,2HEF,7X ,3HESB,6X,6HSHEATH,5X,3HERC/2F10.2
& ,1F13.2,7F10.2)
WRITE(21,1406) NH,RI,RI2,RI3,X0,RD,CW,CA,KK0,KK0R,KDEE1,KDEE2,IPOT
& ,IPOTR,IRL
1406 FORMAT(/7X,2HNH,8X,2HRI,5X,3HRI2,5X,3HRI3,11X,2HX0,8X,2HRD,8X,2HCW
& ,8X,2HCA ,7X,3HKK0,3X,4HKK0R,3X,5HKDEE1,2X,5HKDEE2,2X,4HIPOT
& ,3X,5HIPOTR ,3X,3HIRL/I10,3F10.2,1F13.2,3F10.2,1X,7I7)
WRITE(21,1408)
1408 FORMAT(//13X,2HDX,6X,3HRHO,4X,2HCK,2X
& ,5HZ(,1),1X,5HZ(,2),1X,5HZ(,3),1X,5HZ(,4),1X,5HZ(,5),2X
& ,5HM(,1),2X,5HM(,2),2X,5HM(,3),2X,5HM(,4),2X,5HM(,5),1X
& ,5HC(,1),1X,5HC(,2),1X,5HC(,3),1X,5HC(,4),1X,5HC(,5))
DO I=1,L
WRITE(21,1412) I,DX(I),RHO(I),CK(I),(ZT(I,J),J=1,5) ,(MT(I,J),J
& =1,5),(CO(I,J),J=1,5)
IF(NJ(I).GT.5) THEN
WRITE(21,5113)
DO J=6,NJ(I)
WRITE(21,5111) J,ZT(I,J),MT(I,J),CO(I,J)
ENDDO
ENDIF
1412 FORMAT(/1X,I3,6H.LAYER,1X,1F8.2,2F7.2,5F6.0,5F7.2,5F6.3)
5113 FORMAT(6X,'ADDITIONAL ELEMENTS: J Z M C')
5111 FORMAT(6X,23X,I3,1X,F6.0,1X,F7.2,1X,F8.5)
5114 FORMAT(6X,'ADDITIONAL ELEMENTS: J SBE ED BE')
5115 FORMAT(6X,23X,I3,1X,F6.2,1X,F7.2,1X,F8.2)
ENDDO
WRITE(21,1414)
1414 FORMAT(//27X,'***',2X,'SBE(LAYER,ELEMENT)',2X,'***',5X
& ,'***',5X,'ED(LAYER,ELEMENT)',5X,'***',5X
& ,'***',3X,'BE(LAYER,ELEMENT)',2X,'***')
DO 1416 I=1,L
WRITE(21,1418) I,(SBE(I,J),J=1,5),(ED(I,J),J=1,5),(BE(I,J),J=1
& ,5)
IF(NJ(I).GT.5) THEN
WRITE(21,5114)
DO J=6,NJ(I)
WRITE(21,5115) J,SBE(I,J),ED(I,J),BE(I,J)
ENDDO
ENDIF
1418 FORMAT(/1X,I3,6H.LAYER,17X,5F6.2,3X,5F7.2,3X,5F6.2)
1416 CONTINUE
IF(KDEE1.LT.STOP_ICRU49) GO TO 1421
WRITE(21,1419)
1419 FORMAT(//30X,'CH1',10X,'CH2',10X,'CH3',10X,'CH4',10X,'CH5')
DO 1417 I=1,L
DO J=1,NJ(I)
IF(J.EQ.1) THEN
WRITE(21,1415) I,CH1(I,J),CH2(I,J),CH3(I,J),
& CH4(I,J),CH5(I,J)
ELSE
WRITE(21,1423) CH1(I,J),CH2(I,J),CH3(I,J),
& CH4(I,J),CH5(I,J)
ENDIF
ENDDO
1417 CONTINUE
1415 FORMAT(/1X,I3,6H.LAYER,17X,5F13.6)
1423 FORMAT(/25X,5F13.6)
1421 CONTINUE
IF(IPOT.EQ.POT_KRC) DPOT='KR-C POTENTIAL'
IF(IPOT.EQ.POT_MOLIERE) DPOT='mod. MOLIERE '
IF(IPOT.EQ.POT_ZBL) DPOT='ZBL POTENTIAL'
IF(IPOTR.EQ.POT_KRC) DPOTR='KR-C POTENTIAL'
IF(IPOTR.EQ.POT_MOLIERE) DPOTR='MOLIERE POTENTIAL'
IF(IPOTR.EQ.POT_ZBL) DPOTR='ZBL POTENTIAL'
WRITE(21,1411) DPOT,DPOTR
1411 FORMAT(//7X,'INTERACTION POTENTIAL : PROJECTILE-TARGET : ',A18
& ,' TARGET-TARGET : ',A18)
IF(KDEE1.EQ.STOP_LS) DKDEE1='LINDHARD-SCHARFF'
IF(KDEE1.EQ.STOP_OR) DKDEE1='OEN-ROBINSON'
IF(KDEE1.EQ.STOP_MIXED) DKDEE1='50% LS 50% OR'
IF(KDEE1.EQ.STOP_ICRU49) DKDEE1='AZ nach ICRU49'
IF(KDEE1.EQ.STOP_ZIEGLER) DKDEE1='ZIEGLER'
IF(KDEE2.EQ.STOP_LS) DKDEE2='LINDHARD-SCHARFF'
IF(KDEE2.EQ.STOP_OR) DKDEE2='OEN-ROBINSON'
IF(KDEE2.EQ.STOP_MIXED) DKDEE2='50% LS 50% OR'
WRITE(21,1413) DKDEE1,DKDEE2
1413 FORMAT(//7X,'INELASTIC LOSS MODEL : PROJECTILE-TARGET : ',A18
& ,' TARGET-TARGET : ',A18)
IF(E0.GT.0.D0) GO TO 1420
IF(ALPHA.LT.0.D0) GO TO 1405
WRITE(21,1422) TI,ZARG,VELC,EMX
1422 FORMAT(//6X,'MAXWELLIAN DISTRIBUTION',7X,2HTI,5X,4HZARG,5X ,4HVELC
& ,8X,3HEMX/29X,1F10.2,2F9.4,1E14.6)
GO TO 1427
1405 ALPHAM=-ALPHA
WRITE(21,1407) TI,SHEATH,ALPHAM,EMX
1407 FORMAT(//6X,'MAXWELLIAN DISTRIBUTION (ENERGY)',7X,'TI',5X
& ,'SHEATH',5X,'ALPHAM',8X,'EMX'/38X,3F10.2,2X,1E14.6)
GO TO 1427
1420 IF(ALPHA.EQ.-1.) WRITE(21,1424)
1424 FORMAT(//6X,'RANDOM DISTRIBUTION'/)
IF(ALPHA.EQ.-2.) WRITE(21,1426)
1426 FORMAT(//6X,'COSINE DISTRIBUTION'/)
1427 CONTINUE
IF(EQUAL(Esig,0.D0)) THEN
WRITE(21,14271)
14271 FORMAT(//6X,'fixed PROJECTILE ENERGY'/)
ELSE
WRITE(21,14272)
14272 FORMAT(//6X,'PROJECTILE ENERGY has GAUSSIAN DISTRIBUTION '/)
ENDIF
IF(EQUAL(ALPHASIG,0.D0)) THEN
WRITE(21,14273)
14273 FORMAT(//6X,'fixed PROJECTILE ANGLE'/)
ELSE
WRITE(21,14274)
14274 FORMAT(//6X,'PROJECTILE ANGLE has 1D GAUSSIAN DISTRIBUTION '/)
ENDIF
WRITE(21,1428)outnam
1428 FORMAT(1H1,//30X,'* OUTPUT DATA *',5X,A12)
#if defined (OS_WIN)
WRITE(22,14280)rgenam
14280 FORMAT(1H1,//30X,'* RANGE DATA *',5X,A12)
#endif
WRITE(21,1430) HLM,HLMT,SU,SUT,XC,RT,SFE,INEL,L,LJ
1430 FORMAT(//17X,'HLM',7X,'HLMT',8X,'SU',7X,'SUT',8X,'XC',8X,'RT',7X
& ,'SFE',6X,'INEL',9X,'L',8X,'LJ'/
@@ -4027,9 +3900,195 @@ C
C=======================================================================
C READ GUI-GENERATED INPUT FILE
C OUTPUT WRITER SUBROUTINES
C=======================================================================
C=======================================================================
C WRITE INPUT AND BEAM SUMMARY
C=======================================================================
subroutine writeInputSummary(inputName,outputName,rangeName,
& zProjectile,massProjectile,energy0,energySigma,alpha,
& alphaSigma,finalEnergy,surfaceEnergy,sheath,recoilCutoff,
& nProjectiles,ri,ri2,ri3,xStart,rd,depthBin,ca,kk0,kk0r,
& stoppingPrimary,stoppingRecoil,potentialPrimary,
& potentialRecoil,recoilMode,nLayers,layerThickness,density,
& correction,nElements,zTarget,massTarget,concentration,
& surfaceBinding,displacementEnergy,bulkBinding,ch1,ch2,ch3,
& ch4,ch5,ti,zArg,velc,emx,maxNl,maxEl,secondsStartTotal)
implicit none
integer nProjectiles,kk0,kk0r,stoppingPrimary,stoppingRecoil
integer potentialPrimary,potentialRecoil,recoilMode,nLayers
integer maxNl,maxEl,secondsStartTotal,secondsStopTotal
integer nElements(maxNl)
integer potKrc,potMoliere,potZbl
integer stopLs,stopOr,stopMixed,stopIcru49,stopZiegler
integer i,j
real*8 zProjectile,massProjectile,energy0,energySigma,alpha
real*8 alphaSigma,finalEnergy,surfaceEnergy
& ,sheath,recoilCutoff
real*8 ri,ri2,ri3,xStart,rd,depthBin,ca
real*8 layerThickness(maxNl),density(maxNl),correction(maxNl)
real*8 zTarget(maxNl,maxEl),massTarget(maxNl,maxEl)
real*8 concentration(maxNl,maxEl)
real*8 surfaceBinding(maxNl,maxEl)
real*8 displacementEnergy(maxNl,maxEl)
real*8 bulkBinding(maxNl,maxEl)
real*8 ch1(maxNl,maxEl),ch2(maxNl,maxEl)
real*8 ch3(maxNl,maxEl),ch4(maxNl,maxEl),ch5(maxNl,maxEl)
real*8 ti,zArg,velc,emx
character*(*) inputName,outputName,rangeName
character*18 potentialName,potentialRecoilName
character*18 stoppingName,stoppingRecoilName
character monthStop*4,dayStop*2,yearStop*4,hourStop*2
character minStop*2,secStop*2
logical EQUAL
parameter (potKrc=1,potMoliere=2,potZbl=3)
parameter (stopLs=1,stopOr=2,stopMixed=3)
parameter (stopIcru49=4,stopZiegler=5)
C How many seconds are needed for the simulation ??
CALL TimeStamp(dayStop,monthStop,yearStop,hourStop,minStop,
& secStop,secondsStopTotal)
WRITE(21,*)
WRITE(21,10051)dayStop,monthStop,yearStop,hourStop,minStop,
& secStop
WRITE(*,10051)dayStop,monthStop,yearStop,hourStop,minStop,
& secStop
10051 FORMAT(1x,' End: ',A2,'.',A4,1x,A4,1x,A2,':',A2,':',A2)
WRITE(21,*)
WRITE(21,10052)nProjectiles,(secondsStopTotal-secondsStartTotal)
10052 FORMAT(1x,' Simulation needed for ',I7,' projectiles ',I7,
& ' seconds')
WRITE(21,1402)inputName
1402 FORMAT(//30X,'* INPUT DATA *',5X,A12)
WRITE(21,1404) zProjectile,massProjectile,energy0,
& energySigma,alpha,alphaSigma,finalEnergy,surfaceEnergy,
& sheath,recoilCutoff
1404 FORMAT(//,7X,2HZ1,8X,2HM1,10X,2HE0,6X,4HEsig,7X,5HALPHA,7X
& ,8HALPHASIG,7X,2HEF,7X ,3HESB,6X,6HSHEATH,5X,3HERC/2F10.2
& ,1F13.2,7F10.2)
WRITE(21,1406) nProjectiles,ri,ri2,ri3,xStart,rd,depthBin,ca,
& kk0,kk0r,stoppingPrimary,stoppingRecoil,potentialPrimary,
& potentialRecoil,recoilMode
1406 FORMAT(/7X,2HNH,8X,2HRI,5X,3HRI2,5X,3HRI3,11X,2HX0,8X,2HRD,8X,2HCW
& ,8X,2HCA ,7X,3HKK0,3X,4HKK0R,3X,5HKDEE1,2X,5HKDEE2,2X,4HIPOT
& ,3X,5HIPOTR ,3X,3HIRL/I10,3F10.2,1F13.2,3F10.2,1X,7I7)
WRITE(21,1408)
1408 FORMAT(//13X,2HDX,6X,3HRHO,4X,2HCK,2X
& ,5HZ(,1),1X,5HZ(,2),1X,5HZ(,3),1X,5HZ(,4),1X,5HZ(,5),2X
& ,5HM(,1),2X,5HM(,2),2X,5HM(,3),2X,5HM(,4),2X,5HM(,5),1X
& ,5HC(,1),1X,5HC(,2),1X,5HC(,3),1X,5HC(,4),1X,5HC(,5))
DO I=1,nLayers
WRITE(21,1412) I,layerThickness(I),density(I),correction(I),
& (zTarget(I,J),J=1,5),(massTarget(I,J),J=1,5),
& (concentration(I,J),J=1,5)
IF(nElements(I).GT.5) THEN
WRITE(21,5113)
DO J=6,nElements(I)
WRITE(21,5111) J,zTarget(I,J),massTarget(I,J),
& concentration(I,J)
ENDDO
ENDIF
1412 FORMAT(/1X,I3,6H.LAYER,1X,1F8.2,2F7.2,5F6.0,5F7.2,5F6.3)
5113 FORMAT(6X,'ADDITIONAL ELEMENTS: J Z M C')
5111 FORMAT(6X,23X,I3,1X,F6.0,1X,F7.2,1X,F8.5)
5114 FORMAT(6X,'ADDITIONAL ELEMENTS: J SBE ED BE')
5115 FORMAT(6X,23X,I3,1X,F6.2,1X,F7.2,1X,F8.2)
ENDDO
WRITE(21,1414)
1414 FORMAT(//27X,'***',2X,'SBE(LAYER,ELEMENT)',2X,'***',5X
& ,'***',5X,'ED(LAYER,ELEMENT)',5X,'***',5X
& ,'***',3X,'BE(LAYER,ELEMENT)',2X,'***')
DO 1416 I=1,nLayers
WRITE(21,1418) I,(surfaceBinding(I,J),J=1,5),
& (displacementEnergy(I,J),J=1,5),(bulkBinding(I,J),J=1,5)
IF(nElements(I).GT.5) THEN
WRITE(21,5114)
DO J=6,nElements(I)
WRITE(21,5115) J,surfaceBinding(I,J),
& displacementEnergy(I,J),bulkBinding(I,J)
ENDDO
ENDIF
1418 FORMAT(/1X,I3,6H.LAYER,17X,5F6.2,3X,5F7.2,3X,5F6.2)
1416 CONTINUE
IF(stoppingPrimary.LT.stopIcru49) GO TO 1421
WRITE(21,1419)
1419 FORMAT(//30X,'CH1',10X,'CH2',10X,'CH3',10X,'CH4',10X,'CH5')
DO 1417 I=1,nLayers
DO J=1,nElements(I)
IF(J.EQ.1) THEN
WRITE(21,1415) I,ch1(I,J),ch2(I,J),ch3(I,J),
& ch4(I,J),ch5(I,J)
ELSE
WRITE(21,1423) ch1(I,J),ch2(I,J),ch3(I,J),
& ch4(I,J),ch5(I,J)
ENDIF
ENDDO
1417 CONTINUE
1415 FORMAT(/1X,I3,6H.LAYER,17X,5F13.6)
1423 FORMAT(/25X,5F13.6)
1421 CONTINUE
IF(potentialPrimary.EQ.potKrc) potentialName='KR-C POTENTIAL'
IF(potentialPrimary.EQ.potMoliere) potentialName='mod. MOLIERE '
IF(potentialPrimary.EQ.potZbl) potentialName='ZBL POTENTIAL'
IF(potentialRecoil.EQ.potKrc) potentialRecoilName='KR-C POTENTIAL'
IF(potentialRecoil.EQ.potMoliere) potentialRecoilName=
& 'MOLIERE POTENTIAL'
IF(potentialRecoil.EQ.potZbl) potentialRecoilName='ZBL POTENTIAL'
WRITE(21,1411) potentialName,potentialRecoilName
1411 FORMAT(//7X,'INTERACTION POTENTIAL : PROJECTILE-TARGET : ',A18
& ,' TARGET-TARGET : ',A18)
IF(stoppingPrimary.EQ.stopLs) stoppingName='LINDHARD-SCHARFF'
IF(stoppingPrimary.EQ.stopOr) stoppingName='OEN-ROBINSON'
IF(stoppingPrimary.EQ.stopMixed) stoppingName='50% LS 50% OR'
IF(stoppingPrimary.EQ.stopIcru49) stoppingName='AZ nach ICRU49'
IF(stoppingPrimary.EQ.stopZiegler) stoppingName='ZIEGLER'
IF(stoppingRecoil.EQ.stopLs) stoppingRecoilName='LINDHARD-SCHARFF'
IF(stoppingRecoil.EQ.stopOr) stoppingRecoilName='OEN-ROBINSON'
IF(stoppingRecoil.EQ.stopMixed) stoppingRecoilName='50% LS 50% OR'
WRITE(21,1413) stoppingName,stoppingRecoilName
1413 FORMAT(//7X,'INELASTIC LOSS MODEL : PROJECTILE-TARGET : ',A18
& ,' TARGET-TARGET : ',A18)
IF(energy0.GT.0.D0) GO TO 1420
IF(alpha.LT.0.D0) GO TO 1405
WRITE(21,1422) ti,zArg,velc,emx
1422 FORMAT(//6X,'MAXWELLIAN DISTRIBUTION',7X,2HTI,5X,4HZARG,5X ,4HVELC
& ,8X,3HEMX/29X,1F10.2,2F9.4,1E14.6)
GO TO 1427
1405 continue
WRITE(21,1407) ti,sheath,-alpha,emx
1407 FORMAT(//6X,'MAXWELLIAN DISTRIBUTION (ENERGY)',7X,'TI',5X
& ,'SHEATH',5X,'ALPHAM',8X,'EMX'/38X,3F10.2,2X,1E14.6)
GO TO 1427
1420 IF(alpha.EQ.-1.) WRITE(21,1424)
1424 FORMAT(//6X,'RANDOM DISTRIBUTION'/)
IF(alpha.EQ.-2.) WRITE(21,1426)
1426 FORMAT(//6X,'COSINE DISTRIBUTION'/)
1427 CONTINUE
IF(EQUAL(energySigma,0.D0)) THEN
WRITE(21,14271)
14271 FORMAT(//6X,'fixed PROJECTILE ENERGY'/)
ELSE
WRITE(21,14272)
14272 FORMAT(//6X,'PROJECTILE ENERGY has GAUSSIAN DISTRIBUTION '/)
ENDIF
IF(EQUAL(alphaSigma,0.D0)) THEN
WRITE(21,14273)
14273 FORMAT(//6X,'fixed PROJECTILE ANGLE'/)
ELSE
WRITE(21,14274)
14274 FORMAT(//6X,'PROJECTILE ANGLE has 1D GAUSSIAN DISTRIBUTION '/)
ENDIF
WRITE(21,1428)outputName
1428 FORMAT(1H1,//30X,'* OUTPUT DATA *',5X,A12)
#if defined (OS_WIN)
WRITE(22,14280)rangeName
14280 FORMAT(1H1,//30X,'* RANGE DATA *',5X,A12)
#endif
RETURN
END
C=======================================================================
C WRITE GUI SEQUENCE SUMMARY FILE
C=======================================================================
@@ -4072,6 +4131,9 @@ C
& 2(E12.4),999(I7,1x))
end
C=======================================================================
C READ GUI-GENERATED INPUT FILE
C=======================================================================
SUBROUTINE READ_GUI_INPUT(INNAM,ERRNAM,Z1,M1,E0,ESIG,ALPHA,
& ALPHASIG,EF,ESB,SHEATH,ERC,NH,RI,RI2,RI3,X0,RD,CW,CA,KK0,
& KK0R,KDEE1,KDEE2,IPOT,IPOTR,IRL,NLayers,CHEM,DX,RHO,CK,NJ,ZT,