From 82e656e1cd6601329a8f465c8a9f6995aa34449a Mon Sep 17 00:00:00 2001 From: salman Date: Thu, 18 Jun 2026 11:39:52 +0200 Subject: [PATCH] Extract the transmission sputtering angular-distribution block --- fortran/trimspNL.F | 245 +++++++++++++++++++++++++-------------------- 1 file changed, 135 insertions(+), 110 deletions(-) diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index a7c2d2e..ec89e10 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -2635,116 +2635,9 @@ C C C TRANSMISSION SPUTTERING : ANGULAR DISTRIBUTIONS C - WRITE(21,1760) - 1760 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF ALL TRANSMISSION '// - & 'SPUTTERED PARTICLES'//) - DO I=1,20 - RKADST(I)=KADST(I)*20.D0/ISPAT - ENDDO - WRITE(21,1518) (AI(I),I=1,20),(KADST(I),I=1,20),(RKADST(I),I=1,20) - IF(L.EQ.3) GO TO 1764 - DO I=1,20 - DO J=1,NJ(1) - KDSTL(I,1)=KDSTL(I,1)+KDSTJ(I,J) - ENDDO - ENDDO - DO I=1,20 - DO J=NJ(1)+1,JT(3) - KDSTL(I,2)=KDSTL(I,2)+KDSTJ(I,J) - ENDDO - ENDDO - 1766 CONTINUE - DO J=1,2 - IF(ISPAL(J).EQ.0) GO TO 1754 - DO I=1,20 - RKDSTL(I,J)=KDSTL(I,J)*20.D0/ISPAL(J) - ENDDO - 1754 CONTINUE - ENDDO - DO J=1,JT(3) - IF(ITSP(J).EQ.0) GO TO 1756 - DO I=1,20 - RKDSTJ(I,J)=KDSTJ(I,J)*20.D0/ITSP(J) - ENDDO - 1756 CONTINUE - ENDDO - WRITE(21,1776) - 1776 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 1'//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTL(I,1),I=1,20) - & ,(RKDSTL(I,1),I=1,20) - IF(NJ(1).EQ.1) GO TO 1778 - DO 1780 J=1,NJ(1) - IF(ITSP(J).EQ.0) GO TO 1780 - WRITE(21,1782) J - 1782 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 1 , SPECIES ',I1//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTJ(I,J),I=1,20) - & ,(RKDSTJ(I,J),I=1,20) - 1780 CONTINUE - 1778 IF(L.EQ.1) GO TO 1800 - WRITE(21,1786) - 1786 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 2'//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTL(I,2),I=1,20) - & ,(RKDSTL(I,2),I=1,20) - IF(NJ(2).EQ.1) GO TO 1800 - DO J=NJ(1)+1,JT(3) - WRITE(21,1790) J-NJ(1) - 1790 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 2 , SPECIES ',I1//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTJ(I,J),I=1,20) - & ,(RKDSTJ(I,J),I=1,20) - ENDDO - GO TO 1800 - 1764 DO I=1,20 - DO J=1,NJ(2) - KDSTL(I,1)=KDSTL(I,1)+KDSTJ(I,J) - ENDDO - DO J=NJ(2)+1,LJ-NJ(1) - KDSTL(I,2)=KDSTL(I,2)+KDSTJ(I,J) - ENDDO - ENDDO - DO 1799 J=1,2 - IF(ISPALT(J+1).EQ.0) GO TO 1799 - DO I=1,20 - RKDSTL(I,J)=KDSTL(I,J)*20.D0/ISPALT(J+1) - ENDDO - 1799 CONTINUE - DO 1797 J=1,LJ-NJ(1) - IF(ITSP(J+NJ(1)).EQ.0) GO TO 1797 - DO I=1,20 - RKDSTJ(I,J)=KDSTJ(I,J)*20.D0/ITSP(J+NJ(1)) - ENDDO - 1797 CONTINUE - WRITE(21,1771) - 1771 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 2'//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTL(I,1),I=1,20) - & ,(RKDSTL(I,1),I=1,20) - IF(NJ(2).EQ.1) GO TO 1773 - DO 1775 J=1,NJ(2) - IF(ITSP(J+NJ(1)).EQ.0) GO TO 1775 - WRITE(21,1777) J - 1777 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 2 ; SPECIES ',I1//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTJ(I,J),I=1,20) - & ,(RKDSTJ(I,J),I=1,20) - 1775 CONTINUE - 1773 CONTINUE - WRITE(21,1779) - 1779 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 3'//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTL(I,2),I=1,20) - & ,(RKDSTL(I,2),I=1,20) - IF(NJ(2).EQ.1) GO TO 1800 - DO J=NJ(2)+1,LJ-NJ(1) - WRITE(21,1783) J-NJ(2) - 1783 FORMAT(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', - & 'PARTICLES ; LAYER 3 ; SPECIES ',I1//) - WRITE(21,1518) (AI(I),I=1,20),(KDSTJ(I,J),I=1,20) - & ,(RKDSTJ(I,J),I=1,20) - ENDDO + call writeTransmissionSputterAngularSummary(ISPAT,L,NJ,JT,LJ, + & ISPAL,ISPALT,ITSP,KADST,KDSTJ,KDSTL,RKADST,RKDSTJ, + & RKDSTL,AI,MAXNL,MAXNL5,MAXNLm15) 1800 CONTINUE C @@ -3217,6 +3110,138 @@ C======================================================================= C OUTPUT WRITER SUBROUTINES C======================================================================= +C +C Write angular distributions for transmission sputtered particles. +C + subroutine writeTransmissionSputterAngularSummary(ispat,nLayers, + & nj,jt,nSpecies,ispal,ispalt,itsp,kadst,kdstj,kdstl, + & rkadst,rkdstj,rkdstl,angleBins,maxNl,maxNl5,maxNlm15) + implicit none + integer maxNl,maxNl5,maxNlm15 + integer ispat,nLayers,nSpecies + integer i,j + integer*4 nj(maxNl),jt(maxNl) + integer*4 ispal(maxNl),ispalt(maxNl),itsp(maxNl5) + integer*4 kadst(20),kdstj(20,maxNlm15),kdstl(20,6) + real*8 rkadst(20),rkdstj(20,maxNlm15),rkdstl(20,maxNl) + real*8 angleBins(20) + + write(21,1760) + 1760 format(///5X,'POLAR ANGULAR DISTRIBUTION OF ALL TRANSMISSION '// + & 'SPUTTERED PARTICLES'//) + do i=1,20 + rkadst(i)=kadst(i)*20.D0/ispat + enddo + write(21,1518) (angleBins(i),i=1,20),(kadst(i),i=1,20), + & (rkadst(i),i=1,20) + if(nLayers.EQ.3) go to 1764 + do i=1,20 + do j=1,nj(1) + kdstl(i,1)=kdstl(i,1)+kdstj(i,j) + enddo + enddo + do i=1,20 + do j=nj(1)+1,jt(3) + kdstl(i,2)=kdstl(i,2)+kdstj(i,j) + enddo + enddo + 1766 continue + do j=1,2 + if(ispal(j).EQ.0) go to 1754 + do i=1,20 + rkdstl(i,j)=kdstl(i,j)*20.D0/ispal(j) + enddo + 1754 continue + enddo + do j=1,jt(3) + if(itsp(j).EQ.0) go to 1756 + do i=1,20 + rkdstj(i,j)=kdstj(i,j)*20.D0/itsp(j) + enddo + 1756 continue + enddo + write(21,1776) + 1776 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 1'//) + write(21,1518) (angleBins(i),i=1,20),(kdstl(i,1),i=1,20) + & ,(rkdstl(i,1),i=1,20) + if(nj(1).EQ.1) go to 1778 + do 1780 j=1,nj(1) + if(itsp(j).EQ.0) go to 1780 + write(21,1782) j + 1782 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 1 , SPECIES ',I1//) + write(21,1518) (angleBins(i),i=1,20),(kdstj(i,j),i=1,20) + & ,(rkdstj(i,j),i=1,20) + 1780 continue + 1778 if(nLayers.EQ.1) go to 1800 + write(21,1786) + 1786 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 2'//) + write(21,1518) (angleBins(i),i=1,20),(kdstl(i,2),i=1,20) + & ,(rkdstl(i,2),i=1,20) + if(nj(2).EQ.1) go to 1800 + do j=nj(1)+1,jt(3) + write(21,1790) j-nj(1) + 1790 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 2 , SPECIES ',I1//) + write(21,1518) (angleBins(i),i=1,20),(kdstj(i,j),i=1,20) + & ,(rkdstj(i,j),i=1,20) + enddo + go to 1800 + 1764 do i=1,20 + do j=1,nj(2) + kdstl(i,1)=kdstl(i,1)+kdstj(i,j) + enddo + do j=nj(2)+1,nSpecies-nj(1) + kdstl(i,2)=kdstl(i,2)+kdstj(i,j) + enddo + enddo + do 1799 j=1,2 + if(ispalt(j+1).EQ.0) go to 1799 + do i=1,20 + rkdstl(i,j)=kdstl(i,j)*20.D0/ispalt(j+1) + enddo + 1799 continue + do 1797 j=1,nSpecies-nj(1) + if(itsp(j+nj(1)).EQ.0) go to 1797 + do i=1,20 + rkdstj(i,j)=kdstj(i,j)*20.D0/itsp(j+nj(1)) + enddo + 1797 continue + write(21,1771) + 1771 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 2'//) + write(21,1518) (angleBins(i),i=1,20),(kdstl(i,1),i=1,20) + & ,(rkdstl(i,1),i=1,20) + if(nj(2).EQ.1) go to 1773 + do 1775 j=1,nj(2) + if(itsp(j+nj(1)).EQ.0) go to 1775 + write(21,1777) j + 1777 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 2 ; SPECIES ',I1//) + write(21,1518) (angleBins(i),i=1,20),(kdstj(i,j),i=1,20) + & ,(rkdstj(i,j),i=1,20) + 1775 continue + 1773 continue + write(21,1779) + 1779 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 3'//) + write(21,1518) (angleBins(i),i=1,20),(kdstl(i,2),i=1,20) + & ,(rkdstl(i,2),i=1,20) + if(nj(2).EQ.1) go to 1800 + do j=nj(2)+1,nSpecies-nj(1) + write(21,1783) j-nj(2) + 1783 format(///5X,'POLAR ANGULAR DISTRIBUTION OF SPUTTERED ', + & 'PARTICLES ; LAYER 3 ; SPECIES ',I1//) + write(21,1518) (angleBins(i),i=1,20),(kdstj(i,j),i=1,20) + & ,(rkdstj(i,j),i=1,20) + enddo + 1800 continue + return + 1518 format(5X,20F6.2//,5X,20I6/5X,20F6.3) + end + C C Write transmission sputtering yields and energy summaries. C