diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index f3b5a3f..a7c2d2e 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -2627,122 +2627,11 @@ C C TRANSMISSION SPUTTERING : YIELDS AND ENERGIES C 1700 IF(ISPAT.EQ.0) GO TO 1800 - WRITE(21,1704) - 1704 FORMAT(1H1,5X,'TRANSMISSION SPUTTERING') - DO J=1,NJ(1) - ISPALT(1) = ISPALT(1)+ITSP(J) - ESPALT(1) = ESPALT(1)+ETSP(J) - ENDDO - DO J=NJ(1)+1,JT(3) - ISPALT(2) = ISPALT(2)+ITSP(J) - ESPALT(2) = ESPALT(2)+ETSP(J) - ENDDO - DO J=JT(3)+1,LJ - ISPALT(3) = ISPALT(3)+ITSP(J) - ESPALT(3) = ESPALT(3)+ETSP(J) - ENDDO - WRITE(21,1712) ISPAT,ESPAT - 1712 FORMAT(///,8X,'ALL SPUTTERED PARTICLES = ',I7,3X - & ,'TOTAL SPUTTERED ENERGY = ',E10.4,3H EV//) - DO J=1,L - WRITE(21,1713) J,ISPALT(J),ESPALT(J) - 1713 FORMAT(8X,'SPUTTERED PARTICLES (LAYER ',I3,') = ',I7,3X - & ,'SPUTTERED ENERGY = ',E10.4,3H EV) - ENDDO - DO J=1,LJ - RIPT(J)=DBLE(ISPIPT(J))/DBLE(ISPAT) - RIST(J)=DBLE(ISPIST(J))/DBLE(ISPAT) - ROPT(J)=DBLE(ISPOPT(J))/DBLE(ISPAT) - ROST(J)=DBLE(ISPOST(J))/DBLE(ISPAT) - REIPT(J)=ESPIPT(J)/ESPAT - REIST(J)=ESPIST(J)/ESPAT - REOPT(J)=ESPOPT(J)/ESPAT - REOST(J)=ESPOST(J)/ESPAT - ENDDO - 1715 CONTINUE - DO 1717 J=1,LJ - IF(ISPIPT(J).EQ.0) GO TO 4571 - ESPMIPT(J)=ESPIPT(J)/DBLE(ISPIPT(J)) - 4571 IF(ISPIST(J).EQ.0) GO TO 4572 - ESPMIST(J)=ESPIST(J)/DBLE(ISPIST(J)) - 4572 IF(ISPOPT(J).EQ.0) GO TO 4573 - ESPMOPT(J)=ESPOPT(J)/DBLE(ISPOPT(J)) - 4573 IF(ISPOST(J).EQ.0) GO TO 1717 - ESPMOST(J)=ESPOST(J)/DBLE(ISPOST(J)) - 1717 CONTINUE - DO J=1,LJ - SPYT(J)=DBLE(ITSP(J))/DBLE(NH) - SPET(J)=ETSP(J)/(NH*E0) - ENDDO - DO 1737 J=1,LJ - IF (equal(SPYT(J),0.0D0))GO TO 1737 - REYT(J)=SPET(J)/SPYT(J) - EMSPT(J)=REYT(J)*E0 - 1737 CONTINUE - IF(ISPALT(1).EQ.0) GO TO 1719 - WRITE(21,1714) - 1714 FORMAT(//1X,'1.LAYER') - DO J=1,NJ(1) - WRITE(21,1564) J,ITSP(J),J,ETSP(J) - ENDDO - DO 1734 J=1,NJ(1) - WRITE(21,1581) J,ISPIPT(J),RIPT(J),ESPIPT(J),REIPT(J) - & ,ESPMIPT(J),J,ISPIST(J),RIST(J),ESPIST(J),REIST(J) - & ,ESPMIST(J),J,ISPOPT(J),ROPT(J),ESPOPT(J),REOPT(J) - & ,ESPMOPT(J),J,ISPOST(J),ROST(J),ESPOST(J),REOST(J) - & ,ESPMOST(J) - 1734 CONTINUE - 1581 FORMAT(/9X,'ION IN , PRIMARY KO(',I1,') = ',I7,1F9.4,4X - & ,'ENERGY = ',E10.4,' EV',1F9.4,4X,'MEAN ENERGY = ',E10.4/ - & 9X,'ION IN , SECOND. KO(',I1,') = ',I7,1F9.4,4X - & ,'ENERGY = ',E10.4,' EV',1F9.4,4X,'MEAN ENERGY = ',E10.4/ - & 8X,'ION OUT , PRIMARY KO(',I1,') = ',I7,1F9.4,4X - & ,'ENERGY = ',E10.4,' EV',1F9.4,4X,'MEAN ENERGY = ',E10.4/ - & 8X,'ION OUT , SECOND. KO(',I1,') = ',I7,1F9.4,4X - & ,'ENERGY = ',E10.4,' EV',1F9.4,4X,'MEAN ENERGY = ',E10.4) - WRITE(21,1577) - DO J=1,NJ(1) - WRITE(21,1582) J,SPYT(J),J,SPET(J),J,REYT(J),J,EMSPT(J) - ENDDO - 1719 IF(L.EQ.1) GO TO 1749 - IF(ISPALT(2).EQ.0) GO TO 1744 - WRITE(21,1720) - 1720 FORMAT(/1X,'2.LAYER') - DO J=NJ(1)+1,JT(3) - WRITE(21,1564) J-NJ(1),ITSP(J),J-NJ(1),ETSP(J) - ENDDO - DO J=NJ(1)+1,JT(3) - WRITE(21,1581) J-NJ(1),ISPIPT(J),RIPT(J),ESPIPT(J),REIPT(J) - & ,ESPMIPT(J) ,J-NJ(1),ISPIST(J),RIST(J),ESPIST(J),REIST(J) - & ,ESPMIST(J) ,J-NJ(1),ISPOPT(J),ROPT(J),ESPOPT(J),REOPT(J) - & ,ESPMOPT(J) ,J-NJ(1),ISPOST(J),ROST(J),ESPOST(J),REOST(J) - & ,ESPMOST(J) - ENDDO - WRITE(21,1577) - DO J=NJ(1)+1,JT(3) - WRITE(21,1582) J-NJ(1),SPYT(J),J-NJ(1),SPET(J),J-NJ(1),REYT(J) - & ,J-NJ(1),EMSPT(J) - ENDDO - 1744 IF(L.EQ.2) GO TO 1749 - IF(ISPALT(3).EQ.0) GO TO 1749 - WRITE(21,1726) - 1726 FORMAT(/1X,'3.LAYER') - DO J=JT(3)+1,LJ - WRITE(21,1564) J-JT(3),ITSP(J),J-JT(3),ETSP(J) - ENDDO - DO J=JT(3)+1,LJ - WRITE(21,1581) J-JT(3),ISPIPT(J),RIPT(J),ESPIPT(J),REIPT(J) - & ,ESPMIPT(J) ,J-JT(3),ISPIST(J),RIST(J),ESPIST(J),REIST(J) - & ,ESPMIST(J) ,J-JT(3),ISPOPT(J),ROPT(J),ESPOPT(J),REOPT(J) - & ,ESPMOPT(J) ,J-JT(3),ISPOST(J),ROST(J),ESPOST(J),REOST(J) - & ,ESPMOST(J) - ENDDO - WRITE(21,1577) - DO J=JT(3)+1,LJ - WRITE(21,1582) J-JT(3),SPYT(J),J-JT(3),SPET(J),J-JT(3),REYT(J) - & ,J-JT(3),EMSPT(J) - ENDDO - 1749 CONTINUE + call writeTransmissionSputterYieldSummary(ISPAT,L,NJ,JT,LJ,NH, + & E0,ESPAT,ITSP,ETSP,ISPALT,ESPALT,ISPIPT,ISPIST,ISPOPT, + & ISPOST,ESPIPT,ESPIST,ESPOPT,ESPOST,RIPT,RIST,ROPT,ROST, + & REIPT,REIST,REOPT,REOST,ESPMIPT,ESPMIST,ESPMOPT, + & ESPMOST,SPYT,SPET,REYT,EMSPT,MAXNL,MAXNL5) C C TRANSMISSION SPUTTERING : ANGULAR DISTRIBUTIONS C @@ -3328,6 +3217,167 @@ C======================================================================= C OUTPUT WRITER SUBROUTINES C======================================================================= +C +C Write transmission sputtering yields and energy summaries. +C + subroutine writeTransmissionSputterYieldSummary(ispat,nLayers, + & nj,jt,nSpecies,nProjectiles,initialEnergy,totalEnergy, + & itsp,etsp,ispalt,espalt,ispipt,ispist,ispopt,ispost, + & espipt,espist,espopt,espost,ript,rist,ropt,rost,reipt, + & reist,reopt,reost,espmipt,espmist,espmopt,espmost,spyt, + & spet,reyt,emspt,maxNl,maxNl5) + implicit none + integer maxNl,maxNl5 + integer ispat,nLayers,nSpecies,nProjectiles + integer j + integer*4 nj(maxNl),jt(maxNl) + integer*4 itsp(maxNl5),ispalt(maxNl) + integer*4 ispipt(maxNl5),ispist(maxNl5) + integer*4 ispopt(maxNl5),ispost(maxNl5) + real*8 initialEnergy,totalEnergy + real*8 etsp(maxNl5),espalt(maxNl) + real*8 ript(maxNl5),rist(maxNl5),ropt(maxNl5),rost(maxNl5) + real*8 reipt(maxNl5),reist(maxNl5),reopt(maxNl5) + real*8 reost(maxNl5) + real*8 espipt(maxNl5),espist(maxNl5),espopt(maxNl5) + real*8 espost(maxNl5) + real*8 espmipt(maxNl5),espmist(maxNl5),espmopt(maxNl5) + real*8 espmost(maxNl5) + real*8 spyt(maxNl5),spet(maxNl5),reyt(maxNl5),emspt(maxNl5) + logical equal + external equal + + if(ispat.eq.0) return + write(21,1704) + 1704 format(1H1,5X,'TRANSMISSION SPUTTERING') + do j=1,nj(1) + ispalt(1) = ispalt(1)+itsp(j) + espalt(1) = espalt(1)+etsp(j) + enddo + do j=nj(1)+1,jt(3) + ispalt(2) = ispalt(2)+itsp(j) + espalt(2) = espalt(2)+etsp(j) + enddo + do j=jt(3)+1,nSpecies + ispalt(3) = ispalt(3)+itsp(j) + espalt(3) = espalt(3)+etsp(j) + enddo + write(21,1712) ispat,totalEnergy + 1712 format(///,8X,'ALL SPUTTERED PARTICLES = ',I7,3X, + & 'TOTAL SPUTTERED ENERGY = ',E10.4,3H EV//) + do j=1,nLayers + write(21,1713) j,ispalt(j),espalt(j) + 1713 format(8X,'SPUTTERED PARTICLES (LAYER ',I3,') = ',I7, + & 3X,'SPUTTERED ENERGY = ',E10.4,3H EV) + enddo + do j=1,nSpecies + ript(j)=dble(ispipt(j))/dble(ispat) + rist(j)=dble(ispist(j))/dble(ispat) + ropt(j)=dble(ispopt(j))/dble(ispat) + rost(j)=dble(ispost(j))/dble(ispat) + reipt(j)=espipt(j)/totalEnergy + reist(j)=espist(j)/totalEnergy + reopt(j)=espopt(j)/totalEnergy + reost(j)=espost(j)/totalEnergy + enddo + 1715 continue + do 1717 j=1,nSpecies + if(ispipt(j).eq.0) go to 4571 + espmipt(j)=espipt(j)/dble(ispipt(j)) + 4571 if(ispist(j).eq.0) go to 4572 + espmist(j)=espist(j)/dble(ispist(j)) + 4572 if(ispopt(j).eq.0) go to 4573 + espmopt(j)=espopt(j)/dble(ispopt(j)) + 4573 if(ispost(j).eq.0) go to 1717 + espmost(j)=espost(j)/dble(ispost(j)) + 1717 continue + do j=1,nSpecies + spyt(j)=dble(itsp(j))/dble(nProjectiles) + spet(j)=etsp(j)/(nProjectiles*initialEnergy) + enddo + do 1737 j=1,nSpecies + if (equal(spyt(j),0.0D0))go to 1737 + reyt(j)=spet(j)/spyt(j) + emspt(j)=reyt(j)*initialEnergy + 1737 continue + if(ispalt(1).eq.0) go to 1719 + write(21,1714) + 1714 format(//1X,'1.LAYER') + do j=1,nj(1) + write(21,1564) j,itsp(j),j,etsp(j) + enddo + do 1734 j=1,nj(1) + write(21,1581) j,ispipt(j),ript(j),espipt(j),reipt(j), + & espmipt(j),j,ispist(j),rist(j),espist(j),reist(j), + & espmist(j),j,ispopt(j),ropt(j),espopt(j),reopt(j), + & espmopt(j),j,ispost(j),rost(j),espost(j),reost(j), + & espmost(j) + 1734 continue + 1581 format(/9X,'ION IN , PRIMARY KO(',I1,') = ',I7,1F9.4, + & 4X,'ENERGY = ',E10.4,' EV',1F9.4,4X, + & 'MEAN ENERGY = ',E10.4/ + & 9X,'ION IN , SECOND. KO(',I1,') = ',I7,1F9.4, + & 4X,'ENERGY = ',E10.4,' EV',1F9.4,4X, + & 'MEAN ENERGY = ',E10.4/ + & 8X,'ION OUT , PRIMARY KO(',I1,') = ',I7,1F9.4, + & 4X,'ENERGY = ',E10.4,' EV',1F9.4,4X, + & 'MEAN ENERGY = ',E10.4/ + & 8X,'ION OUT , SECOND. KO(',I1,') = ',I7,1F9.4, + & 4X,'ENERGY = ',E10.4,' EV',1F9.4,4X, + & 'MEAN ENERGY = ',E10.4) + write(21,1577) + do j=1,nj(1) + write(21,1582) j,spyt(j),j,spet(j),j,reyt(j),j,emspt(j) + enddo + 1719 if(nLayers.eq.1) go to 1749 + if(ispalt(2).eq.0) go to 1744 + write(21,1720) + 1720 format(/1X,'2.LAYER') + do j=nj(1)+1,jt(3) + write(21,1564) j-nj(1),itsp(j),j-nj(1),etsp(j) + enddo + do j=nj(1)+1,jt(3) + write(21,1581) j-nj(1),ispipt(j),ript(j),espipt(j), + & reipt(j),espmipt(j),j-nj(1),ispist(j),rist(j), + & espist(j),reist(j),espmist(j),j-nj(1),ispopt(j), + & ropt(j),espopt(j),reopt(j),espmopt(j),j-nj(1), + & ispost(j),rost(j),espost(j),reost(j),espmost(j) + enddo + write(21,1577) + do j=nj(1)+1,jt(3) + write(21,1582) j-nj(1),spyt(j),j-nj(1),spet(j), + & j-nj(1),reyt(j),j-nj(1),emspt(j) + enddo + 1744 if(nLayers.eq.2) go to 1749 + if(ispalt(3).eq.0) go to 1749 + write(21,1726) + 1726 format(/1X,'3.LAYER') + do j=jt(3)+1,nSpecies + write(21,1564) j-jt(3),itsp(j),j-jt(3),etsp(j) + enddo + do j=jt(3)+1,nSpecies + write(21,1581) j-jt(3),ispipt(j),ript(j),espipt(j), + & reipt(j),espmipt(j),j-jt(3),ispist(j),rist(j), + & espist(j),reist(j),espmist(j),j-jt(3),ispopt(j), + & ropt(j),espopt(j),reopt(j),espmopt(j),j-jt(3), + & ispost(j),rost(j),espost(j),reost(j),espmost(j) + enddo + write(21,1577) + do j=jt(3)+1,nSpecies + write(21,1582) j-jt(3),spyt(j),j-jt(3),spet(j), + & j-jt(3),reyt(j),j-jt(3),emspt(j) + enddo + 1749 continue + return + 1564 format(9X,'SPUTTERED PARTICLES(',I1,') = ',I7,5X, + & 'SPUTTERED ENERGY(',I1,') = ',E10.4,' EV') + 1577 format(/) + 1582 format(5X,'SPUTTERING YIELD(',I1,') = ',1PE10.3, + & ' SPUTTERED ENERGY(',I1,') = ',1E10.3, + & ' REL.MEAN ENERGY(',I1,') = ',1E10.3, + & ' MEAN ENERGY(',I1,') = ',1E10.3) + end + C======================================================================= C=======================================================================