Extract the transmission sputtering yields and energies block

This commit is contained in:
2026-06-18 11:35:49 +02:00
parent 9369266988
commit aa56bad442
+166 -116
View File
@@ -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=======================================================================