From d76d40ea4ce638ff8cf05012a2f2bf0fb7ad48e4 Mon Sep 17 00:00:00 2001 From: salman Date: Thu, 18 Jun 2026 11:54:52 +0200 Subject: [PATCH] Extract the backward sputtering matrix / energy-angle correlation block. --- fortran/trimspNL.F | 222 +++++++++++++++++++++++++-------------------- 1 file changed, 125 insertions(+), 97 deletions(-) diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index 9d33a44..db1ca19 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -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