Extract the backward sputtering matrix / energy-angle correlation block.

This commit is contained in:
2026-06-18 11:54:52 +02:00
parent 97dc213bbf
commit d76d40ea4c
+125 -97
View File
@@ -2665,105 +2665,15 @@ C
C
C BACKWARD SPUTTERING : MATRICES , ENERGY - ANGLE CORRELATIONS
C
IF(ISPA.LT.10000) GO TO 1900
DO J=1,JT(3)
EASL(2,J)=DBLE(MEASL(2,21,J))/(DBLE(NH)*0.1)
DO IESLOG=3,74
EASL(IESLOG,J)=DBLE(MEASL(IESLOG,21,J))/(TEMPNH*10.D0
& **((IESLOG-1)/12.D0))
ENDDO
ENDDO
DO 1852 J=1,NJ(1)
WRITE(21,1854) J
1854 FORMAT(//,' LOG ENERGY - COS OF EMISSION ANGLE (0.05 STEPS) (BAC
&KWARD SPUTTERED PARTICLES) ; 1. LAYER ; SPECIES',I2/)
do ima = 74,2,-1
if(measl(ima,21,j).ne.0) goto 1855
enddo
ima = 1
1855 ima = min(ima+2,74)
do ies = 1, ima
write (6, 1858) elog(ies), (measl(ies,ias,j),ias=1,21),
& easl(ies,j)
enddo
write (6, 1858) elog(75), (measl(75,ias,j),ias=1,21),easl(75,j)
call writeBackwardSputterMatrixSummary(ISPA,NH,JT,NJ,EASL,
& MEASL,TEMPNH,ELOG,MEAS,MAXD1,ALPHA,NGIK,DGI,MEAGS,
& MAGSA,MAGS,L,ISPAL,MAXNL,MAXD2,MAXNLm15)
C
C Shared matrix output formats used by the remaining inline matrix
C output sections. Copies are kept inside the extracted subroutine.
C
1858 FORMAT(1X,1E12.4,20I5,I6,1E12.4)
WRITE(21,1884) J
1884 FORMAT(//,' ENERGY(E/E0 IN %) - ',
& 'POLAR ANGLE IN COS-INTERVALS (0.05) ',
& '(BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
do ima = MAXD1,1,-1
if(meas(ima,22,j).ne.0) goto 1883
enddo
ima = 1
1883 ima = min(ima+2,MAXD1)
write (6, 1886) ((meas(iesp,iags,j),iags=1,22),iesp=1,ima)
write (6, 1886) (meas(102,iags,j),iags=1,22)
1886 FORMAT(1X,I3,20I6,I8)
IF(ALPHA.LT.1.) GO TO 1878
DO 1870 IG2=1,NGIK,1
EEE = IG2*DGI
WRITE(21,1872) EEE,J
1872 FORMAT(//,' ENERGY(E/E0 IN %) - ',
& 'POLAR ANGLE IN COS-INTERVALS (0.05) ',
& 'AT AZIMUTHAL ANGLE =',F5.1,
& ' (BACKWARD SPUTTERED ATOMS) , 1.LAYER , SPECIES',I2/)
do ima = MAXD1,1,-1
if(meags(ima,ig2,22,j).ne.0) goto 1885
enddo
ima = 1
1885 ima = min(ima+2,MAXD1)
do iesp = 1, ima
write (6, 1886) (meags(iesp,ig2,iags,j),iags=1,22)
end do
write (6, 1886) (meags(102,ig2,iags,j),iags=1,22)
1870 CONTINUE
WRITE(21,1889) J
1889 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN DEGREES ',
& '(BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
WRITE(21,1887) ((MAGSA(IG,IA,J),IA=1,32),IG=1,62)
1887 FORMAT(1X,31I4,I6)
1878 CONTINUE
WRITE(21,1888) J
1888 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) ',
& ' (BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
WRITE(21,1886) ((MAGS(IG,IAGS,J),IAGS=1,22),IG=1,62)
1852 CONTINUE
IF(L.EQ.1) GO TO 1900
if(ispal(2).eq.0) goto 1900
DO 1862 J=NJ(1)+1,JT(3)
WRITE(21,1864) J-NJ(1)
1864 FORMAT(//,' LOG ENERGY - COS OF EMISSION ANGLE (0.05 STEPS) ',
& '(BACKWARD SPUTTERED PARTICLES) , 2. LAYER , SPECIES',I2/)
do ima = 74,1,-1
if(measl(ima,21,j).ne.0) goto 1865
enddo
ima = 1
1865 ima = min(ima+2,74)
do ies = 1, ima
write (6, 1858) elog(ies),(measl(ies,ias,j),ias=1,21),
& easl(ies,j)
enddo
write (6, 1858) elog(75),(measl(75,ias,j),ias=1,21),easl(75,j)
WRITE(21,1894) J-NJ(1)
1894 FORMAT(//,' ENERGY(E/E0 IN %) - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) (BACKWARD SPUTTERED PARTICLES) , 2.LAYER , SPECIES',
& I2/)
do ima = MAXD1,1,-1
if(meas(ima,22,j).ne.0) goto 1895
enddo
ima = 1
1895 ima = min(ima+2,MAXD1)
WRITE(21,1886)((meas(iesp,iags,j),iags=1,22),iesp=1,ima)
WRITE(21,1886)(meas(102,iags,j),iags=1,22)
WRITE(21,1898) J-NJ(1)
1898 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) ',
1 ' (BACKWARD SPUTTERED PARTICLES) , 2.LAYER , SPECIES',I2/)
WRITE(21,1886) ((MAGS(IG,IAGS,J),IAGS=1,22),IG=1,62)
1862 CONTINUE
1900 CONTINUE
C
C FORWARD SPUTTERING : MATRICES , ENERGY - ANGLE CORRELATIONS
C
@@ -3042,6 +2952,124 @@ C=======================================================================
C OUTPUT WRITER SUBROUTINES
C=======================================================================
C
C Write backward sputtering matrix and energy-angle correlation tables.
C
subroutine writeBackwardSputterMatrixSummary(ISPA,NH,JT,NJ,
& EASL,MEASL,TEMPNH,ELOG,MEAS,MAXD1,ALPHA,NGIK,DGI,
& MEAGS,MAGSA,MAGS,L,ISPAL,MAXNL,MAXD2,MAXNLm15)
implicit none
integer*4 ISPA,NH,MAXD1,NGIK,L,MAXNL,MAXD2,MAXNLm15
integer*4 J,IESLOG,IMA,IES,IAS,IESP,IAGS,IG2,IG,IA
integer*4 JT(MAXNL),NJ(MAXNL),ISPAL(MAXNL)
integer*4 MEASL(75,21,MAXNLm15),MEAS(MAXD2,22,MAXNLm15)
integer*4 MEAGS(MAXD2,12,22,MAXNLm15)
integer*4 MAGSA(62,32,MAXNLm15),MAGS(62,22,MAXNLm15)
real*8 EASL(75,MAXNLm15),TEMPNH,ELOG(75),ALPHA,DGI,EEE
IF(ISPA.LT.10000) GO TO 1900
DO J=1,JT(3)
EASL(2,J)=DBLE(MEASL(2,21,J))/(DBLE(NH)*0.1)
DO IESLOG=3,74
EASL(IESLOG,J)=DBLE(MEASL(IESLOG,21,J))/(TEMPNH*10.D0
& **((IESLOG-1)/12.D0))
ENDDO
ENDDO
DO 1852 J=1,NJ(1)
WRITE(21,1854) J
1854 FORMAT(//,' LOG ENERGY - COS OF EMISSION ANGLE (0.05 STEPS) (BAC
&KWARD SPUTTERED PARTICLES) ; 1. LAYER ; SPECIES',I2/)
do ima = 74,2,-1
if(measl(ima,21,j).ne.0) goto 1855
enddo
ima = 1
1855 ima = min(ima+2,74)
do ies = 1, ima
write (6, 1858) elog(ies), (measl(ies,ias,j),ias=1,21),
& easl(ies,j)
enddo
write (6, 1858) elog(75), (measl(75,ias,j),ias=1,21),easl(75,j)
1858 FORMAT(1X,1E12.4,20I5,I6,1E12.4)
WRITE(21,1884) J
1884 FORMAT(//,' ENERGY(E/E0 IN %) - ',
& 'POLAR ANGLE IN COS-INTERVALS (0.05) ',
& '(BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
do ima = MAXD1,1,-1
if(meas(ima,22,j).ne.0) goto 1883
enddo
ima = 1
1883 ima = min(ima+2,MAXD1)
write (6, 1886) ((meas(iesp,iags,j),iags=1,22),iesp=1,ima)
write (6, 1886) (meas(102,iags,j),iags=1,22)
1886 FORMAT(1X,I3,20I6,I8)
IF(ALPHA.LT.1.) GO TO 1878
DO 1870 IG2=1,NGIK,1
EEE = IG2*DGI
WRITE(21,1872) EEE,J
1872 FORMAT(//,' ENERGY(E/E0 IN %) - ',
& 'POLAR ANGLE IN COS-INTERVALS (0.05) ',
& 'AT AZIMUTHAL ANGLE =',F5.1,
& ' (BACKWARD SPUTTERED ATOMS) , 1.LAYER , SPECIES',I2/)
do ima = MAXD1,1,-1
if(meags(ima,ig2,22,j).ne.0) goto 1885
enddo
ima = 1
1885 ima = min(ima+2,MAXD1)
do iesp = 1, ima
write (6, 1886) (meags(iesp,ig2,iags,j),iags=1,22)
end do
write (6, 1886) (meags(102,ig2,iags,j),iags=1,22)
1870 CONTINUE
WRITE(21,1889) J
1889 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN DEGREES ',
& '(BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
WRITE(21,1887) ((MAGSA(IG,IA,J),IA=1,32),IG=1,62)
1887 FORMAT(1X,31I4,I6)
1878 CONTINUE
WRITE(21,1888) J
1888 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) ',
& ' (BACKWARD SPUTTERED PARTICLES) , 1.LAYER , SPECIES',I2/)
WRITE(21,1886) ((MAGS(IG,IAGS,J),IAGS=1,22),IG=1,62)
1852 CONTINUE
IF(L.EQ.1) GO TO 1900
if(ispal(2).eq.0) goto 1900
DO 1862 J=NJ(1)+1,JT(3)
WRITE(21,1864) J-NJ(1)
1864 FORMAT(//,' LOG ENERGY - COS OF EMISSION ANGLE (0.05 STEPS) ',
& '(BACKWARD SPUTTERED PARTICLES) , 2. LAYER , SPECIES',I2/)
do ima = 74,1,-1
if(measl(ima,21,j).ne.0) goto 1865
enddo
ima = 1
1865 ima = min(ima+2,74)
do ies = 1, ima
write (6, 1858) elog(ies),(measl(ies,ias,j),ias=1,21),
& easl(ies,j)
enddo
write (6, 1858) elog(75),(measl(75,ias,j),ias=1,21),easl(75,j)
WRITE(21,1894) J-NJ(1)
1894 FORMAT(//,' ENERGY(E/E0 IN %) - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) (BACKWARD SPUTTERED PARTICLES) , 2.LAYER , SPECIES',
& I2/)
do ima = MAXD1,1,-1
if(meas(ima,22,j).ne.0) goto 1895
enddo
ima = 1
1895 ima = min(ima+2,MAXD1)
WRITE(21,1886)((meas(iesp,iags,j),iags=1,22),iesp=1,ima)
WRITE(21,1886)(meas(102,iags,j),iags=1,22)
WRITE(21,1898) J-NJ(1)
1898 FORMAT(//,' AZIMUTHAL ANGLE - POLAR ANGLE IN COS-INTERVALS ',
& '(0.05) ',
1 ' (BACKWARD SPUTTERED PARTICLES) , 2.LAYER , SPECIES',I2/)
WRITE(21,1886) ((MAGS(IG,IAGS,J),IAGS=1,22),IG=1,62)
1862 CONTINUE
1900 CONTINUE
return
end
C
C Write angular distributions for transmission sputtered particles.
C