Extract the transmission sputtering angular-distribution block

This commit is contained in:
2026-06-18 11:39:52 +02:00
parent aa56bad442
commit 82e656e1cd
+135 -110
View File
@@ -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