From 97dc213bbff80acfcdf3ff0cc3387a8a9d2721a2 Mon Sep 17 00:00:00 2001 From: salman Date: Thu, 18 Jun 2026 11:49:34 +0200 Subject: [PATCH] Extract the matrix table axis setup block --- fortran/trimspNL.F | 183 +++++++++++++++++++++++++++------------------ 1 file changed, 111 insertions(+), 72 deletions(-) diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index ec89e10..9d33a44 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -2658,78 +2658,10 @@ C End of per-run summary file C C TOP AND FRONT LINES FOR MATRICES C - JE=DE - JA=DA - JG=DG - DO J=2,NG1 - MAGB(J,1) = (J-1)*JG - MAGT(J,1) = (J-1)*JG - EMA(J,1)=DBLE(J-1)*DG - EMAT(J,1)=DBLE(J-1)*DG - ENDDO - DO J=2,21 - MEAB(1,J) = J-1 - MEAT(1,J) = J-1 - MAGB(1,J) = J-1 - MAGT(1,J) = J-1 - EMA(1,J) = J-1 - EMAT(1,J) = J-1 - ENDDO - DO J=2,MAXD1 - MEAB(J,1) = J-1 - MEAT(J,1) = J-1 - MEPB(J,1) = J-1 - MEPB(1,J) = J-1 - MEPT(J,1) = J-1 - MEPT(1,J) = J-1 - ENDDO - DO K=1,JT(3) - DO J=2,NG1 - MAGS(J,1,K) = (J-1)*JG - MAGST(J,1,K) = (J-1)*JG - MAGSA(J,1,K) = (J-1)*JG - ENDDO - DO J=2,NA1 - MAGSA(1,J,K) = (J-1)*JA - ENDDO - DO J=2,21 - MEAS(1,J,K) = J-1 - MEAST(1,J,K) = J-1 - MAGS(1,J,K) = J-1 - MAGST(1,J,K) = J-1 - ENDDO - DO J=2,MAXD1 - MEAS(J,1,K) = J-1 - MEAST(J,1,K) = J-1 - ENDDO - DO J=1,20 - MEASL(1,J,K)=J - MEASTL(1,J,K)=J - ENDDO - DO IG2=1,NGIK,1 - DO J=2,21 - MEAGS(1,IG2,J,K) = J-1 - ENDDO - DO J=2,MAXD1 - MEAGS(J,IG2,1,K) = J-1 - ENDDO - ENDDO - ENDDO - DO IG2=1,NGIK,1 - DO J=2,21 - MEAGB(1,IG2,J) = J-1 - MEAGT(1,IG2,J) = J-1 - ENDDO - DO J=2,MAXD1 - MEAGB(J,IG2,1) = J-1 - MEAGT(J,IG2,1) = J-1 - ENDDO - ENDDO - DO I=2,74 - ELOG(I)=10.D0**(I/12.D0)*10.D0**(-7.D0/6.D0) - ENDDO - TEMP=(10.D0**(1.D0/12.D0)-1.D0)*10.D0**(-7.D0/6.D0) - TEMPNH=TEMP*DBLE(NH) + call setupMatrixTableAxes(DE,DA,DG,NH,NG1,NA1,NGIK,MAXD1, + & JT,MEAB,MAGB,EMA,MEAT,MAGT,EMAT,MEPB,MEPT,MAGS, + & MAGST,MAGSA,MEAS,MEAST,MEASL,MEASTL,MEAGS,MEAGB, + & MEAGT,ELOG,TEMPNH,MAXNL,MAXD2,MAXNLm15) C C BACKWARD SPUTTERING : MATRICES , ENERGY - ANGLE CORRELATIONS C @@ -4557,6 +4489,113 @@ C return end +C======================================================================= +C SET UP MATRIX TABLE AXES +C======================================================================= + subroutine setupMatrixTableAxes(energyBinWidth,angleBinWidth, + & polarBinWidth,nProjectiles,nPolarBinsMinusOne, + & nAngleBinsMinusOne,nAzimuthBins,maxDepthBin,jt,meab,magb, + & ema,meat,magt,emat,mepb,mept,mags,magst,magsa,meas, + & meast,measl,meastl,meags,meagb,meagt,energyLog, + & tempNh,maxNl,maxD2,maxSpeciesMinusFirstLayer) + implicit none + integer nProjectiles,nPolarBinsMinusOne,nAngleBinsMinusOne + integer nAzimuthBins,maxDepthBin,maxNl,maxD2 + integer maxSpeciesMinusFirstLayer + integer j,k,azimuthBin + integer jt(maxNl) + integer meab(maxD2,22),magb(62,22),meagb(maxD2,36,22) + integer meat(maxD2,22),magt(62,22),meagt(maxD2,36,22) + integer mepb(maxD2,maxD2),mept(maxD2,maxD2) + integer meas(maxD2,22,maxSpeciesMinusFirstLayer) + integer meast(maxD2,22,maxSpeciesMinusFirstLayer) + integer mags(62,22,maxSpeciesMinusFirstLayer) + integer magst(62,22,maxSpeciesMinusFirstLayer) + integer magsa(62,32,maxSpeciesMinusFirstLayer) + integer measl(75,21,maxSpeciesMinusFirstLayer) + integer meastl(75,21,maxSpeciesMinusFirstLayer) + integer meags(maxD2,12,22,maxSpeciesMinusFirstLayer) + real*8 energyBinWidth,angleBinWidth,polarBinWidth + real*8 ema(62,22),emat(62,22),energyLog(75),tempNh + real*8 logBinWidth +C +C Fill the first row/column labels used by the matrix-style output +C tables. The simulation accumulates matrix entries during transport; +C this routine only sets the printable axes before those tables are +C written. +C + do j=2,nPolarBinsMinusOne + magb(j,1) = (j-1)*polarBinWidth + magt(j,1) = (j-1)*polarBinWidth + ema(j,1)=DBLE(j-1)*polarBinWidth + emat(j,1)=DBLE(j-1)*polarBinWidth + enddo + do j=2,21 + meab(1,j) = j-1 + meat(1,j) = j-1 + magb(1,j) = j-1 + magt(1,j) = j-1 + ema(1,j) = j-1 + emat(1,j) = j-1 + enddo + do j=2,maxDepthBin + meab(j,1) = j-1 + meat(j,1) = j-1 + mepb(j,1) = j-1 + mepb(1,j) = j-1 + mept(j,1) = j-1 + mept(1,j) = j-1 + enddo + do k=1,jt(3) + do j=2,nPolarBinsMinusOne + mags(j,1,k) = (j-1)*polarBinWidth + magst(j,1,k) = (j-1)*polarBinWidth + magsa(j,1,k) = (j-1)*polarBinWidth + enddo + do j=2,nAngleBinsMinusOne + magsa(1,j,k) = (j-1)*angleBinWidth + enddo + do j=2,21 + meas(1,j,k) = j-1 + meast(1,j,k) = j-1 + mags(1,j,k) = j-1 + magst(1,j,k) = j-1 + enddo + do j=2,maxDepthBin + meas(j,1,k) = j-1 + meast(j,1,k) = j-1 + enddo + do j=1,20 + measl(1,j,k)=j + meastl(1,j,k)=j + enddo + do azimuthBin=1,nAzimuthBins,1 + do j=2,21 + meags(1,azimuthBin,j,k) = j-1 + enddo + do j=2,maxDepthBin + meags(j,azimuthBin,1,k) = j-1 + enddo + enddo + enddo + do azimuthBin=1,nAzimuthBins,1 + do j=2,21 + meagb(1,azimuthBin,j) = j-1 + meagt(1,azimuthBin,j) = j-1 + enddo + do j=2,maxDepthBin + meagb(j,azimuthBin,1) = j-1 + meagt(j,azimuthBin,1) = j-1 + enddo + enddo + do j=2,74 + energyLog(j)=10.D0**(j/12.D0)*10.D0**(-7.D0/6.D0) + enddo + logBinWidth=(10.D0**(1.D0/12.D0)-1.D0)*10.D0**(-7.D0/6.D0) + tempNh=logBinWidth*DBLE(nProjectiles) + return + end + C======================================================================= C WRITE GUI SEQUENCE SUMMARY FILE C=======================================================================