From b9690c71e3e9b1ef3e9d142890ac8fc39a746c7f Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 09:23:01 +0200 Subject: [PATCH 01/19] Optimized sdissip_ard --- src/ecwam/sdissip_ard.F90 | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/src/ecwam/sdissip_ard.F90 b/src/ecwam/sdissip_ard.F90 index e3d944a5..1f939fb4 100644 --- a/src/ecwam/sdissip_ard.F90 +++ b/src/ecwam/sdissip_ard.F90 @@ -86,7 +86,6 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & INTEGER(KIND=JWIM) :: IJ, K, M, I, J, M2, K2, KK, NANGD - INTEGER(KIND=JWIM), DIMENSION(NANG) :: KKD REAL(KIND=JWRB) :: TPIINV, TPIINVH, TMP01, TMP02, TMP03 REAL(KIND=JWRB) :: EPSR, SSDSC6M1, ZCOEF, ZCOEFM1 @@ -95,8 +94,7 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(NFRE) :: SIG, SSDSC2_SIG - REAL(KIND=JWRB), DIMENSION(0:NANG/2) :: COSDTH + REAL(KIND=JWRB) :: SSDSC2_SIG REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: FACTURB REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: FACSAT, FACWTRB, TEMP1 REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: BTH0 !saturation spectrum @@ -124,11 +122,6 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & SSDSC6M1=1._JWRB-SSDSC6 - DO M=1,NFRE - SIG(M) = ZPIFR(M) - SSDSC2_SIG(M)=SSDSC2*SIG(M) - END DO - DO M=1, NFRE DO IJ=KIJS,KIJL FACSAT(IJ,M) = WAVNUM(IJ,M)*TPIINV*XK2CG(IJ,M) @@ -167,16 +160,13 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & ! SATURATION TERM DO M=1,NFRE - ZCOEF = SSDSC2_SIG(M)*SSDSC6 - DO IJ=KIJS,KIJL - TEMP1(IJ,M) = ZCOEF * (MAX(0._JWRB, BTH0(IJ,M)*TMP03-SSDSC4))**IPSAT - ENDDO - ENDDO - DO M=1,NFRE - ZCOEFM1 = SSDSC2_SIG(M)*SSDSC6M1 + SSDSC2_SIG = SSDSC2*ZPIFR(M) + ZCOEF = SSDSC2_SIG*SSDSC6 + ZCOEFM1 = SSDSC2_SIG*SSDSC6M1 DO K=1,NANG DO IJ=KIJS,KIJL - D(IJ,K,M) = TEMP1(IJ,M) + ZCOEFM1 * (MAX(0._JWRB, BTH(IJ,K,M)*TMP03-SSDSC4))**IPSAT + D(IJ,K,M) = ZCOEF * (MAX(0._JWRB, BTH0(IJ,M)*TMP03-SSDSC4))**IPSAT + & + & ZCOEFM1 * (MAX(0._JWRB, BTH(IJ,K,M)*TMP03-SSDSC4))**IPSAT ENDDO ENDDO ENDDO @@ -196,15 +186,11 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & !!! wrong !!??? NDIKCUMUL = NINT(SSDSBRF1/(FRATIO-1.)) NDIKCUMUL = NINT(-LOG(SSDSBRF1)/LOG(FRATIO)) - DO KK=0,NANGD - COSDTH(KK)=COS(KK*DELTH) - ENDDO - DO M=1,NFRE DO IJ=KIJS,KIJL - C_(IJ,M)=SIG(M)/WAVNUM(IJ,M) + C_(IJ,M)=ZPIFR(M)/WAVNUM(IJ,M) C_C(IJ,M)=C_(IJ,M)**2 - DSIP(IJ,M)=TMP02*SIG(M)*XLOGDFRTH/CGROUP(IJ,M) ! coef*dtheta*dk = coef*dtheta*dsigma/cg + DSIP(IJ,M)=TMP02*ZPIFR(M)*XLOGDFRTH/CGROUP(IJ,M) ! coef*dtheta*dk = coef*dtheta*dsigma/cg ENDDO ENDDO @@ -259,7 +245,7 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & DO M2=1,M-NDIKCUMUL DO KK=0,NANGD DO IJ=KIJS,KIJL - WCUMUL(IJ,KK,M2)=SQRT(ABS(C_C(IJ,M)+C_C(IJ,M2)-2.0_JWRB*C_(IJ,M)*C_(IJ,M2)*COSDTH(KK)))*TRPZ_DSIP(IJ,M2) + WCUMUL(IJ,KK,M2)=SQRT(ABS(C_C(IJ,M)+C_C(IJ,M2)-2.0_JWRB*C_(IJ,M)*C_(IJ,M2)*COS(KK*DELTH)))*TRPZ_DSIP(IJ,M2) ENDDO ENDDO ENDDO @@ -270,13 +256,12 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & ! the expected rate of sweeping by larger breaking waves) DO K2=1,NANG - KKD(K2)=ABS(K2-K) - IF ( KKD(K2) > NANGD) KKD(K2)=KKD(K2)-NANGD ENDDO DO M2=1,M-NDIKCUMUL DO K2=1,NANG - KK=KKD(K2) + KK=ABS(K2-K) + IF ( KK > NANGD) KK=KK-NANGD DO IJ=KIJS,KIJL ! Integrates over frequencies M2 and directions K2 to ! Integration is performed from M2=1 to a frequency lower than M: IK-NDIKCUMUL @@ -305,7 +290,7 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & ENDDO DO M=1, NFRE DO IJ=KIJS,KIJL - FACWTRB(IJ,M) = SIG(M)*WAVNUM(IJ,M)*FACTURB(IJ) + FACWTRB(IJ,M) = ZPIFR(M)*WAVNUM(IJ,M)*FACTURB(IJ) ENDDO DO K=1,NANG DO IJ=KIJS,KIJL From 18c8a3698e23cf0653d467eb14a599d52348444f Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 09:40:59 +0200 Subject: [PATCH 02/19] Optimized peak_ang --- src/ecwam/peak_ang.F90 | 47 ++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/src/ecwam/peak_ang.F90 b/src/ecwam/peak_ang.F90 index 2f1035cb..dc297fc4 100644 --- a/src/ecwam/peak_ang.F90 +++ b/src/ecwam/peak_ang.F90 @@ -59,15 +59,15 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) INTEGER(KIND=JWIM) :: NSH INTEGER(KIND=JWIM) :: IJ, M, K - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL)::MMAX, MMSTART, MMSTOP + INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL) :: MMAX + INTEGER(KIND=JWIM) :: MMSTART, MMSTOP REAL(KIND=JWRB), PARAMETER :: CONST_SIG = 1.0_JWRB REAL(KIND=JWRB) :: R1 REAL(KIND=JWRB) :: DELT25, COEF_FR, COEF_FR2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: ZEPSILON - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: SUM0, SUM1, SUM2, SUM4, XMAX - REAL,DIMENSION(KIJS:KIJL) :: TEMP - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NFRE) :: THMEAN, SUM_S, SUM_C + REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: SUM0, SUM1, SUM2, SUM4, XMAX, TEMP + REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: THMEAN, SUM_S, SUM_C ! ---------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('PEAK_ANG',0,ZHOOK_HANDLE) @@ -145,38 +145,21 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) SUM2(IJ) = 0._JWRB ENDDO - DO M=1,NFRE - DO IJ=KIJS,KIJL - SUM_S(IJ,M) = 0._JWRB - SUM_C(IJ,M) = ZEPSILON - ENDDO - ENDDO - - DO M=1,NFRE - DO K=1,NANG - DO IJ=KIJS,KIJL - SUM_S(IJ,M) = SUM_S(IJ,M) +SINTH(K)*FL1(IJ,K,M) - SUM_C(IJ,M) = SUM_C(IJ,M) +COSTH(K)*FL1(IJ,K,M) - ENDDO - ENDDO - ENDDO - - DO M=1,NFRE - DO IJ=KIJS,KIJL - THMEAN(IJ,M) = ATAN2(SUM_S(IJ,M),SUM_C(IJ,M)) - ENDDO - ENDDO - DO IJ=KIJS,KIJL - MMSTART(IJ) = MAX(1,MMAX(IJ)-NSH) - MMSTOP(IJ) = MIN(NFRE,MMAX(IJ)+NSH) - ENDDO + MMSTART = MAX(1,MMAX(IJ)-NSH) + MMSTOP = MIN(NFRE,MMAX(IJ)+NSH) - DO IJ=KIJS,KIJL - DO M=MMSTART(IJ),MMSTOP(IJ) + SUM_S(IJ) = 0._JWRB + SUM_C(IJ) = ZEPSILON + DO M=MMSTART,MMSTOP + DO K=1,NANG + SUM_S(IJ) = SUM_S(IJ) +SINTH(K)*FL1(IJ,K,M) + SUM_C(IJ) = SUM_C(IJ) +COSTH(K)*FL1(IJ,K,M) + ENDDO + THMEAN(IJ) = ATAN2(SUM_S(IJ),SUM_C(IJ)) DO K=1,NANG SUM1(IJ) = SUM1(IJ) +FL1(IJ,K,M)*DFIM(M) - SUM2(IJ) = SUM2(IJ) +COS(TH(K)-THMEAN(IJ,M))*FL1(IJ,K,M)*DFIM(M) + SUM2(IJ) = SUM2(IJ) +COS(TH(K)-THMEAN(IJ))*FL1(IJ,K,M)*DFIM(M) ENDDO ENDDO ENDDO From 322ef35482a6ef1ca59ccc36c047705bf2b9a9a5 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 10:03:14 +0200 Subject: [PATCH 03/19] Made last dummy arg to femeanws optional --- src/ecwam/femeanws.F90 | 21 ++++++++++++++------- src/ecwam/implsch.F90 | 2 +- src/ecwam/sinflx.F90 | 4 ++-- src/ecwam/wdfluxes.F90 | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/ecwam/femeanws.F90 b/src/ecwam/femeanws.F90 index eeee090e..9d84fa13 100644 --- a/src/ecwam/femeanws.F90 +++ b/src/ecwam/femeanws.F90 @@ -7,7 +7,7 @@ ! nor does it submit to any jurisdiction. ! - SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, EM, FM) + SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, FM, EM) ! ---------------------------------------------------------------------- @@ -64,14 +64,15 @@ SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, EM, FM) INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL REAL(KIND=JWRB), DIMENSION(kIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1, XLLWS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: EM, FM + REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: FM + REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT), OPTIONAL :: EM INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JWRB) :: DELT25, DELT2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP2, EM_LOC ! ---------------------------------------------------------------------- @@ -81,7 +82,7 @@ SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, EM, FM) ! ------------------------------------------------ DO IJ=KIJS,KIJL - EM(IJ) = EPSMIN + EM_LOC(IJ) = EPSMIN FM(IJ) = EPSMIN ENDDO @@ -100,7 +101,7 @@ SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, EM, FM) ENDDO ENDDO DO IJ=KIJS,KIJL - EM(IJ) = EM(IJ)+DFIM(M)*TEMP2(IJ) + EM_LOC(IJ) = EM_LOC(IJ)+DFIM(M)*TEMP2(IJ) FM(IJ) = FM(IJ)+DFIMOFR(M)*TEMP2(IJ) ENDDO ENDDO @@ -110,11 +111,17 @@ SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, EM, FM) ! ------------------------------------------ DO IJ=KIJS,KIJL - EM(IJ) = EM(IJ)+DELT25*TEMP2(IJ) + EM_LOC(IJ) = EM_LOC(IJ)+DELT25*TEMP2(IJ) FM(IJ) = FM(IJ)+DELT2*TEMP2(IJ) - FM(IJ) = EM(IJ)/FM(IJ) + FM(IJ) = EM_LOC(IJ)/FM(IJ) ENDDO + IF(PRESENT(EM))THEN + DO IJ=KIJS,KIJL + EM(IJ) = EM_LOC(IJ) + ENDDO + ENDIF + IF (LHOOK) CALL DR_HOOK('FEMEANWS',1,ZHOOK_HANDLE) END SUBROUTINE FEMEANWS diff --git a/src/ecwam/implsch.F90 b/src/ecwam/implsch.F90 index fd0a3bb0..ab7028f5 100644 --- a/src/ecwam/implsch.F90 +++ b/src/ecwam/implsch.F90 @@ -382,7 +382,7 @@ SUBROUTINE IMPLSCH (KIJS, KIJL, FL1, & & EMEAN, FMEAN, F1MEAN, AKMEAN, XKMEAN) ! MEAN FREQUENCY CHARACTERISTIC FOR WIND SEA - CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, EMEANWS, FMEANWS) + CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, FMEANWS, EMEANWS) CALL IMPHFTAIL(KIJS, KIJL, MIJ, FLM, WAVNUM, XK2CG, FL1) diff --git a/src/ecwam/sinflx.F90 b/src/ecwam/sinflx.F90 index 980e5313..2644c7f4 100644 --- a/src/ecwam/sinflx.F90 +++ b/src/ecwam/sinflx.F90 @@ -93,7 +93,7 @@ SUBROUTINE SINFLX (ICALL, NCALL, KIJS, KIJL, & INTEGER(KIND=JWIM) :: NGST REAL(KIND=JPHOOK) :: ZHOOK_HANDLE -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: EMEANWS, RNFAC +REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: RNFAC LOGICAL :: LLPHIWA, LLSNEG @@ -161,7 +161,7 @@ SUBROUTINE SINFLX (ICALL, NCALL, KIJS, KIJL, & ! MEAN FREQUENCY CHARACTERISTIC FOR WIND SEA -CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, EMEANWS, FMEANWS) +CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, FMEANWS) ! COMPUTE LAST FREQUENCY INDEX OF PROGNOSTIC PART OF SPECTRUM. CALL FRCUTINDEX(KIJS, KIJL, FMEAN, FMEANWS, UFRIC, CICOVER, MIJ, RHOWGDFTH) diff --git a/src/ecwam/wdfluxes.F90 b/src/ecwam/wdfluxes.F90 index 11d4c26a..ca1c6094 100644 --- a/src/ecwam/wdfluxes.F90 +++ b/src/ecwam/wdfluxes.F90 @@ -223,7 +223,7 @@ SUBROUTINE WDFLUXES (KIJS, KIJL, & ENDIF IF (LWFLUX) THEN - CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, EMEANWS, FMEANWS) + CALL FEMEANWS(KIJS, KIJL, FL1, XLLWS, FMEANWS, EMEANWS) DO IJ=KIJS,KIJL IF (EMEANWS(IJ) < WSEMEAN_MIN) THEN From 7bcfc06ae189abc71cefa84915ba290d742cac5b Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 10:05:24 +0200 Subject: [PATCH 04/19] Optmized sbottom --- src/ecwam/sbottom.F90 | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/ecwam/sbottom.F90 b/src/ecwam/sbottom.F90 index 78d3d835..607f58c2 100644 --- a/src/ecwam/sbottom.F90 +++ b/src/ecwam/sbottom.F90 @@ -70,7 +70,7 @@ SUBROUTINE SBOTTOM (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH) INTEGER(KIND=JWIM):: IJ, K, M REAL(KIND=JWRB) :: CONST, ARG REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: SBO + REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SBO ! ---------------------------------------------------------------------- @@ -82,18 +82,16 @@ SUBROUTINE SBOTTOM (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH) IF(DEPTH(IJ) < BATHYMAX) THEN ARG = 2.0_JWRB* DEPTH(IJ)*WAVNUM(IJ,M) ARG = MIN(ARG,50.0_JWRB) - SBO(IJ,M) = CONST*WAVNUM(IJ,M)/SINH(ARG) + SBO(IJ) = CONST*WAVNUM(IJ,M)/SINH(ARG) ELSE - SBO(IJ,M) = 0.0_JWRB + SBO(IJ) = 0.0_JWRB ENDIF ENDDO - ENDDO - DO M = 1, NFRE_RED DO K=1,NANG DO IJ=KIJS,KIJL - SL(IJ,K,M) = SL(IJ,K,M)+SBO(IJ,M)*FL1(IJ,K,M) - FLD(IJ,K,M) = FLD(IJ,K,M)+SBO(IJ,M) + SL(IJ,K,M) = SL(IJ,K,M)+SBO(IJ)*FL1(IJ,K,M) + FLD(IJ,K,M) = FLD(IJ,K,M)+SBO(IJ) ENDDO ENDDO ENDDO From 08f4bb3cfca781eee5025530d17e461ecdf58137 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 10:15:35 +0200 Subject: [PATCH 05/19] Optimized imphftail --- src/ecwam/imphftail.F90 | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/ecwam/imphftail.F90 b/src/ecwam/imphftail.F90 index f0b50d56..8dd88ee7 100644 --- a/src/ecwam/imphftail.F90 +++ b/src/ecwam/imphftail.F90 @@ -61,7 +61,7 @@ SUBROUTINE IMPHFTAIL (KIJS, KIJL, MIJ, FLM, WAVNUM, XK2CG, FL1) REAL(KIND=JWRB) :: AKM1, TFAC REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP1, TEMP2 ! ---------------------------------------------------------------------- @@ -71,24 +71,17 @@ SUBROUTINE IMPHFTAIL (KIJS, KIJL, MIJ, FLM, WAVNUM, XK2CG, FL1) ! ---------------- DO IJ=KIJS,KIJL - DO M=MIJ(IJ),NFRE - TEMP2(IJ,M) = 1.0_JWRB/XK2CG(IJ,M)/WAVNUM(IJ,M) - ENDDO - ENDDO + TEMP1(IJ) = 1.0_JWRB/XK2CG(IJ,MIJ(IJ))/WAVNUM(IJ,MIJ(IJ)) - DO IJ=KIJS,KIJL DO M=MIJ(IJ)+1,NFRE - TEMP2(IJ,M) = TEMP2(IJ,M)/TEMP2(IJ,MIJ(IJ)) - ENDDO - ENDDO + TEMP2(IJ) = 1.0_JWRB/XK2CG(IJ,M)/WAVNUM(IJ,M) + TEMP2(IJ) = TEMP2(IJ)/TEMP1(IJ) !* MERGE TAIL INTO SPECTRA. ! ------------------------ - DO K=1,NANG - DO IJ=KIJS,KIJL - TFAC = FL1(IJ,K,MIJ(IJ)) - DO M=MIJ(IJ)+1,NFRE - FL1(IJ,K,M) = MAX(TEMP2(IJ,M)*TFAC,FLM(IJ,K)) + DO K=1,NANG + TFAC = FL1(IJ,K,MIJ(IJ)) + FL1(IJ,K,M) = MAX(TEMP2(IJ)*TFAC,FLM(IJ,K)) ENDDO ENDDO ENDDO From c616a944797fc42157f503b07290dbdd08ae80b5 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 20 Apr 2023 10:18:11 +0200 Subject: [PATCH 06/19] Optimized setice --- src/ecwam/setice.F90 | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/ecwam/setice.F90 b/src/ecwam/setice.F90 index 0e4bf5fa..6d0f8760 100644 --- a/src/ecwam/setice.F90 +++ b/src/ecwam/setice.F90 @@ -57,7 +57,6 @@ SUBROUTINE SETICE (KIJS, KIJL, FL1, CICOVER, COSWDIF) REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CIREDUC, TEMP, ICEFREE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG) :: SPRD ! ---------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('SETICE',0,ZHOOK_HANDLE) @@ -65,12 +64,6 @@ SUBROUTINE SETICE (KIJS, KIJL, FL1, CICOVER, COSWDIF) !* 1. SET SPECTRA TO NOISE LEVEL OVER ICE POINTS. ! ---------------------------------------------- - DO K=1,NANG - DO IJ = KIJS, KIJL - SPRD(IJ,K)=MAX(0.0_JWRB, COSWDIF(IJ,K))**2 - ENDDO - ENDDO - DO IJ = KIJS,KIJL IF (CICOVER(IJ) > CITHRSH) THEN CIREDUC(IJ)=MAX(EPSMIN,(1.0_JWRB-CICOVER(IJ))) @@ -87,7 +80,7 @@ SUBROUTINE SETICE (KIJS, KIJL, FL1, CICOVER, COSWDIF) DO M = 1, NFRE DO K = 1, NANG DO IJ = KIJS,KIJL - FL1(IJ,K,M)=FL1(IJ,K,M)*ICEFREE(IJ)+TEMP(IJ)*SPRD(IJ,K) + FL1(IJ,K,M)=FL1(IJ,K,M)*ICEFREE(IJ)+TEMP(IJ)*MAX(0.0_JWRB, COSWDIF(IJ,K))**2 ENDDO ENDDO ENDDO From 449ef4d49932375a103e78dd97dcd6f65892a842 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Fri, 21 Apr 2023 09:22:17 +0200 Subject: [PATCH 07/19] Removed slicing from array declarations --- src/ecwam/airsea.F90 | 6 ++-- src/ecwam/cimsstrn.F90 | 12 +++---- src/ecwam/ciwabr.F90 | 8 ++--- src/ecwam/femean.F90 | 6 ++-- src/ecwam/femeanws.F90 | 8 ++--- src/ecwam/fkmean.F90 | 8 ++--- src/ecwam/frcutindex.F90 | 6 ++-- src/ecwam/halphap.F90 | 16 ++++----- src/ecwam/imphftail.F90 | 10 +++--- src/ecwam/implsch.F90 | 74 +++++++++++++++++++-------------------- src/ecwam/meansqs_gc.F90 | 12 +++---- src/ecwam/meansqs_lf.F90 | 8 ++--- src/ecwam/omegagc.F90 | 8 ++--- src/ecwam/peak_ang.F90 | 10 +++--- src/ecwam/sbottom.F90 | 10 +++--- src/ecwam/sdepthlim.F90 | 6 ++-- src/ecwam/sdissip.F90 | 12 +++---- src/ecwam/sdissip_ard.F90 | 30 ++++++++-------- src/ecwam/sdissip_jan.F90 | 12 +++---- src/ecwam/sdiwbk.F90 | 8 ++--- src/ecwam/semean.F90 | 6 ++-- src/ecwam/setice.F90 | 8 ++--- src/ecwam/sinflx.F90 | 68 +++++++++++++++++------------------ src/ecwam/sinput.F90 | 14 ++++---- src/ecwam/sinput_ard.F90 | 46 ++++++++++++------------ src/ecwam/sinput_jan.F90 | 44 +++++++++++------------ src/ecwam/snonlin.F90 | 14 ++++---- src/ecwam/stokesdrift.F90 | 10 +++--- src/ecwam/stokestrn.F90 | 12 +++---- src/ecwam/stresso.F90 | 26 +++++++------- src/ecwam/tau_phi_hf.F90 | 30 ++++++++-------- src/ecwam/taut_z0.F90 | 16 ++++----- src/ecwam/wnfluxes.F90 | 42 +++++++++++----------- src/ecwam/wsigstar.F90 | 4 +-- src/ecwam/z0wave.F90 | 6 ++-- 35 files changed, 308 insertions(+), 308 deletions(-) diff --git a/src/ecwam/airsea.F90 b/src/ecwam/airsea.F90 index 6fe09fee..42e0798a 100644 --- a/src/ecwam/airsea.F90 +++ b/src/ecwam/airsea.F90 @@ -73,9 +73,9 @@ SUBROUTINE AIRSEA (KIJS, KIJL, & #include "z0wave.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL, ICODE_WND, IUSFG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT (IN) :: HALP, U10DIR, TAUW, TAUWDIR, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT (INOUT) :: U10, US - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT (OUT) :: Z0, Z0B, CHRNCK + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT (IN) :: HALP, U10DIR, TAUW, TAUWDIR, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT (INOUT) :: U10, US + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT (OUT) :: Z0, Z0B, CHRNCK INTEGER(KIND=JWIM) :: IJ, I, J diff --git a/src/ecwam/cimsstrn.F90 b/src/ecwam/cimsstrn.F90 index 5aca5ebf..e093261b 100644 --- a/src/ecwam/cimsstrn.F90 +++ b/src/ecwam/cimsstrn.F90 @@ -67,16 +67,16 @@ SUBROUTINE CIMSSTRN(KIJS, KIJL, FL1, WAVNUM, DEPTH, CITHICK, STRN) #include "aki_ice.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: DEPTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: CITHICK - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: STRN + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: DEPTH + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: CITHICK + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: STRN INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JWRB) :: F1LIM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XKI, E, SUME + REAL(KIND=JWRB), DIMENSION(KIJL) :: XKI, E, SUME REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ---------------------------------------------------------------------- diff --git a/src/ecwam/ciwabr.F90 b/src/ecwam/ciwabr.F90 index d6056047..a7ca7bf2 100644 --- a/src/ecwam/ciwabr.F90 +++ b/src/ecwam/ciwabr.F90 @@ -59,10 +59,10 @@ SUBROUTINE CIWABR (KIJS, KIJL, CICOVER, FL1, WAVNUM, CGROUP, CIWAB) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL), INTENT(IN) :: CICOVER - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: CIWAB + REAL(KIND=JWRB),DIMENSION(KIJL), INTENT(IN) :: CICOVER + REAL(KIND=JWRB),DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB),DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP + REAL(KIND=JWRB),DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: CIWAB INTEGER(KIND=JWIM) :: K, M, IJ diff --git a/src/ecwam/femean.F90 b/src/ecwam/femean.F90 index 2065ace9..5b64521d 100644 --- a/src/ecwam/femean.F90 +++ b/src/ecwam/femean.F90 @@ -63,16 +63,16 @@ SUBROUTINE FEMEAN (KIJS, KIJL, F, EM, FM) IMPLICIT NONE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: F + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: F INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: EM, FM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: EM, FM INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JWRB) :: DELT25, DELT2, DEL2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: TEMP2 + REAL(KIND=JWRB),DIMENSION(KIJL) :: TEMP2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/femeanws.F90 b/src/ecwam/femeanws.F90 index 9d84fa13..81b24ea8 100644 --- a/src/ecwam/femeanws.F90 +++ b/src/ecwam/femeanws.F90 @@ -63,16 +63,16 @@ SUBROUTINE FEMEANWS (KIJS, KIJL, FL1, XLLWS, FM, EM) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(kIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1, XLLWS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: FM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT), OPTIONAL :: EM + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1, XLLWS + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: FM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT), OPTIONAL :: EM INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JWRB) :: DELT25, DELT2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP2, EM_LOC + REAL(KIND=JWRB), DIMENSION(KIJL) :: TEMP2, EM_LOC ! ---------------------------------------------------------------------- diff --git a/src/ecwam/fkmean.F90 b/src/ecwam/fkmean.F90 index ae91f2c6..18b098f2 100644 --- a/src/ecwam/fkmean.F90 +++ b/src/ecwam/fkmean.F90 @@ -72,16 +72,16 @@ SUBROUTINE FKMEAN (KIJS, KIJL, FL1, WAVNUM, & INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL), INTENT(OUT) :: EM, FM1, F1, AK, XK + REAL(KIND=JWRB),DIMENSION(KIJL), INTENT(OUT) :: EM, FM1, F1, AK, XK INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: DELT25, COEFM1, COEF1, COEFA, COEFX, SQRTK - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: TEMPA, TEMPX, TEMP2 + REAL(KIND=JWRB),DIMENSION(KIJL) :: TEMPA, TEMPX, TEMP2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/frcutindex.F90 b/src/ecwam/frcutindex.F90 index 1063a373..9d99d237 100644 --- a/src/ecwam/frcutindex.F90 +++ b/src/ecwam/frcutindex.F90 @@ -61,9 +61,9 @@ SUBROUTINE FRCUTINDEX (KIJS, KIJL, FM, FMWS, UFRIC, CICOVER, & IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - INTEGER(KIND=JWIM), INTENT(OUT) :: MIJ(KIJS:KIJL) - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL), INTENT(IN) :: FM, FMWS, UFRIC, CICOVER - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NFRE), INTENT(OUT) :: RHOWGDFTH + INTEGER(KIND=JWIM), INTENT(OUT) :: MIJ(KIJL) + REAL(KIND=JWRB),DIMENSION(KIJL), INTENT(IN) :: FM, FMWS, UFRIC, CICOVER + REAL(KIND=JWRB),DIMENSION(KIJL,NFRE), INTENT(OUT) :: RHOWGDFTH INTEGER(KIND=JWIM) :: IJ, M diff --git a/src/ecwam/halphap.F90 b/src/ecwam/halphap.F90 index 9c49c00c..4cf216cc 100644 --- a/src/ecwam/halphap.F90 +++ b/src/ecwam/halphap.F90 @@ -47,19 +47,19 @@ SUBROUTINE HALPHAP(KIJS, KIJL, WAVNUM, COSWDIF, FL1, HALP) #include "meansqs_lf.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: COSWDIF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: HALP + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: COSWDIF + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: HALP INTEGER(KIND=JWIM) :: IJ, K, M REAL(KIND=JWRB) :: ZLNFRNFRE REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ALPHAP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XMSS, EM, FM, F1D - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG) :: WD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: FLWD + REAL(KIND=JWRB), DIMENSION(KIJL) :: ALPHAP + REAL(KIND=JWRB), DIMENSION(KIJL) :: XMSS, EM, FM, F1D + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: WD + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: FLWD ! ---------------------------------------------------------------------- diff --git a/src/ecwam/imphftail.F90 b/src/ecwam/imphftail.F90 index 8dd88ee7..00e6a920 100644 --- a/src/ecwam/imphftail.F90 +++ b/src/ecwam/imphftail.F90 @@ -51,17 +51,17 @@ SUBROUTINE IMPHFTAIL (KIJS, KIJL, MIJ, FLM, WAVNUM, XK2CG, FL1) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(IN) :: MIJ - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: FLM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 + INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(IN) :: MIJ + REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: FLM + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 INTEGER(KIND=JWIM) :: IJ, K, M REAL(KIND=JWRB) :: AKM1, TFAC REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP1, TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: TEMP1, TEMP2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/implsch.F90 b/src/ecwam/implsch.F90 index ab7028f5..97417414 100644 --- a/src/ecwam/implsch.F90 +++ b/src/ecwam/implsch.F90 @@ -110,29 +110,29 @@ SUBROUTINE IMPLSCH (KIJS, KIJL, FL1, & #include "wnfluxes.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: CGROUP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: CIWA - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: CINV - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NFRE), INTENT(IN) :: STOKFAC - - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: EMAXDPT - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: DEPTH - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(IN) :: IODP - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(IN) :: IOBND - - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: AIRD, WDWAVE, CICOVER, WSWAVE, WSTAR, USTRA, VSTRA - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: UFRIC, TAUW, TAUWDIR, Z0M, Z0B, CHRNCK, CITHICK - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: WSEMEAN, WSFMEAN, USTOKES, VSTOKES, STRNMS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: TAUXD, TAUYD, TAUOCXD, TAUOCYD, TAUOC, PHIOCD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: PHIEPS, PHIAW - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NEMOUSTOKES, NEMOVSTOKES, NEMOSTRN - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NPHIEPS, NTAUOC, NSWH, NMWP, NEMOTAUX - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NEMOTAUY, NEMOWSWAVE, NEMOPHIF - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(OUT) :: MIJ - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: CGROUP + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: CIWA + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: CINV + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL, NFRE), INTENT(IN) :: STOKFAC + + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: EMAXDPT + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: DEPTH + INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(IN) :: IODP + INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(IN) :: IOBND + + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: AIRD, WDWAVE, CICOVER, WSWAVE, WSTAR, USTRA, VSTRA + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: UFRIC, TAUW, TAUWDIR, Z0M, Z0B, CHRNCK, CITHICK + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: WSEMEAN, WSFMEAN, USTOKES, VSTOKES, STRNMS + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: TAUXD, TAUYD, TAUOCXD, TAUOCYD, TAUOC, PHIOCD + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: PHIEPS, PHIAW + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NEMOUSTOKES, NEMOVSTOKES, NEMOSTRN + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NPHIEPS, NTAUOC, NSWH, NMWP, NEMOTAUX + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NEMOTAUY, NEMOWSWAVE, NEMOPHIF + INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(OUT) :: MIJ + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS INTEGER(KIND=JWIM) :: IJ, K, M @@ -142,23 +142,23 @@ SUBROUTINE IMPLSCH (KIJS, KIJL, FL1, & REAL(KIND=JWRB) :: GTEMP1, GTEMP2, FLHAB REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: DELFL(NFRE) - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: RAORW - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: EMEAN, FMEAN, HALP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: EMEANWS, FMEANWS, USFM, GADIAG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: F1MEAN, AKMEAN, XKMEAN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: PHIWA - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: DPTHREDUC - - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG) :: FLM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: TEMP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: RHOWGDFTH + REAL(KIND=JWRB), DIMENSION(KIJL) :: RAORW + REAL(KIND=JWRB), DIMENSION(KIJL) :: EMEAN, FMEAN, HALP + REAL(KIND=JWRB), DIMENSION(KIJL) :: EMEANWS, FMEANWS, USFM, GADIAG + REAL(KIND=JWRB), DIMENSION(KIJL) :: F1MEAN, AKMEAN, XKMEAN + REAL(KIND=JWRB), DIMENSION(KIJL) :: PHIWA + REAL(KIND=JWRB), DIMENSION(KIJL) :: DPTHREDUC + + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: FLM + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: TEMP + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: RHOWGDFTH ! *FLD* DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE ! *SL* TOTAL SOURCE FUNCTION ARRAY. ! *SPOS* : POSITIVE SINPUT ONLY - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: FLD, SL, SPOS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: CIREDUC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: SSOURCE + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: FLD, SL, SPOS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: CIREDUC + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: SSOURCE LOGICAL :: LCFLX LOGICAL :: LUPDTUS diff --git a/src/ecwam/meansqs_gc.F90 b/src/ecwam/meansqs_gc.F90 index 9ab3aba1..2d022eb7 100644 --- a/src/ecwam/meansqs_gc.F90 +++ b/src/ecwam/meansqs_gc.F90 @@ -38,16 +38,16 @@ SUBROUTINE MEANSQS_GC(XKMSS, KIJS, KIJL, HALP, USTAR, XMSSCG, FRGC) INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL REAL(KIND=JWRB), INTENT(IN) :: XKMSS ! WAVE NUMBER CUT-OFF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: HALP ! 1/2 Phillips parameter - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: USTAR ! friction velocity - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: XMSSCG ! mean square slope for gravity-capillary waves - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: FRGC ! Frequency from which the gravity-capillary spectrum is approximated + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: HALP ! 1/2 Phillips parameter + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: USTAR ! friction velocity + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: XMSSCG ! mean square slope for gravity-capillary waves + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: FRGC ! Frequency from which the gravity-capillary spectrum is approximated INTEGER(KIND=JWIM) :: IJ, I, NE - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL) :: NS + INTEGER(KIND=JWIM), DIMENSION(KIJL) :: NS REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XKS, OMS, COEF + REAL(KIND=JWRB), DIMENSION(KIJL) :: XKS, OMS, COEF ! INCLUDE FUNCTIONS FROM GRAVITY-CAPILLARY DISPERSION REALTIONS #include "gc_dispersion.h" diff --git a/src/ecwam/meansqs_lf.F90 b/src/ecwam/meansqs_lf.F90 index 775c5a66..19a56fbb 100644 --- a/src/ecwam/meansqs_lf.F90 +++ b/src/ecwam/meansqs_lf.F90 @@ -60,16 +60,16 @@ SUBROUTINE MEANSQS_LF(NFRE_EFF, KIJS, KIJL, F, WAVNUM, XMSS) INTEGER(KIND=JWIM), INTENT(IN) :: NFRE_EFF INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: F - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: XMSS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: F + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: XMSS INTEGER(KIND=JWIM) :: IJ, M, K, KFRE REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB), DIMENSION(NFRE) :: FD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP1, TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: TEMP1, TEMP2 ! ---------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('MEANSQS_LF',0,ZHOOK_HANDLE) diff --git a/src/ecwam/omegagc.F90 b/src/ecwam/omegagc.F90 index 7a73c1f3..f6da1d66 100644 --- a/src/ecwam/omegagc.F90 +++ b/src/ecwam/omegagc.F90 @@ -33,10 +33,10 @@ SUBROUTINE OMEGAGC(KIJS, KIJL, UST, NS, XKS, OMS) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: UST -INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(OUT) :: NS ! index in array XK_GC corresponding to XKS and OMS -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: XKS ! cut-off wave number -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: OMS ! cut-off angular frequency +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: UST +INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(OUT) :: NS ! index in array XK_GC corresponding to XKS and OMS +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: XKS ! cut-off wave number +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: OMS ! cut-off angular frequency INTEGER(KIND=JWIM) :: IJ diff --git a/src/ecwam/peak_ang.F90 b/src/ecwam/peak_ang.F90 index dc297fc4..15452210 100644 --- a/src/ecwam/peak_ang.F90 +++ b/src/ecwam/peak_ang.F90 @@ -53,21 +53,21 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: XNU, SIG_TH + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: XNU, SIG_TH INTEGER(KIND=JWIM) :: NSH INTEGER(KIND=JWIM) :: IJ, M, K - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL) :: MMAX + INTEGER(KIND=JWIM), DIMENSION(KIJL) :: MMAX INTEGER(KIND=JWIM) :: MMSTART, MMSTOP REAL(KIND=JWRB), PARAMETER :: CONST_SIG = 1.0_JWRB REAL(KIND=JWRB) :: R1 REAL(KIND=JWRB) :: DELT25, COEF_FR, COEF_FR2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: ZEPSILON - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: SUM0, SUM1, SUM2, SUM4, XMAX, TEMP - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: THMEAN, SUM_S, SUM_C + REAL(KIND=JWRB),DIMENSION(KIJL) :: SUM0, SUM1, SUM2, SUM4, XMAX, TEMP + REAL(KIND=JWRB),DIMENSION(KIJL) :: THMEAN, SUM_S, SUM_C ! ---------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('PEAK_ANG',0,ZHOOK_HANDLE) diff --git a/src/ecwam/sbottom.F90 b/src/ecwam/sbottom.F90 index 607f58c2..fd4c671d 100644 --- a/src/ecwam/sbottom.F90 +++ b/src/ecwam/sbottom.F90 @@ -61,16 +61,16 @@ SUBROUTINE SBOTTOM (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: DEPTH + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: DEPTH INTEGER(KIND=JWIM):: IJ, K, M REAL(KIND=JWRB) :: CONST, ARG REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SBO + REAL(KIND=JWRB), DIMENSION(KIJL) :: SBO ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sdepthlim.F90 b/src/ecwam/sdepthlim.F90 index 742bbfe2..0e324580 100644 --- a/src/ecwam/sdepthlim.F90 +++ b/src/ecwam/sdepthlim.F90 @@ -49,12 +49,12 @@ SUBROUTINE SDEPTHLIM(KIJS, KIJL, EMAXDPT, FL1) #include "semean.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: EMAXDPT - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG, NFRE), INTENT(INOUT) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: EMAXDPT + REAL(KIND=JWRB), DIMENSION(KIJL, NANG, NFRE), INTENT(INOUT) :: FL1 INTEGER(KIND=JWIM) :: IJ, K, M REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: EM + REAL(KIND=JWRB), DIMENSION(KIJL) :: EM LOGICAL :: LLEPSMIN ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sdissip.F90 b/src/ecwam/sdissip.F90 index f61ab848..6a1ef58d 100644 --- a/src/ecwam/sdissip.F90 +++ b/src/ecwam/sdissip.F90 @@ -60,12 +60,12 @@ SUBROUTINE SDISSIP (KIJS, KIJL, FL1, FLD, SL, & #include "sdissip_jan.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: EMEAN, F1MEAN, XKMEAN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: UFRIC, RAORW - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: EMEAN, F1MEAN, XKMEAN + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: UFRIC, RAORW + REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF REAL(KIND=JPHOOK) :: ZHOOK_HANDLE diff --git a/src/ecwam/sdissip_ard.F90 b/src/ecwam/sdissip_ard.F90 index 1f939fb4..6b5865b8 100644 --- a/src/ecwam/sdissip_ard.F90 +++ b/src/ecwam/sdissip_ard.F90 @@ -78,11 +78,11 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: UFRIC, RAORW - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CGROUP, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: UFRIC, RAORW + REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF INTEGER(KIND=JWIM) :: IJ, K, M, I, J, M2, K2, KK, NANGD @@ -95,16 +95,16 @@ SUBROUTINE SDISSIP_ARD (KIJS, KIJL, FL1, FLD, SL, & REAL(KIND=JWRB) :: SSDSC2_SIG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: FACTURB - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: FACSAT, FACWTRB, TEMP1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: BTH0 !saturation spectrum - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: C_, C_C, DSIP, TRPZ_DSIP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: BTH !saturation spectrum - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: TEMP2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: D - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: SCUMUL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE) :: RENEWALFREQ - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,0:NANG/2,NFRE) :: WCUMUL + REAL(KIND=JWRB), DIMENSION(KIJL) :: FACTURB + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: FACSAT, FACWTRB, TEMP1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: BTH0 !saturation spectrum + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: C_, C_C, DSIP, TRPZ_DSIP + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: BTH !saturation spectrum + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: D + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: SCUMUL + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE) :: RENEWALFREQ + REAL(KIND=JWRB), DIMENSION(KIJL,0:NANG/2,NFRE) :: WCUMUL ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sdissip_jan.F90 b/src/ecwam/sdissip_jan.F90 index a33910e1..75f6c199 100644 --- a/src/ecwam/sdissip_jan.F90 +++ b/src/ecwam/sdissip_jan.F90 @@ -79,18 +79,18 @@ SUBROUTINE SDISSIP_JAN (KIJS, KIJL, FL1, FLD, SL, & INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT):: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN):: EMEAN, F1MEAN, XKMEAN + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT):: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN):: EMEAN, F1MEAN, XKMEAN INTEGER(KIND=JWIM) :: IJ, K, M REAL(KIND=JWRB) :: SCDFM, CONSD, CONSS, DELTA_SDISM1, CVIS REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: CM, TEMP1, SDS, X - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: XK2 + REAL(KIND=JWRB),DIMENSION(KIJL) :: CM, TEMP1, SDS, X + REAL(KIND=JWRB),DIMENSION(KIJL) :: XK2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sdiwbk.F90 b/src/ecwam/sdiwbk.F90 index 6280df44..ee2a4ba5 100644 --- a/src/ecwam/sdiwbk.F90 +++ b/src/ecwam/sdiwbk.F90 @@ -61,15 +61,15 @@ SUBROUTINE SDIWBK (KIJS, KIJL, FL1, FLD, SL, DEPTH, EMAXDPT, EMEAN, F1MEAN) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG, NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG, NFRE), INTENT(INOUT) :: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL),INTENT(IN):: DEPTH, EMAXDPT, EMEAN, F1MEAN + REAL(KIND=JWRB), DIMENSION(KIJL, NANG, NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL, NANG, NFRE), INTENT(INOUT) :: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL),INTENT(IN):: DEPTH, EMAXDPT, EMEAN, F1MEAN INTEGER(KIND=JWIM) :: IJ, K, M, IC REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: ALPH, ARG, Q, Q_OLD, REL_ERR, EXPQ - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL) :: SDS + REAL(KIND=JWRB),DIMENSION(KIJL) :: SDS REAL, PARAMETER :: ALPH_B_J = 1.0_JWRB REAL, PARAMETER :: COEF_B_J=2*ALPH_B_J diff --git a/src/ecwam/semean.F90 b/src/ecwam/semean.F90 index a9a8e104..76d3b8eb 100644 --- a/src/ecwam/semean.F90 +++ b/src/ecwam/semean.F90 @@ -60,9 +60,9 @@ SUBROUTINE SEMEAN (FL1, KIJS, KIJL, EM, LLEPSMIN) IMPLICIT NONE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG, NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL, NANG, NFRE), INTENT(IN) :: FL1 INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: EM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: EM LOGICAL, INTENT(IN) :: LLEPSMIN @@ -70,7 +70,7 @@ SUBROUTINE SEMEAN (FL1, KIJS, KIJL, EM, LLEPSMIN) REAL(KIND=JWRB) :: DELT25 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TEMP + REAL(KIND=JWRB), DIMENSION(KIJL) :: TEMP ! ---------------------------------------------------------------------- diff --git a/src/ecwam/setice.F90 b/src/ecwam/setice.F90 index 6d0f8760..05634a4c 100644 --- a/src/ecwam/setice.F90 +++ b/src/ecwam/setice.F90 @@ -48,15 +48,15 @@ SUBROUTINE SETICE (KIJS, KIJL, FL1, CICOVER, COSWDIF) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG, NFRE), INTENT(INOUT) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: CICOVER - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: COSWDIF + REAL(KIND=JWRB), DIMENSION(KIJL, NANG, NFRE), INTENT(INOUT) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: CICOVER + REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: COSWDIF INTEGER(KIND=JWIM) :: IJ, M, K REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CIREDUC, TEMP, ICEFREE + REAL(KIND=JWRB), DIMENSION(KIJL) :: CIREDUC, TEMP, ICEFREE ! ---------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('SETICE',0,ZHOOK_HANDLE) diff --git a/src/ecwam/sinflx.F90 b/src/ecwam/sinflx.F90 index 2644c7f4..d300bbc6 100644 --- a/src/ecwam/sinflx.F90 +++ b/src/ecwam/sinflx.F90 @@ -53,39 +53,39 @@ SUBROUTINE SINFLX (ICALL, NCALL, KIJS, KIJL, & LOGICAL, INTENT(IN) :: LUPDTUS !! IF TRUE UFRIC AND Z0M WILL BE UPDATED (CALLING AIRSEA). -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 !! WAVE SPECTRUM. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM !! WAVE NUMBER. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: CINV !! INVERSE PHASE VELOCITY. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: XK2CG !! (WAVNUM)**2 * GROUP SPPED. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: WSWAVE !! WIND SPEED IN M/S. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WDWAVE !! WIND DIRECTION IN RADIANS IN OCEANOGRAPHIC NOTATION. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: AIRD !! AIR DENSITY (KG/M**3). -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: RAORW !! RATIO AIR DENSITY TO WATER DENSITY. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WSTAR !! FREE CONVECTION VELOCITY SCALE (M/S) -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: CICOVER !! SEA ICE COVER. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF !! COS(TH(K)-WDWAVE(IJ)) -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: SINWDIF2 !! SIN(TH(K)-WDWAVE(IJ))**2 -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: FMEAN !! MEAN FREQUENCY. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: HALP !! 1/2 PHILLIPS PARAMETER -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: FMEANWS !! MEAN FREQUENCY OF THE WINDSEA. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: FLM !! SPECTAL DENSITY MINIMUM VALUE -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: UFRIC !! FRICTION VELOCITY IN M/S. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: TAUW !! WAVE STRESS IN (M/S)**2 -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: TAUWDIR !! WAVE STRESS DIRECTION. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: Z0M !! ROUGHNESS LENGTH IN M. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: Z0B !! BACKGROUND ROUGHNESS LENGTH. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: CHRNCK !! CHARNOCK COEFFICIENT. - -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: PHIWA !! ENERGY FLUX FROM WIND INTO WAVES. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: FLD !! DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: SL !! TOTAL SOURCE FUNCTION ARRAY. -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: SPOS !! POSITIVE SINPUT ONLY. - -INTEGER(KIND=JWIM), INTENT(OUT) :: MIJ(KIJS:KIJL) !! LAST FREQUENCY INDEX OF THE PROGNOSTIC RANGE. - -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(OUT) :: RHOWGDFTH !! WATER DENSITY * G * DF * DTHETA - -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS !! TOTAL WINDSEA MASK FROM INPUT SOURCE TERM. +REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT) :: FL1 !! WAVE SPECTRUM. +REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM !! WAVE NUMBER. +REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: CINV !! INVERSE PHASE VELOCITY. +REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: XK2CG !! (WAVNUM)**2 * GROUP SPPED. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: WSWAVE !! WIND SPEED IN M/S. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WDWAVE !! WIND DIRECTION IN RADIANS IN OCEANOGRAPHIC NOTATION. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: AIRD !! AIR DENSITY (KG/M**3). +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: RAORW !! RATIO AIR DENSITY TO WATER DENSITY. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WSTAR !! FREE CONVECTION VELOCITY SCALE (M/S) +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: CICOVER !! SEA ICE COVER. +REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF !! COS(TH(K)-WDWAVE(IJ)) +REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: SINWDIF2 !! SIN(TH(K)-WDWAVE(IJ))**2 +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: FMEAN !! MEAN FREQUENCY. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: HALP !! 1/2 PHILLIPS PARAMETER +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: FMEANWS !! MEAN FREQUENCY OF THE WINDSEA. +REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: FLM !! SPECTAL DENSITY MINIMUM VALUE +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: UFRIC !! FRICTION VELOCITY IN M/S. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: TAUW !! WAVE STRESS IN (M/S)**2 +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: TAUWDIR !! WAVE STRESS DIRECTION. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: Z0M !! ROUGHNESS LENGTH IN M. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: Z0B !! BACKGROUND ROUGHNESS LENGTH. +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: CHRNCK !! CHARNOCK COEFFICIENT. + +REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: PHIWA !! ENERGY FLUX FROM WIND INTO WAVES. +REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: FLD !! DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE. +REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: SL !! TOTAL SOURCE FUNCTION ARRAY. +REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: SPOS !! POSITIVE SINPUT ONLY. + +INTEGER(KIND=JWIM), INTENT(OUT) :: MIJ(KIJL) !! LAST FREQUENCY INDEX OF THE PROGNOSTIC RANGE. + +REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(OUT) :: RHOWGDFTH !! WATER DENSITY * G * DF * DTHETA + +REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS !! TOTAL WINDSEA MASK FROM INPUT SOURCE TERM. INTEGER(KIND=JWIM) :: IJ, K @@ -93,7 +93,7 @@ SUBROUTINE SINFLX (ICALL, NCALL, KIJS, KIJL, & INTEGER(KIND=JWIM) :: NGST REAL(KIND=JPHOOK) :: ZHOOK_HANDLE -REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: RNFAC +REAL(KIND=JWRB), DIMENSION(KIJL) :: RNFAC LOGICAL :: LLPHIWA, LLSNEG diff --git a/src/ecwam/sinput.F90 b/src/ecwam/sinput.F90 index 655fef3e..d873d906 100644 --- a/src/ecwam/sinput.F90 +++ b/src/ecwam/sinput.F90 @@ -83,15 +83,15 @@ SUBROUTINE SINPUT (NGST, LLSNEG, KIJS, KIJL, FL1, & LOGICAL, INTENT(IN) :: LLSNEG INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WDWAVE, WSWAVE, UFRIC, Z0M - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WDWAVE, WSWAVE, UFRIC, Z0M + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS REAL(KIND=JPHOOK) :: ZHOOK_HANDLE diff --git a/src/ecwam/sinput_ard.F90 b/src/ecwam/sinput_ard.F90 index c89558e2..21c3b904 100644 --- a/src/ecwam/sinput_ard.F90 +++ b/src/ecwam/sinput_ard.F90 @@ -103,13 +103,13 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & INTEGER(KIND=JWIM), INTENT(IN) :: NGST LOGICAL, INTENT(IN) :: LLSNEG INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WDWAVE, WSWAVE, UFRIC, Z0M - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WDWAVE, WSWAVE, UFRIC, Z0M + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS INTEGER(KIND=JWIM) :: IJ, K, M, IND, IGST @@ -127,22 +127,22 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & REAL(KIND=JWRB) :: DSTAB2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB), DIMENSION(NFRE) :: CONST, SIG, SIGM1, SIG2, COEF, COEF5, DFIM_SIG2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CONSTF, CONST11, CONST22 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: Z0VIS, Z0NOZ, FWW - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: PVISC, PTURB - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ZCN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SIG_N, UORBT, AORB, TEMP, RE, RE_C, ZORB - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CNSN, SUMF, SUMFSIN2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CSTRNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: FLP_AVG, SLP_AVG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ROGOROAIR, AIRD_PVISC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: XSTRESS, YSTRESS, FLP, SLP - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: USG2, TAUX, TAUY, USTP, USTPM1, USDIRP, UCN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: UCNZALPD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: XNGAMCONST - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: DSTAB1, TEMP1, TEMP2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NGST) :: COSLP, GAM0, DSTAB + REAL(KIND=JWRB), DIMENSION(KIJL) :: CONSTF, CONST11, CONST22 + REAL(KIND=JWRB), DIMENSION(KIJL) :: Z0VIS, Z0NOZ, FWW + REAL(KIND=JWRB), DIMENSION(KIJL) :: PVISC, PTURB + REAL(KIND=JWRB), DIMENSION(KIJL) :: ZCN + REAL(KIND=JWRB), DIMENSION(KIJL) :: SIG_N, UORBT, AORB, TEMP, RE, RE_C, ZORB + REAL(KIND=JWRB), DIMENSION(KIJL) :: CNSN, SUMF, SUMFSIN2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: CSTRNFAC + REAL(KIND=JWRB), DIMENSION(KIJL) :: FLP_AVG, SLP_AVG + REAL(KIND=JWRB), DIMENSION(KIJL) :: ROGOROAIR, AIRD_PVISC + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: XSTRESS, YSTRESS, FLP, SLP + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: USG2, TAUX, TAUY, USTP, USTPM1, USDIRP, UCN + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: UCNZALPD + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: XNGAMCONST + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE + REAL(KIND=JWRB), DIMENSION(KIJL) :: DSTAB1, TEMP1, TEMP2 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NGST) :: COSLP, GAM0, DSTAB LOGICAL :: LTAUWSHELTER ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sinput_jan.F90 b/src/ecwam/sinput_jan.F90 index fc7319b3..965f58e8 100644 --- a/src/ecwam/sinput_jan.F90 +++ b/src/ecwam/sinput_jan.F90 @@ -136,13 +136,13 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & INTEGER(KIND=JWIM), INTENT(IN) :: NGST LOGICAL, INTENT(IN) :: LLSNEG INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WSWAVE, UFRIC, Z0M - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG), INTENT(IN) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, CINV, XK2CG + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WSWAVE, UFRIC, Z0M + REAL(KIND=JWRB), DIMENSION(KIJL,NANG), INTENT(IN) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: RAORW, WSTAR, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: FLD, SL, SPOS + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(OUT) :: XLLWS INTEGER(KIND=JWIM) :: IJ, IG, K, M @@ -155,21 +155,21 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB), DIMENSION(NGST) :: WSIN REAL(KIND=JWRB), DIMENSION(NFRE) :: CONST - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ZTANHKD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SIG_N - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CNSN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SUMF, SUMFSIN2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CSTRNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE) :: XNGAMCONST - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: SIGDEV ,US, Z0, UCN, ZCN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: USTPM1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NGST) :: XVD, UCND, CONST3_UCN2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG) :: UFAC1, UFAC2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG) :: TEMPD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NGST) :: GAM0 - - LOGICAL, DIMENSION(KIJS:KIJL,NANG) :: LZ + REAL(KIND=JWRB), DIMENSION(KIJL) :: ZTANHKD + REAL(KIND=JWRB), DIMENSION(KIJL) :: SIG_N + REAL(KIND=JWRB), DIMENSION(KIJL) :: CNSN + REAL(KIND=JWRB), DIMENSION(KIJL) :: SUMF, SUMFSIN2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: CSTRNFAC + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: XNGAMCONST + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: SIGDEV ,US, Z0, UCN, ZCN + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: USTPM1 + REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: XVD, UCND, CONST3_UCN2 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: UFAC1, UFAC2 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: TEMPD + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NGST) :: GAM0 + + LOGICAL, DIMENSION(KIJL,NANG) :: LZ ! ---------------------------------------------------------------------- diff --git a/src/ecwam/snonlin.F90 b/src/ecwam/snonlin.F90 index b50ba7fc..94fa37d7 100644 --- a/src/ecwam/snonlin.F90 +++ b/src/ecwam/snonlin.F90 @@ -88,10 +88,10 @@ SUBROUTINE SNONLIN (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH, AKMEAN) #include "transf_snl.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(INOUT):: FLD, SL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: DEPTH, AKMEAN + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(INOUT):: FLD, SL + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: DEPTH, AKMEAN INTEGER(KIND=JWIM) :: IJ, K, M, MC, KH, K1, K2, K11, K21 @@ -101,7 +101,7 @@ SUBROUTINE SNONLIN (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH, AKMEAN) REAL(KIND=JWRB), PARAMETER :: ENH_MAX=10.0_JWRB REAL(KIND=JWRB), PARAMETER :: ENH_MIN=0.1_JWRB ! to prevent ENH to become too small REAL(KIND=JWRB) :: XK - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,MLSTHG) :: ENH + REAL(KIND=JWRB), DIMENSION(KIJL,MLSTHG) :: ENH REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: FTAIL, FKLAMP, GW1, GW2, GW3, GW4 @@ -111,8 +111,8 @@ SUBROUTINE SNONLIN (KIJS, KIJL, FL1, FLD, SL, WAVNUM, DEPTH, AKMEAN) REAL(KIND=JWRB) :: FKLAMA2, FKLAMB2, FKLAM12, FKLAM22 REAL(KIND=JWRB) :: SAP, SAM, FIJ, FAD1, FAD2, FCEN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XNU, SIG_TH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: FTEMP, AD, DELAD, DELAP, DELAM, ENHFR + REAL(KIND=JWRB), DIMENSION(KIJL) :: XNU, SIG_TH + REAL(KIND=JWRB), DIMENSION(KIJL) :: FTEMP, AD, DELAD, DELAP, DELAM, ENHFR ! ---------------------------------------------------------------------- diff --git a/src/ecwam/stokesdrift.F90 b/src/ecwam/stokesdrift.F90 index bd2cf166..e1348dbd 100644 --- a/src/ecwam/stokesdrift.F90 +++ b/src/ecwam/stokesdrift.F90 @@ -65,10 +65,10 @@ SUBROUTINE STOKESDRIFT(KIJS, KIJL, FL1, STOKFAC, WSWAVE, WDWAVE, CICOVER, USTOKE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: STOKFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WSWAVE, WDWAVE, CICOVER - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: USTOKES, VSTOKES + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: STOKFAC + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WSWAVE, WDWAVE, CICOVER + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: USTOKES, VSTOKES INTEGER(KIND=JWIM) :: IJ, M, K @@ -76,7 +76,7 @@ SUBROUTINE STOKESDRIFT(KIJS, KIJL, FL1, STOKFAC, WSWAVE, WDWAVE, CICOVER, USTOKE REAL(KIND=JWRB), PARAMETER :: STMAX=1.5_JWRB ! maximum magnitude (this is for safety when coupled) REAL(KIND=JWRB) :: CONST, FAC, FAC1, FAC2, FAC3 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: STFAC + REAL(KIND=JWRB), DIMENSION(KIJL) :: STFAC ! ---------------------------------------------------------------------- diff --git a/src/ecwam/stokestrn.F90 b/src/ecwam/stokestrn.F90 index 933e9916..ee16feab 100644 --- a/src/ecwam/stokestrn.F90 +++ b/src/ecwam/stokestrn.F90 @@ -50,12 +50,12 @@ SUBROUTINE STOKESTRN (KIJS, KIJL, FL1, WAVNUM, STOKFAC, DEPTH, WSWAVE, WDWAVE, C INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: WAVNUM, STOKFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: DEPTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WSWAVE, WDWAVE, CICOVER, CITHICK - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: USTOKES, VSTOKES, STRNMS - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NEMOUSTOKES, NEMOVSTOKES, NEMOSTRN + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: WAVNUM, STOKFAC + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: DEPTH + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WSWAVE, WDWAVE, CICOVER, CITHICK + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: USTOKES, VSTOKES, STRNMS + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NEMOUSTOKES, NEMOVSTOKES, NEMOSTRN REAL(KIND=JPHOOK) :: ZHOOK_HANDLE diff --git a/src/ecwam/stresso.F90 b/src/ecwam/stresso.F90 index 81ad3d5c..b7ccd9f8 100644 --- a/src/ecwam/stresso.F90 +++ b/src/ecwam/stresso.F90 @@ -94,13 +94,13 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & #include "tau_phi_hf.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - INTEGER(KIND=JWIM), INTENT(IN) :: MIJ(KIJS:KIJL) - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: RHOWGDFTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1, SL, SPOS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: CINV - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WDWAVE, UFRIC, Z0M, AIRD, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: TAUW, TAUWDIR, PHIWA + INTEGER(KIND=JWIM), INTENT(IN) :: MIJ(KIJL) + REAL(KIND=JWRB),DIMENSION(KIJL,NFRE), INTENT(IN) :: RHOWGDFTH + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1, SL, SPOS + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: CINV + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WDWAVE, UFRIC, Z0M, AIRD, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: TAUW, TAUWDIR, PHIWA LOGICAL, INTENT(IN) :: LLPHIWA @@ -109,12 +109,12 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & REAL(KIND=JWRB) :: TAUTOUS2 REAL(KIND=JWRB) :: COSW, FCOSW2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XSTRESS, YSTRESS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TAUHF, PHIHF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CMRHOWGDFTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: US2, TAUX, TAUY, TAUPX, TAUPY - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: USDIRP, UST - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SUMT, SUMX, SUMY + REAL(KIND=JWRB), DIMENSION(KIJL) :: XSTRESS, YSTRESS + REAL(KIND=JWRB), DIMENSION(KIJL) :: TAUHF, PHIHF + REAL(KIND=JWRB), DIMENSION(KIJL) :: CMRHOWGDFTH + REAL(KIND=JWRB), DIMENSION(KIJL) :: US2, TAUX, TAUY, TAUPX, TAUPY + REAL(KIND=JWRB), DIMENSION(KIJL) :: USDIRP, UST + REAL(KIND=JWRB), DIMENSION(KIJL) :: SUMT, SUMX, SUMY LOGICAL :: LTAUWSHELTER diff --git a/src/ecwam/tau_phi_hf.F90 b/src/ecwam/tau_phi_hf.F90 index a91d6913..50f72d30 100644 --- a/src/ecwam/tau_phi_hf.F90 +++ b/src/ecwam/tau_phi_hf.F90 @@ -85,19 +85,19 @@ SUBROUTINE TAU_PHI_HF(KIJS, KIJL, MIJ, LTAUWSHELTER, UFRIC, Z0M, & #include "omegagc.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - INTEGER(KIND=JWIM), INTENT(IN) :: MIJ(KIJS:KIJL) + INTEGER(KIND=JWIM), INTENT(IN) :: MIJ(KIJL) LOGICAL, INTENT(IN) :: LTAUWSHELTER - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: UFRIC, Z0M - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: FL1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: AIRD, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: UST - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: TAUHF, PHIHF + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: UFRIC, Z0M + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: FL1 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: AIRD, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL, NANG), INTENT(IN) :: COSWDIF, SINWDIF2 + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: UST + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: TAUHF, PHIHF LOGICAL, INTENT(IN) :: LLPHIHF INTEGER(KIND=JWIM) :: J, IJ, K - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL) :: NS + INTEGER(KIND=JWIM), DIMENSION(KIJL) :: NS REAL(KIND=JWRB), PARAMETER :: ZSUPMAX = 0.0_JWRB ! LOG(1.) REAL(KIND=JWRB) :: OMEGA, OMEGACC @@ -109,13 +109,13 @@ SUBROUTINE TAU_PHI_HF(KIJS, KIJL, MIJ, LTAUWSHELTER, UFRIC, Z0M, & REAL(KIND=JWRB) :: COSW, FCOSW2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XKS, OMS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SQRTZ0OG, ZSUP, ZINF, DELZ - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TAUL, XLOGGZ0, SQRTGZ0 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: USTPH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CONST1, CONST2, CONSTTAU, CONSTPHI - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: F1DCOS2, F1DCOS3 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: F1D, F1DSIN2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: XKS, OMS + REAL(KIND=JWRB), DIMENSION(KIJL) :: SQRTZ0OG, ZSUP, ZINF, DELZ + REAL(KIND=JWRB), DIMENSION(KIJL) :: TAUL, XLOGGZ0, SQRTGZ0 + REAL(KIND=JWRB), DIMENSION(KIJL) :: USTPH + REAL(KIND=JWRB), DIMENSION(KIJL) :: CONST1, CONST2, CONSTTAU, CONSTPHI + REAL(KIND=JWRB), DIMENSION(KIJL) :: F1DCOS2, F1DCOS3 + REAL(KIND=JWRB), DIMENSION(KIJL) :: F1D, F1DSIN2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/taut_z0.F90 b/src/ecwam/taut_z0.F90 index c99c8e9f..ec10fad0 100644 --- a/src/ecwam/taut_z0.F90 +++ b/src/ecwam/taut_z0.F90 @@ -85,9 +85,9 @@ SUBROUTINE TAUT_Z0(KIJS, KIJL, IUSFG, & #include "stress_gc.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL, IUSFG - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: HALP, UTOP, UDIR, TAUW, TAUWDIR, RNFAC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: USTAR - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: Z0, Z0B, CHRNCK + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: HALP, UTOP, UDIR, TAUW, TAUWDIR, RNFAC + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: USTAR + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: Z0, Z0B, CHRNCK INTEGER(KIND=JWIM), PARAMETER :: NITER=17 @@ -116,12 +116,12 @@ SUBROUTINE TAUT_Z0(KIJS, KIJL, IUSFG, & REAL(KIND=JWRB) :: CONST, TAUV, DEL REAL(KIND=JWRB) :: RNUEFF, RNUKAPPAM1 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ALPHAOG, XMIN - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: W1 - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: TAUWACT, TAUWEFF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ANG_GC, ALPHAP, TAUUNR + REAL(KIND=JWRB), DIMENSION(KIJL) :: ALPHAOG, XMIN + REAL(KIND=JWRB), DIMENSION(KIJL) :: W1 + REAL(KIND=JWRB), DIMENSION(KIJL) :: TAUWACT, TAUWEFF + REAL(KIND=JWRB), DIMENSION(KIJL) :: ANG_GC, ALPHAP, TAUUNR - LOGICAL, DIMENSION(KIJS:KIJL) :: LLCOSDIFF + LOGICAL, DIMENSION(KIJL) :: LLCOSDIFF ! ---------------------------------------------------------------------- diff --git a/src/ecwam/wnfluxes.F90 b/src/ecwam/wnfluxes.F90 index 80257e95..6dd9de75 100644 --- a/src/ecwam/wnfluxes.F90 +++ b/src/ecwam/wnfluxes.F90 @@ -83,20 +83,20 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - INTEGER(KIND=JWIM), DIMENSION(KIJS:KIJL), INTENT(IN) :: MIJ - - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: RHOWGDFTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NFRE), INTENT(IN) :: CINV - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL,NANG,NFRE), INTENT(IN) :: SSURF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: CICOVER - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: PHIWA - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: EM, F1, WSWAVE, WDWAVE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: USTRA, VSTRA - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: UFRIC, AIRD - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: TAUXD, TAUYD, TAUOCXD, TAUOCYD, TAUOC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: PHIOCD, PHIEPS, PHIAW - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NPHIEPS, NTAUOC, NSWH, NMWP, NEMOTAUX - REAL(KIND=JWRO), DIMENSION(KIJS:KIJL), INTENT(INOUT) :: NEMOTAUY, NEMOWSWAVE, NEMOPHIF + INTEGER(KIND=JWIM), DIMENSION(KIJL), INTENT(IN) :: MIJ + + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: RHOWGDFTH + REAL(KIND=JWRB), DIMENSION(KIJL,NFRE), INTENT(IN) :: CINV + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NFRE), INTENT(IN) :: SSURF + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: CICOVER + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: PHIWA + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: EM, F1, WSWAVE, WDWAVE + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: USTRA, VSTRA + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: UFRIC, AIRD + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: TAUXD, TAUYD, TAUOCXD, TAUOCYD, TAUOC + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(INOUT) :: PHIOCD, PHIEPS, PHIAW + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NPHIEPS, NTAUOC, NSWH, NMWP, NEMOTAUX + REAL(KIND=JWRO), DIMENSION(KIJL), INTENT(INOUT) :: NEMOTAUY, NEMOWSWAVE, NEMOPHIF LOGICAL, INTENT(IN) :: LNUPD @@ -125,13 +125,13 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & REAL(KIND=JWRB) :: EFD, FFD, EFD_FAC, FFD_FAC REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: XSTRESS, YSTRESS - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: USTAR - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: PHILF - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: OOVAL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: EM_OC, F1_OC - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: CMRHOWGDFTH - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: SUMT, SUMX, SUMY + REAL(KIND=JWRB), DIMENSION(KIJL) :: XSTRESS, YSTRESS + REAL(KIND=JWRB), DIMENSION(KIJL) :: USTAR + REAL(KIND=JWRB), DIMENSION(KIJL) :: PHILF + REAL(KIND=JWRB), DIMENSION(KIJL) :: OOVAL + REAL(KIND=JWRB), DIMENSION(KIJL) :: EM_OC, F1_OC + REAL(KIND=JWRB), DIMENSION(KIJL) :: CMRHOWGDFTH + REAL(KIND=JWRB), DIMENSION(KIJL) :: SUMT, SUMX, SUMY ! ---------------------------------------------------------------------- diff --git a/src/ecwam/wsigstar.F90 b/src/ecwam/wsigstar.F90 index 7df1a577..7059de31 100644 --- a/src/ecwam/wsigstar.F90 +++ b/src/ecwam/wsigstar.F90 @@ -60,8 +60,8 @@ SUBROUTINE WSIGSTAR (KIJS, KIJL, WSWAVE, UFRIC, Z0M, WSTAR, SIG_N) IMPLICIT NONE INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(IN) :: WSWAVE, UFRIC, Z0M, WSTAR - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL), INTENT(OUT) :: SIG_N + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(IN) :: WSWAVE, UFRIC, Z0M, WSTAR + REAL(KIND=JWRB), DIMENSION(KIJL), INTENT(OUT) :: SIG_N INTEGER(KIND=JWIM) :: IJ diff --git a/src/ecwam/z0wave.F90 b/src/ecwam/z0wave.F90 index a7fa4391..79e6f9ff 100644 --- a/src/ecwam/z0wave.F90 +++ b/src/ecwam/z0wave.F90 @@ -61,14 +61,14 @@ SUBROUTINE Z0WAVE (KIJS, KIJL, US, TAUW, UTOP, Z0, Z0B, CHRNCK) #include "chnkmin.intfb.h" INTEGER(KIND=JWIM), INTENT(IN) :: KIJS, KIJL - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL),INTENT(IN) :: US, TAUW, UTOP - REAL(KIND=JWRB),DIMENSION(KIJS:KIJL),INTENT(OUT) :: Z0, Z0B, CHRNCK + REAL(KIND=JWRB),DIMENSION(KIJL),INTENT(IN) :: US, TAUW, UTOP + REAL(KIND=JWRB),DIMENSION(KIJL),INTENT(OUT) :: Z0, Z0B, CHRNCK INTEGER(KIND=JWIM) :: IJ REAL(KIND=JWRB) :: UST2, UST3, ARG REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(KIJS:KIJL) :: ALPHAOG + REAL(KIND=JWRB), DIMENSION(KIJL) :: ALPHAOG ! ---------------------------------------------------------------------- From 6f9400ffc4c3505524c1c537d60cf73b899a0f1d Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Fri, 28 Apr 2023 13:29:59 +0200 Subject: [PATCH 08/19] Removed slicing instance from sinflx --- src/ecwam/sinflx.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ecwam/sinflx.F90 b/src/ecwam/sinflx.F90 index d300bbc6..2ebe4fc2 100644 --- a/src/ecwam/sinflx.F90 +++ b/src/ecwam/sinflx.F90 @@ -124,7 +124,9 @@ SUBROUTINE SINFLX (ICALL, NCALL, KIJS, KIJL, & IF(LUPDTUS) THEN ! increase noise level in the tail IF (ICALL == 1 ) THEN - FL1(KIJS:KIJL,:,NFRE) = MAX(FL1(KIJS:KIJL,:,NFRE),FLM(KIJS:KIJL,:)) + DO K=1,NANG + FL1(KIJS:KIJL,K,NFRE) = MAX(FL1(KIJS:KIJL,K,NFRE),FLM(KIJS:KIJL,K)) + ENDDO IF (LLGCBZ0) THEN CALL HALPHAP(KIJS, KIJL, WAVNUM, COSWDIF, FL1, HALP) From 90248b96c80011235fbf85358349091bac6b7a69 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Wed, 3 May 2023 11:10:58 +0200 Subject: [PATCH 09/19] Fixed yowice indentation error --- src/ecwam/yowice.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ecwam/yowice.F90 b/src/ecwam/yowice.F90 index 51c06b59..af0a7a66 100644 --- a/src/ecwam/yowice.F90 +++ b/src/ecwam/yowice.F90 @@ -9,7 +9,7 @@ MODULE YOWICE - USE PARKIND_WAVE, ONLY : JWIM, JWRB, JWRU + USE PARKIND_WAVE, ONLY : JWIM, JWRB, JWRU IMPLICIT NONE From e563f70502847f47b16edbdd39f085840866ef20 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 4 May 2023 16:44:16 +0200 Subject: [PATCH 10/19] Changed position of omegagc call --- src/ecwam/tau_phi_hf.F90 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ecwam/tau_phi_hf.F90 b/src/ecwam/tau_phi_hf.F90 index 50f72d30..9b039050 100644 --- a/src/ecwam/tau_phi_hf.F90 +++ b/src/ecwam/tau_phi_hf.F90 @@ -121,6 +121,10 @@ SUBROUTINE TAU_PHI_HF(KIJS, KIJL, MIJ, LTAUWSHELTER, UFRIC, Z0M, & IF (LHOOK) CALL DR_HOOK('TAU_PHI_HF',0,ZHOOK_HANDLE) + IF (LLGCBZ0) THEN + CALL OMEGAGC(KIJS, KIJL, UFRIC, NS, XKS, OMS) + ENDIF + ! See INIT_X0TAUHF X0G=X0TAUHF*G @@ -182,9 +186,6 @@ SUBROUTINE TAU_PHI_HF(KIJS, KIJL, MIJ, LTAUWSHELTER, UFRIC, Z0M, & ! TAUHF : IF (LLGCBZ0) THEN - - CALL OMEGAGC(KIJS, KIJL, UFRIC, NS, XKS, OMS) - DO IJ=KIJS,KIJL ZSUP(IJ) = MIN(LOG(OMS(IJ)*SQRTZ0OG(IJ)),ZSUPMAX) ENDDO From 0928fccde81e4eb9185739e60e62fefe617783bf Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 4 May 2023 19:36:36 +0200 Subject: [PATCH 11/19] Various demotions and fixes that were missed --- src/ecwam/ciwabr.F90 | 6 +++--- src/ecwam/implsch.F90 | 3 +-- src/ecwam/peak_ang.F90 | 12 +++++------- src/ecwam/sdissip_jan.F90 | 2 +- src/ecwam/sinput_jan.F90 | 4 +++- src/ecwam/stress_gc.F90 | 13 +++++++------ src/ecwam/stresso.F90 | 10 +++------- src/ecwam/taut_z0.F90 | 2 +- src/ecwam/wnfluxes.F90 | 9 ++++++++- 9 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/ecwam/ciwabr.F90 b/src/ecwam/ciwabr.F90 index a7ca7bf2..bee909aa 100644 --- a/src/ecwam/ciwabr.F90 +++ b/src/ecwam/ciwabr.F90 @@ -68,7 +68,7 @@ SUBROUTINE CIWABR (KIJS, KIJL, CICOVER, FL1, WAVNUM, CGROUP, CIWAB) INTEGER(KIND=JWIM) :: K, M, IJ REAL(KIND=JWRB) :: EWH REAL(KIND=JWRB) :: X, ALP - REAL(KIND=JWRB),DIMENSION(NFRE) :: XK2 + REAL(KIND=JWRB) :: XK2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ---------------------------------------------------------------------- @@ -91,8 +91,8 @@ SUBROUTINE CIWABR (KIJS, KIJL, CICOVER, FL1, WAVNUM, CGROUP, CIWAB) DO K=1,NANG DO IJ=KIJS,KIJL EWH=4.0_JWRB*SQRT(MAX(EPSMIN,FL1(IJ,K,M)*DFIM(M))) - XK2(M)=WAVNUM(IJ,M)**2 - ALP=CDICWA*XK2(M)*EWH + XK2=WAVNUM(IJ,M)**2 + ALP=CDICWA*XK2*EWH X=ALP*CGROUP(IJ,M)*IDELT CIWAB(IJ,K,M)=1.0_JWRB-CICOVER(IJ)*(1.0_JWRB-EXP(-MIN(X,50.0_JWRB))) ENDDO diff --git a/src/ecwam/implsch.F90 b/src/ecwam/implsch.F90 index 97417414..4a3515c1 100644 --- a/src/ecwam/implsch.F90 +++ b/src/ecwam/implsch.F90 @@ -144,10 +144,9 @@ SUBROUTINE IMPLSCH (KIJS, KIJL, FL1, & REAL(KIND=JWRB) :: DELFL(NFRE) REAL(KIND=JWRB), DIMENSION(KIJL) :: RAORW REAL(KIND=JWRB), DIMENSION(KIJL) :: EMEAN, FMEAN, HALP - REAL(KIND=JWRB), DIMENSION(KIJL) :: EMEANWS, FMEANWS, USFM, GADIAG + REAL(KIND=JWRB), DIMENSION(KIJL) :: EMEANWS, FMEANWS, USFM REAL(KIND=JWRB), DIMENSION(KIJL) :: F1MEAN, AKMEAN, XKMEAN REAL(KIND=JWRB), DIMENSION(KIJL) :: PHIWA - REAL(KIND=JWRB), DIMENSION(KIJL) :: DPTHREDUC REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: FLM REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: COSWDIF, SINWDIF2 diff --git a/src/ecwam/peak_ang.F90 b/src/ecwam/peak_ang.F90 index 15452210..950fca0d 100644 --- a/src/ecwam/peak_ang.F90 +++ b/src/ecwam/peak_ang.F90 @@ -66,7 +66,7 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) REAL(KIND=JWRB) :: DELT25, COEF_FR, COEF_FR2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE REAL(KIND=JWRB) :: ZEPSILON - REAL(KIND=JWRB),DIMENSION(KIJL) :: SUM0, SUM1, SUM2, SUM4, XMAX, TEMP + REAL(KIND=JWRB),DIMENSION(KIJL) :: SUM0, SUM1, SUM2, XMAX, TEMP REAL(KIND=JWRB),DIMENSION(KIJL) :: THMEAN, SUM_S, SUM_C ! ---------------------------------------------------------------------- @@ -75,9 +75,8 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) !*** 1. DETERMINE L-H SPECTRAL WIDTH OF THE 2-D SPECTRUM. ! --------------------------------------------------- - ZEPSILON=10._JWRB*EPSILON(ZEPSILON) - - NSH = 1 + INT(LOG(1.5_JWRB)/LOG(FRATIO)) + ZEPSILON = 10._JWRB*EPSILON(ZEPSILON) + NSH = 1 + INT(LOG(1.5_JWRB)/LOG(FRATIO)) DO IJ=KIJS,KIJL SUM0(IJ)= ZEPSILON @@ -148,10 +147,9 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) DO IJ=KIJS,KIJL MMSTART = MAX(1,MMAX(IJ)-NSH) MMSTOP = MIN(NFRE,MMAX(IJ)+NSH) - - SUM_S(IJ) = 0._JWRB - SUM_C(IJ) = ZEPSILON DO M=MMSTART,MMSTOP + SUM_S(IJ) = 0._JWRB + SUM_C(IJ) = ZEPSILON DO K=1,NANG SUM_S(IJ) = SUM_S(IJ) +SINTH(K)*FL1(IJ,K,M) SUM_C(IJ) = SUM_C(IJ) +COSTH(K)*FL1(IJ,K,M) diff --git a/src/ecwam/sdissip_jan.F90 b/src/ecwam/sdissip_jan.F90 index 75f6c199..08456252 100644 --- a/src/ecwam/sdissip_jan.F90 +++ b/src/ecwam/sdissip_jan.F90 @@ -89,7 +89,7 @@ SUBROUTINE SDISSIP_JAN (KIJS, KIJL, FL1, FLD, SL, & REAL(KIND=JWRB) :: SCDFM, CONSD, CONSS, DELTA_SDISM1, CVIS REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB),DIMENSION(KIJL) :: CM, TEMP1, SDS, X + REAL(KIND=JWRB),DIMENSION(KIJL) :: TEMP1, SDS, X REAL(KIND=JWRB),DIMENSION(KIJL) :: XK2 ! ---------------------------------------------------------------------- diff --git a/src/ecwam/sinput_jan.F90 b/src/ecwam/sinput_jan.F90 index 965f58e8..827152f1 100644 --- a/src/ecwam/sinput_jan.F90 +++ b/src/ecwam/sinput_jan.F90 @@ -306,9 +306,11 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & !* 2.1 LOOP OVER DIRECTIONS. ! --------------------- - ! WIND INPUT: DO K=1,NANG + DO IJ=KIJS,KIJL + XLLWS(IJ,K,M)= 0.0_JWRB + ENDDO DO IJ=KIJS,KIJL XLLWS(IJ,K,M)= 0.0_JWRB diff --git a/src/ecwam/stress_gc.F90 b/src/ecwam/stress_gc.F90 index 099ff16a..0558578d 100644 --- a/src/ecwam/stress_gc.F90 +++ b/src/ecwam/stress_gc.F90 @@ -61,7 +61,7 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) REAL(KIND=JWRB) :: CONST, ZN REAL(KIND=JWRB) :: GAMNORMA ! RENORMALISATION FACTOR OF THE GROWTH RATE REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(NWAV_GC) :: GAM_W + REAL(KIND=JWRB) :: GAM_W ! INCLUDE FUNCTIONS FROM GRAVITY-CAPILLARY DISPERSION REALTIONS #include "gc_dispersion.h" @@ -96,12 +96,12 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) ZLOG = XLOG - LOG(XLAMBDA) ZLOG = MIN(ZLOG, 0.0_JWRB) ZLOG2X = ZLOG*ZLOG*X - GAM_W(I)= ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(I) ENDDO - ZN = CONST*XKMSQRTVGOC2_GC(NS)*GAM_W(NS) + GAM_W = ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(NS) + ZN = CONST*XKMSQRTVGOC2_GC(NS)*GAM_W GAMNORMA = (1.0_JWRB + RN1_RN*ZN)/(1.0_JWRB + ZN) - TAUWCG = GAM_W(NS) * DELKCC_GC_NS(NS) * OMXKM3_GC(NS) * GAMNORMA + TAUWCG = GAM_W * DELKCC_GC_NS(NS) * OMXKM3_GC(NS) * GAMNORMA DO I = NS+1, NWAV_GC ! ANALYTICAL FORM INERTIAL SUB RANGE F(k) = k**(-4)*BB ! BB = HALP * C2OSQRTVG_GC(NS)*SQRT(VG_GC(I))/C_GC(I)**2 @@ -112,9 +112,10 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) ! Tauwcg : integral of omega * gammma_wam * F(k) k dk ! It should be done in vector form with actual directional spreading information ! It simplified here by using the ANG_GC factor. - ZN = CONST*XKMSQRTVGOC2_GC(I)*GAM_W(I) + GAM_W = ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(I) + ZN = CONST*XKMSQRTVGOC2_GC(I)*GAM_W GAMNORMA = (1.0_JWRB + RN1_RN*ZN)/(1.0_JWRB + ZN) - TAUWCG = TAUWCG + GAM_W(I) * DELKCC_OMXKM3_GC(I) * GAMNORMA + TAUWCG = TAUWCG + GAM_W * DELKCC_OMXKM3_GC(I) * GAMNORMA ENDDO STRESS_GC = MAX(ZABHRC * TAUWCG, TAUWCG_MIN) diff --git a/src/ecwam/stresso.F90 b/src/ecwam/stresso.F90 index b7ccd9f8..b2d44c54 100644 --- a/src/ecwam/stresso.F90 +++ b/src/ecwam/stresso.F90 @@ -192,10 +192,6 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & !* CALCULATE HIGH-FREQUENCY CONTRIBUTION TO STRESS and energy flux (positive sinput). ! ---------------------------------------------------------------------------------- - DO IJ=KIJS,KIJL - US2(IJ)=UFRIC(IJ)**2 - ENDDO - IF ( IPHYS == 0 .OR. TAUWSHELTER == 0.0_JWRB) THEN LTAUWSHELTER = .FALSE. DO IJ=KIJS,KIJL @@ -205,8 +201,8 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & ELSE LTAUWSHELTER = .TRUE. DO IJ=KIJS,KIJL - TAUX(IJ)=US2(IJ)*SIN(WDWAVE(IJ)) - TAUY(IJ)=US2(IJ)*COS(WDWAVE(IJ)) + TAUX(IJ)=UFRIC(IJ)**2*SIN(WDWAVE(IJ)) + TAUY(IJ)=UFRIC(IJ)**2*COS(WDWAVE(IJ)) TAUPX(IJ)=TAUX(IJ)-TAUWSHELTER*XSTRESS(IJ) TAUPY(IJ)=TAUY(IJ)-TAUWSHELTER*YSTRESS(IJ) USDIRP(IJ)=ATAN2(TAUPX(IJ),TAUPY(IJ)) @@ -230,7 +226,7 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & IF ( .NOT. LLGCBZ0) THEN TAUTOUS2 = 1.0_JWRB/(1.0_JWRB+EPS1) DO IJ=KIJS,KIJL - TAUW(IJ) = MIN(TAUW(IJ),US2(IJ)*TAUTOUS2) + TAUW(IJ) = MIN(TAUW(IJ),UFRIC(IJ)**2*TAUTOUS2) ENDDO ENDIF diff --git a/src/ecwam/taut_z0.F90 b/src/ecwam/taut_z0.F90 index ec10fad0..7b884081 100644 --- a/src/ecwam/taut_z0.F90 +++ b/src/ecwam/taut_z0.F90 @@ -119,7 +119,7 @@ SUBROUTINE TAUT_Z0(KIJS, KIJL, IUSFG, & REAL(KIND=JWRB), DIMENSION(KIJL) :: ALPHAOG, XMIN REAL(KIND=JWRB), DIMENSION(KIJL) :: W1 REAL(KIND=JWRB), DIMENSION(KIJL) :: TAUWACT, TAUWEFF - REAL(KIND=JWRB), DIMENSION(KIJL) :: ANG_GC, ALPHAP, TAUUNR + REAL(KIND=JWRB), DIMENSION(KIJL) :: ANG_GC, TAUUNR LOGICAL, DIMENSION(KIJL) :: LLCOSDIFF diff --git a/src/ecwam/wnfluxes.F90 b/src/ecwam/wnfluxes.F90 index 6dd9de75..2b94e678 100644 --- a/src/ecwam/wnfluxes.F90 +++ b/src/ecwam/wnfluxes.F90 @@ -137,7 +137,6 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & IF (LHOOK) CALL DR_HOOK('WNFLUXES',0,ZHOOK_HANDLE) - EPSUS3 = EPSUS*SQRT(EPSUS) CITHRSH_INV=1._JWRB/MAX(CITHRSH,0.01_JWRB) @@ -145,6 +144,14 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & EFD_FAC = 4.0_JWRB*EGRCRV/G**2 FFD_FAC = (EGRCRV/AFCRV)**(1.0_JWRB/BFCRV) * G + !$loki separator + MAXIJ = -1 + !$loki vector-reduction(max: maxij) + DO IJ=KIJS,KIJL + MAXIJ = MAX(MAXIJ, MIJ(IJ)) + ENDDO + !$loki end vector-reduction(max: maxij) + !* DETERMINE NORMALIZED FLUXES FROM AIR TO WAVE AND FROM WAVE TO OCEAN. ! ------------------------------------------------------------------- From eb0a9bfec7c55238350858f2cf93db847931b181 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Fri, 1 Sep 2023 12:03:41 +0000 Subject: [PATCH 12/19] sinput_ard array demotions --- src/ecwam/sinput_ard.F90 | 131 +++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 74 deletions(-) diff --git a/src/ecwam/sinput_ard.F90 b/src/ecwam/sinput_ard.F90 index 21c3b904..a677c1e5 100644 --- a/src/ecwam/sinput_ard.F90 +++ b/src/ecwam/sinput_ard.F90 @@ -126,7 +126,7 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & REAL(KIND=JWRB) :: TAUPX, TAUPY REAL(KIND=JWRB) :: DSTAB2 REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(NFRE) :: CONST, SIG, SIGM1, SIG2, COEF, COEF5, DFIM_SIG2 + REAL(KIND=JWRB) :: CONST, SIG, SIG2, COEF, COEF5, DFIM_SIG2 REAL(KIND=JWRB), DIMENSION(KIJL) :: CONSTF, CONST11, CONST22 REAL(KIND=JWRB), DIMENSION(KIJL) :: Z0VIS, Z0NOZ, FWW REAL(KIND=JWRB), DIMENSION(KIJL) :: PVISC, PTURB @@ -136,13 +136,14 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & REAL(KIND=JWRB), DIMENSION(KIJL) :: CSTRNFAC REAL(KIND=JWRB), DIMENSION(KIJL) :: FLP_AVG, SLP_AVG REAL(KIND=JWRB), DIMENSION(KIJL) :: ROGOROAIR, AIRD_PVISC - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: XSTRESS, YSTRESS, FLP, SLP - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: USG2, TAUX, TAUY, USTP, USTPM1, USDIRP, UCN - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: UCNZALPD - REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: XNGAMCONST - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: XSTRESS, YSTRESS, FLP, SLP + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: USG2, TAUX, TAUY, USTP, USTPM1, USDIRP, UCN + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: UCNZALPD + REAL(KIND=JWRB), DIMENSION(KIJL) :: XNGAMCONST + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE REAL(KIND=JWRB), DIMENSION(KIJL) :: DSTAB1, TEMP1, TEMP2 - REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NGST) :: COSLP, GAM0, DSTAB + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,2) :: GAM0, DSTAB + REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: COSLP LOGICAL :: LTAUWSHELTER ! ---------------------------------------------------------------------- @@ -160,35 +161,18 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & LTAUWSHELTER = .TRUE. ENDIF + +! ESTIMATE THE STANDARD DEVIATION OF GUSTINESS. + IF (NGST > 1) CALL WSIGSTAR (KIJS, KIJL, WSWAVE, UFRIC, Z0M, WSTAR, SIG_N) + + IF (LLNORMAGAM) THEN DO IJ=KIJS,KIJL CSTRNFAC(IJ) = CONSTN * RNFAC(IJ) / RAORW(IJ) ENDDO - DO M=1,NFRE - DO IJ=KIJS,KIJL - XNGAMCONST(IJ,M) = CSTRNFAC(IJ)*XK2CG(IJ,M) - ENDDO - ENDDO - - ELSE - XNGAMCONST(KIJS:KIJL,:) = 0.0_JWRB ENDIF - - -! ESTIMATE THE STANDARD DEVIATION OF GUSTINESS. - IF (NGST > 1) CALL WSIGSTAR (KIJS, KIJL, WSWAVE, UFRIC, Z0M, WSTAR, SIG_N) - ! ---------------------------------------------------------------------- - DO M=1,NFRE - SIG(M) = ZPIFR(M) - SIGM1(M) = 1.0_JWRB/SIG(M) - SIG2(M) = SIG(M)**2 - DFIM_SIG2(M)=DFIM(M)*SIG2(M) - CONST(M)=SIG(M)*CONST1 - ENDDO - - IF (LLSNEG) THEN !!!! only for the negative sinput NU_AIR = RNU @@ -208,8 +192,9 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO DO M=1,NFRE - COEF(M) =-SWELLF*16._JWRB*SIG2(M)/G - COEF5(M)=-SWELLF5*2._JWRB*SQRT(2._JWRB*NU_AIR*SIG(M)) + SIG = ZPIFR(M) + SIG2 = SIG**2 + DFIM_SIG2=DFIM(M)*SIG2 K=1 DO IJ=KIJS,KIJL @@ -222,7 +207,7 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO DO IJ=KIJS,KIJL - UORBT(IJ) = UORBT(IJ)+DFIM_SIG2(M)*TEMP(IJ) + UORBT(IJ) = UORBT(IJ)+DFIM_SIG2*TEMP(IJ) AORB(IJ) = AORB(IJ)+DFIM(M)*TEMP(IJ) ENDDO ENDDO @@ -329,11 +314,9 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO ELSE - DO IGST=1,NGST - DO K=1,NANG - DO IJ=KIJS,KIJL - COSLP(IJ,K,IGST) = COSWDIF(IJ,K) - ENDDO + DO K=1,NANG + DO IJ=KIJS,KIJL + COSLP(IJ,K) = COSWDIF(IJ,K) ENDDO ENDDO ENDIF @@ -351,6 +334,12 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDIF DO M=1,NFRE + SIG = ZPIFR(M) + SIG2 = SIG**2 + CONST=SIG*CONST1 + + COEF =-SWELLF*16._JWRB*SIG2/G + COEF5=-SWELLF5*2._JWRB*SQRT(2._JWRB*NU_AIR*SIG) IF (LTAUWSHELTER) THEN DO IGST=1,NGST @@ -363,14 +352,6 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO ENDDO - DO IGST=1,NGST - DO K=1,NANG - DO IJ=KIJS,KIJL - COSLP(IJ,K,IGST) = COS(TH(K)-USDIRP(IJ,IGST)) - ENDDO - ENDDO - ENDDO - DO IJ=KIJS,KIJL CONSTF(IJ) = ROGOROAIR(IJ)*CINV(IJ,M)*DFIM(M) ENDDO @@ -388,7 +369,7 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO DO IJ=KIJS,KIJL ZCN(IJ) = LOG(WAVNUM(IJ,M)*Z0M(IJ)) - CNSN(IJ) = CONST(M)*RAORW(IJ) + CNSN(IJ) = CONST*RAORW(IJ) ENDDO !* 2.1 LOOP OVER DIRECTIONS. @@ -400,30 +381,42 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO ENDDO + IF (LLNORMAGAM) THEN + DO IJ=KIJS,KIJL + XNGAMCONST(IJ) = CSTRNFAC(IJ)*XK2CG(IJ,M) + ENDDO + ENDIF + + IF (LLSNEG) THEN +! SWELL DAMPING: + DO IJ=KIJS,KIJL + DSTAB1(IJ) = COEF5*AIRD_PVISC(IJ)*WAVNUM(IJ,M) + TEMP1(IJ) = COEF*RAORW(IJ) + ENDDO + ENDIF + DO IGST=1,NGST DO K=1,NANG + IF(LTAUWSHELTER)THEN + DO IJ=KIJS,KIJL + COSLP(IJ,K) = COS(TH(K)-USDIRP(IJ,IGST)) + ENDDO + ENDIF DO IJ=KIJS,KIJL - IF (COSLP(IJ,K,IGST) > 0.01_JWRB) THEN - X = COSLP(IJ,K,IGST)*UCN(IJ,IGST) - ZLOG = ZCN(IJ) + UCNZALPD(IJ,IGST)/COSLP(IJ,K,IGST) + GAM0(IJ,K,IGST) = 0.0_JWRB + IF (COSLP(IJ,K) > 0.01_JWRB) THEN + X = COSLP(IJ,K)*UCN(IJ,IGST) + ZLOG = ZCN(IJ) + UCNZALPD(IJ,IGST)/COSLP(IJ,K) IF (ZLOG < 0.0_JWRB) THEN ZLOG2X=ZLOG*ZLOG*X GAM0(IJ,K,IGST) = EXP(ZLOG)*ZLOG2X*ZLOG2X * CNSN(IJ) XLLWS(IJ,K,M) = 1.0_JWRB - ELSE - GAM0(IJ,K,IGST) = 0.0_JWRB ENDIF - ELSE - GAM0(IJ,K,IGST) = 0.0_JWRB ENDIF ENDDO ENDDO - ENDDO - - - IF (LLNORMAGAM) THEN - DO IGST=1,NGST + IF (LLNORMAGAM) THEN SUMF(KIJS:KIJL) = 0.0_JWRB SUMFSIN2(KIJS:KIJL) = 0.0_JWRB @@ -435,31 +428,21 @@ SUBROUTINE SINPUT_ARD (NGST, LLSNEG, KIJS, KIJL, FL1, & ENDDO DO IJ=KIJS,KIJL - ZNZ = XNGAMCONST(IJ,M)*USTPM1(IJ,IGST) + ZNZ = XNGAMCONST(IJ)*USTPM1(IJ,IGST) GAMNORMA(IJ,IGST) = (1.0_JWRB + ZNZ*SUMFSIN2(IJ)) / (1.0_JWRB + ZNZ*SUMF(IJ)) ENDDO - ENDDO - - ENDIF - - - IF (LLSNEG) THEN -! SWELL DAMPING: - DO IJ=KIJS,KIJL - DSTAB1(IJ) = COEF5(M)*AIRD_PVISC(IJ)*WAVNUM(IJ,M) - TEMP1(IJ) = COEF(M)*RAORW(IJ) - ENDDO + ENDIF - DO IGST=1,NGST + IF (LLSNEG) THEN DO K=1,NANG DO IJ=KIJS,KIJL - DSTAB2 = TEMP1(IJ)*(TEMP2(IJ)+(FU+FUD*COSLP(IJ,K,IGST))*USTP(IJ,IGST)) + DSTAB2 = TEMP1(IJ)*(TEMP2(IJ)+(FU+FUD*COSLP(IJ,K))*USTP(IJ,IGST)) DSTAB(IJ,K,IGST) = DSTAB1(IJ)+PTURB(IJ)*DSTAB2 ENDDO ENDDO - ENDDO - ENDIF + ENDIF + ENDDO !* 2.2 UPDATE THE SHELTERING STRESS (in any), From 203c345c3813f23797ebee9e6650ad1f199652aa Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Fri, 1 Sep 2023 12:03:58 +0000 Subject: [PATCH 13/19] sinput_jan array demotions --- src/ecwam/sinput_jan.F90 | 42 +++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/ecwam/sinput_jan.F90 b/src/ecwam/sinput_jan.F90 index 827152f1..7e41703b 100644 --- a/src/ecwam/sinput_jan.F90 +++ b/src/ecwam/sinput_jan.F90 @@ -149,25 +149,24 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & INTEGER(KIND=JWIM) :: IGST REAL(KIND=JWRB) :: CONST1, CONST3, XKAPPAD - REAL(KIND=JWRB) :: CONSTN + REAL(KIND=JWRB) :: CONSTN, CONST REAL(KIND=JWRB) :: ZNZ REAL(KIND=JWRB) :: X, ZLOG, ZLOG2X, ZBETA REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB), DIMENSION(NGST) :: WSIN - REAL(KIND=JWRB), DIMENSION(NFRE) :: CONST + REAL(KIND=JWRB), DIMENSION(2) :: WSIN REAL(KIND=JWRB), DIMENSION(KIJL) :: ZTANHKD REAL(KIND=JWRB), DIMENSION(KIJL) :: SIG_N REAL(KIND=JWRB), DIMENSION(KIJL) :: CNSN REAL(KIND=JWRB), DIMENSION(KIJL) :: SUMF, SUMFSIN2 REAL(KIND=JWRB), DIMENSION(KIJL) :: CSTRNFAC - REAL(KIND=JWRB), DIMENSION(KIJL,NFRE) :: XNGAMCONST - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: SIGDEV ,US, Z0, UCN, ZCN - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: USTPM1 - REAL(KIND=JWRB), DIMENSION(KIJL,NGST) :: XVD, UCND, CONST3_UCN2 + REAL(KIND=JWRB), DIMENSION(KIJL) :: XNGAMCONST + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: GAMNORMA ! ! RENORMALISATION FACTOR OF THE GROWTH RATE + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: SIGDEV ,US, Z0, UCN, ZCN + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: USTPM1 + REAL(KIND=JWRB), DIMENSION(KIJL,2) :: XVD, UCND, CONST3_UCN2 REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: UFAC1, UFAC2 REAL(KIND=JWRB), DIMENSION(KIJL,NANG) :: TEMPD - REAL(KIND=JWRB), DIMENSION(KIJL,NANG,NGST) :: GAM0 + REAL(KIND=JWRB), DIMENSION(KIJL,NANG,2) :: GAM0 LOGICAL, DIMENSION(KIJL,NANG) :: LZ @@ -183,6 +182,9 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & CONSTN = DELTH/(XKAPPA*ZPI) +! ESTIMATE THE STANDARD DEVIATION OF GUSTINESS. + IF (NGST > 1) CALL WSIGSTAR (KIJS, KIJL, WSWAVE, UFRIC, Z0M, WSTAR, SIG_N) + !* 1. PRECALCULATED ANGULAR DEPENDENCE. ! --------------------------------- @@ -202,21 +204,9 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & DO IJ=KIJS,KIJL CSTRNFAC(IJ) = CONSTN * RNFAC(IJ) / RAORW(IJ) ENDDO - DO M=1,NFRE - DO IJ=KIJS,KIJL - XNGAMCONST(IJ,M) = CSTRNFAC(IJ)*XK2CG(IJ,M) - ENDDO - ENDDO - - ELSE - XNGAMCONST(KIJS:KIJL,:) = 0.0_JWRB ENDIF -! ESTIMATE THE STANDARD DEVIATION OF GUSTINESS. - IF (NGST > 1) CALL WSIGSTAR (KIJS, KIJL, WSWAVE, UFRIC, Z0M, WSTAR, SIG_N) - - ! DEFINE WHERE SINPUT WILL BE EVALUATED IN RELATIVE TERM WRT USTAR ! DEFINE ALSO THE RELATIVE WEIGHT OF EACH. @@ -280,7 +270,7 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & DO M=1,NFRE - CONST(M)=ZPIFR(M)*CONST1 + CONST=ZPIFR(M)*CONST1 !* PRECALCULATE FREQUENCY DEPENDENCE. ! ---------------------------------- @@ -290,7 +280,7 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & ENDDO DO IJ=KIJS,KIJL - CNSN(IJ) = CONST(M)*ZTANHKD(IJ)*RAORW(IJ) + CNSN(IJ) = CONST*ZTANHKD(IJ)*RAORW(IJ) ENDDO DO IGST=1,NGST @@ -339,6 +329,10 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & IF (LLNORMAGAM) THEN + DO IJ=KIJS,KIJL + XNGAMCONST(IJ) = CSTRNFAC(IJ)*XK2CG(IJ,M) + ENDDO + DO IGST=1,NGST SUMF(KIJS:KIJL) = 0.0_JWRB @@ -351,7 +345,7 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & ENDDO DO IJ=KIJS,KIJL - ZNZ = XNGAMCONST(IJ,M)*USTPM1(IJ,IGST) + ZNZ = XNGAMCONST(IJ)*USTPM1(IJ,IGST) GAMNORMA(IJ,IGST) = (1.0_JWRB + ZNZ*SUMFSIN2(IJ)) / (1.0_JWRB + ZNZ*SUMF(IJ)) ENDDO From 0d609392eb5ad76fe4fa06d44a499ef81bc9e4b8 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Thu, 22 Jun 2023 14:01:45 +0000 Subject: [PATCH 14/19] Removed unnecessary reduction from stresso, wnfluxes --- src/ecwam/stresso.F90 | 4 ++-- src/ecwam/wnfluxes.F90 | 10 +--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/ecwam/stresso.F90 b/src/ecwam/stresso.F90 index b2d44c54..e7d74d5c 100644 --- a/src/ecwam/stresso.F90 +++ b/src/ecwam/stresso.F90 @@ -145,7 +145,7 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & !* CALCULATE LOW-FREQUENCY CONTRIBUTION TO STRESS AND ENERGY FLUX (positive sinput). ! --------------------------------------------------------------------------------- - DO M=1,MAXVAL(MIJ(:)) + DO M=1,NFRE ! THE INTEGRATION ONLY UP TO FR=MIJ SINCE RHOWGDFTH=0 FOR FR>MIJ K=1 DO IJ=KIJS,KIJL @@ -172,7 +172,7 @@ SUBROUTINE STRESSO (KIJS, KIJL, MIJ, RHOWGDFTH, & ENDDO IF ( LLPHIWA ) THEN - DO M=1,MAXVAL(MIJ(:)) + DO M=1,NFRE ! THE INTEGRATION ONLY UP TO FR=MIJ SINCE RHOWGDFTH=0 FOR FR>MIJ K=1 DO IJ=KIJS,KIJL diff --git a/src/ecwam/wnfluxes.F90 b/src/ecwam/wnfluxes.F90 index 2b94e678..dcd5657b 100644 --- a/src/ecwam/wnfluxes.F90 +++ b/src/ecwam/wnfluxes.F90 @@ -144,14 +144,6 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & EFD_FAC = 4.0_JWRB*EGRCRV/G**2 FFD_FAC = (EGRCRV/AFCRV)**(1.0_JWRB/BFCRV) * G - !$loki separator - MAXIJ = -1 - !$loki vector-reduction(max: maxij) - DO IJ=KIJS,KIJL - MAXIJ = MAX(MAXIJ, MIJ(IJ)) - ENDDO - !$loki end vector-reduction(max: maxij) - !* DETERMINE NORMALIZED FLUXES FROM AIR TO WAVE AND FROM WAVE TO OCEAN. ! ------------------------------------------------------------------- @@ -164,7 +156,7 @@ SUBROUTINE WNFLUXES (KIJS, KIJL, & ENDDO ! THE INTEGRATION ONLY UP TO FR=MIJ - DO M=1,MAXVAL(MIJ(:)) + DO M=1,NFRE K=1 DO IJ=KIJS,KIJL SUMT(IJ) = SSURF(IJ,K,M) From 24e9999e8cb26156a723df1b232211a09811c6bd Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Tue, 19 Mar 2024 13:00:11 +0000 Subject: [PATCH 15/19] BUNDLE: explicitly disable SINGLE_PRECISION by default --- package/bundle/bundle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/package/bundle/bundle.yml b/package/bundle/bundle.yml index 677cd3c6..25aff8e7 100644 --- a/package/bundle/bundle.yml +++ b/package/bundle/bundle.yml @@ -5,6 +5,7 @@ name : ecwam-bundle version : 0.0.0 cmake : CMAKE_LINK_DEPENDS_NO_SHARED=ON ENABLE_OMP=ON + ENABLE_SINGLE_PRECISION=OFF projects : From 3c1630183ceefa2f54775b240c5302e0e1ef7302 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Tue, 26 Mar 2024 09:29:37 +0000 Subject: [PATCH 16/19] Remove duplicate zeroing in sinput_jan --- src/ecwam/sinput_jan.F90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/ecwam/sinput_jan.F90 b/src/ecwam/sinput_jan.F90 index 7e41703b..4f9377a8 100644 --- a/src/ecwam/sinput_jan.F90 +++ b/src/ecwam/sinput_jan.F90 @@ -302,10 +302,6 @@ SUBROUTINE SINPUT_JAN (NGST, LLSNEG, KIJS, KIJL, FL1 , & XLLWS(IJ,K,M)= 0.0_JWRB ENDDO - DO IJ=KIJS,KIJL - XLLWS(IJ,K,M)= 0.0_JWRB - ENDDO - DO IGST=1,NGST DO IJ=KIJS,KIJL IF (LZ(IJ,K)) THEN From 43dcf3d8d3a0330d22069d898ce8bb1a5dd9b5fb Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Tue, 26 Mar 2024 17:12:46 +0000 Subject: [PATCH 17/19] SCRIPTS: make iphys and llgcbz0 configurable --- share/ecwam/scripts/ecwam_run_model.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/share/ecwam/scripts/ecwam_run_model.sh b/share/ecwam/scripts/ecwam_run_model.sh index d2b3e7e6..4c3b0664 100755 --- a/share/ecwam/scripts/ecwam_run_model.sh +++ b/share/ecwam/scripts/ecwam_run_model.sh @@ -82,6 +82,8 @@ wamnang=$(read_config directions) wamnfre=$(read_config frequencies) nproma=$(read_config nproma --default=24) +iphys=$(read_config iphys --default=1) +llgcbz0=$(read_config llgcbz0 --default=F) # read timesteps phys_tstp=$(read_config physics.timestep --format=seconds --default=900) @@ -216,12 +218,12 @@ cat > wam_namelist << EOF IREST = 1, LFDBIOOUT = F, LFDB = F, - IPHYS = 1, + IPHYS = ${iphys}, ISHALLO = 0, ISNONLIN = 0, LBIWBK = T, LLCAPCHNK = T, - LLGCBZ0 = F, + LLGCBZ0 = ${llgcbz0}, LLNORMAGAM = F, IPROPAGS = 2, LSUBGRID = F, From eb4ae0896746c70cd7ecc08f7d64b71754c458a6 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Tue, 26 Mar 2024 17:14:15 +0000 Subject: [PATCH 18/19] TESTS: add etopo1_open_an_fc config for iphys=0 and llgcbz0=T --- tests/CMakeLists.txt | 3 + tests/etopo1_oper_an_fc_O48_iphys_0.yml | 120 ++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 tests/etopo1_oper_an_fc_O48_iphys_0.yml diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5279fe98..81d749bb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -22,3 +22,6 @@ ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48 CONFIG etopo1_oper_an ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48 CONFIG etopo1_oper_an_fc_O48.yml MPI 4 OMP 1 ) ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48 CONFIG etopo1_oper_an_fc_O48.yml MPI 1 OMP 4 ) +ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_iphys_0 CONFIG etopo1_oper_an_fc_O48.yml ) +ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_iphys_0 CONFIG etopo1_oper_an_fc_O48.yml MPI 4 OMP 1 ) +ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_iphys_0 CONFIG etopo1_oper_an_fc_O48.yml MPI 1 OMP 4 ) diff --git a/tests/etopo1_oper_an_fc_O48_iphys_0.yml b/tests/etopo1_oper_an_fc_O48_iphys_0.yml new file mode 100644 index 00000000..3cfec4b7 --- /dev/null +++ b/tests/etopo1_oper_an_fc_O48_iphys_0.yml @@ -0,0 +1,120 @@ +grid: O48 +directions: 12 +frequencies: 25 +bathymetry: ETOPO1 + +advection: + timestep: 900 +physics: + timestep: 900 + +analysis.begin: 2022-12-31 12:00:00 +analysis.end: 2023-01-01 00:00:00 +forecast.begin: 2023-01-01 00:00:00 +forecast.end: 2023-01-01 06:00:00 + +begin: ${analysis.begin} +end: ${forecast.end} + +nproma: 24 +iphys: 0 +llgcbz0: T + +forcings: + file: data/forcings/oper_an_12h_fc_2023010100_36h_O48.grib + + at: + - begin: ${analysis.begin} + end: ${analysis.end} + timestep: 06:00 + - begin: ${forecast.begin} + end: ${forecast.end} + timestep: 01:00 + +output: + fields: + name: + - swh # Significant height of combined wind waves and swell + - mwd # Mean wave direction + - mwp # Mean wave period + - pp1d # Peak wave period + - dwi # 10 metre wind direction + - cdww # Coefficient of drag with waves + - wind # 10 metre wind speed + format: grib # (default : grib) or binary + at: + - timestep: 01:00 + + restart: + format: binary # (default : binary) or grib + at: + - time: ${end} + + +validation: + + double_precision: + + # initial analysis time + - name: swh + time: 2022-12-31 12:00:00 + average: 0.1337362277770183E+01 + relative_tolerance: 1.e-14 + hashes: ['0x3FF565D5FCDED500'] + + # initial forecast time + - name: swh + time: 2023-01-01 00:00:00 + average: 0.1502963828906638E+01 + relative_tolerance: 1.e-14 + hashes: ['0x3FF80C23CCC39966'] + + # 6h into forcast + - name: swh + time: 2023-01-01 06:00:00 + average: 0.1563171263196180E+01 + relative_tolerance: 1.e-14 + hashes: ['0x3FF902BFDED797F8'] + - name: swh + time: 2023-01-01 06:00:00 + minimum: 0.1778555863566463E-01 + relative_tolerance: 1.e-14 + hashes: ['0x3F923660A2B99ED6'] + - name: swh + time: 2023-01-01 06:00:00 + maximum: 0.7659061909985634E+01 + relative_tolerance: 1.e-14 + hashes: ['0x401EA2E12015B5DB'] + + single_precision: + + # initial analysis time + - name: swh + time: 2022-12-31 12:00:00 + average: 0.1337408304214478E+01 + relative_tolerance: 1.e-6 + hashes: ['0x3FF5660640000000'] + + # initial forecast time + - name: swh + time: 2023-01-01 00:00:00 + average: 0.1502959609031677E+01 + relative_tolerance: 1.e-6 + hashes: ['0x3FF80C1F60000000'] + + # 6h into forcast + - name: swh + time: 2023-01-01 06:00:00 + average: 0.1563124537467957E+01 + relative_tolerance: 1.e-6 + hashes: ['0x3FF9028EE0000000'] + - name: swh + time: 2023-01-01 06:00:00 + minimum: 0.1778554916381836E-01 + relative_tolerance: 1.e-6 + hashes: ['0x3F92366000000000'] + - name: swh + time: 2023-01-01 06:00:00 + maximum: 0.7659064292907715E+01 + relative_tolerance: 1.e-6 + hashes: ['0x401EA2E1C0000000'] From 9085bd37a3480c8905b792f9396e2c32ea90d316 Mon Sep 17 00:00:00 2001 From: Ahmad Nawab Date: Wed, 27 Mar 2024 10:02:46 +0000 Subject: [PATCH 19/19] Restore peak_ang and stress_gc --- src/ecwam/peak_ang.F90 | 10 ++++++---- src/ecwam/stress_gc.F90 | 13 ++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ecwam/peak_ang.F90 b/src/ecwam/peak_ang.F90 index 950fca0d..b8360392 100644 --- a/src/ecwam/peak_ang.F90 +++ b/src/ecwam/peak_ang.F90 @@ -75,8 +75,9 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) !*** 1. DETERMINE L-H SPECTRAL WIDTH OF THE 2-D SPECTRUM. ! --------------------------------------------------- - ZEPSILON = 10._JWRB*EPSILON(ZEPSILON) - NSH = 1 + INT(LOG(1.5_JWRB)/LOG(FRATIO)) + ZEPSILON=10._JWRB*EPSILON(ZEPSILON) + + NSH = 1 + INT(LOG(1.5_JWRB)/LOG(FRATIO)) DO IJ=KIJS,KIJL SUM0(IJ)= ZEPSILON @@ -147,9 +148,10 @@ SUBROUTINE PEAK_ANG(KIJS, KIJL, FL1, XNU, SIG_TH) DO IJ=KIJS,KIJL MMSTART = MAX(1,MMAX(IJ)-NSH) MMSTOP = MIN(NFRE,MMAX(IJ)+NSH) + + SUM_S(IJ) = 0._JWRB + SUM_C(IJ) = ZEPSILON DO M=MMSTART,MMSTOP - SUM_S(IJ) = 0._JWRB - SUM_C(IJ) = ZEPSILON DO K=1,NANG SUM_S(IJ) = SUM_S(IJ) +SINTH(K)*FL1(IJ,K,M) SUM_C(IJ) = SUM_C(IJ) +COSTH(K)*FL1(IJ,K,M) diff --git a/src/ecwam/stress_gc.F90 b/src/ecwam/stress_gc.F90 index 0558578d..099ff16a 100644 --- a/src/ecwam/stress_gc.F90 +++ b/src/ecwam/stress_gc.F90 @@ -61,7 +61,7 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) REAL(KIND=JWRB) :: CONST, ZN REAL(KIND=JWRB) :: GAMNORMA ! RENORMALISATION FACTOR OF THE GROWTH RATE REAL(KIND=JPHOOK) :: ZHOOK_HANDLE - REAL(KIND=JWRB) :: GAM_W + REAL(KIND=JWRB), DIMENSION(NWAV_GC) :: GAM_W ! INCLUDE FUNCTIONS FROM GRAVITY-CAPILLARY DISPERSION REALTIONS #include "gc_dispersion.h" @@ -96,12 +96,12 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) ZLOG = XLOG - LOG(XLAMBDA) ZLOG = MIN(ZLOG, 0.0_JWRB) ZLOG2X = ZLOG*ZLOG*X + GAM_W(I)= ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(I) ENDDO - GAM_W = ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(NS) - ZN = CONST*XKMSQRTVGOC2_GC(NS)*GAM_W + ZN = CONST*XKMSQRTVGOC2_GC(NS)*GAM_W(NS) GAMNORMA = (1.0_JWRB + RN1_RN*ZN)/(1.0_JWRB + ZN) - TAUWCG = GAM_W * DELKCC_GC_NS(NS) * OMXKM3_GC(NS) * GAMNORMA + TAUWCG = GAM_W(NS) * DELKCC_GC_NS(NS) * OMXKM3_GC(NS) * GAMNORMA DO I = NS+1, NWAV_GC ! ANALYTICAL FORM INERTIAL SUB RANGE F(k) = k**(-4)*BB ! BB = HALP * C2OSQRTVG_GC(NS)*SQRT(VG_GC(I))/C_GC(I)**2 @@ -112,10 +112,9 @@ REAL(KIND=JWRB) FUNCTION STRESS_GC(ANG_GC, USTAR, Z0, Z0MIN, HALP, RNFAC) ! Tauwcg : integral of omega * gammma_wam * F(k) k dk ! It should be done in vector form with actual directional spreading information ! It simplified here by using the ANG_GC factor. - GAM_W = ZLOG2X*ZLOG2X*EXP(XLOG)*OM3GMKM_GC(I) - ZN = CONST*XKMSQRTVGOC2_GC(I)*GAM_W + ZN = CONST*XKMSQRTVGOC2_GC(I)*GAM_W(I) GAMNORMA = (1.0_JWRB + RN1_RN*ZN)/(1.0_JWRB + ZN) - TAUWCG = TAUWCG + GAM_W * DELKCC_OMXKM3_GC(I) * GAMNORMA + TAUWCG = TAUWCG + GAM_W(I) * DELKCC_OMXKM3_GC(I) * GAMNORMA ENDDO STRESS_GC = MAX(ZABHRC * TAUWCG, TAUWCG_MIN)