diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index f19ae8e..7388214 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -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,