From 2a59e24c08bf45567ae1c2ecc2245d29065c0de9 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Wed, 15 May 2024 16:28:39 +0100 Subject: [PATCH 1/4] Backported that Charnock Cap PR (#NOAA-EMC/WW3/1225) Required backport of st4table feature too (#NOAA-EMC/WW3/1124) --- model/ftn/w3gdatmd.ftn | 18 ++- model/ftn/w3gridmd.ftn | 51 ++++++- model/ftn/w3iogrmd.ftn | 30 ++-- model/ftn/w3src4md.ftn | 316 ++++++++++++++++++++++++++++++----------- model/ftn/w3srcemd.ftn | 17 ++- 5 files changed, 328 insertions(+), 104 deletions(-) diff --git a/model/ftn/w3gdatmd.ftn b/model/ftn/w3gdatmd.ftn index ead30ac9c4..886d887708 100644 --- a/model/ftn/w3gdatmd.ftn +++ b/model/ftn/w3gdatmd.ftn @@ -801,11 +801,12 @@ !/ST4 REAL, POINTER :: DCKI(:,:), SATWEIGHTS(:,:),CUMULW(:,:),QBI(:,:) !/ST4 REAL :: AALPHA, BBETA, ZZ0MAX, ZZ0RAT, ZZALP,& !/ST4 SSINTHP, TTAUWSHELTER, SSWELLF(1:7), & -!/ST4 SSDSC(1:21), SSDSBR, & +!/ST4 SSDSC(1:21), SSDSBR, SINTAILPAR(1:5),& !/ST4 SSDSP, WWNMEANP, SSTXFTF, SSTXFTWN, & !/ST4 FFXPM, FFXFM, FFXFA, & !/ST4 SSDSBRF1, SSDSBRF2, SSDSBINT,SSDSBCK,& -!/ST4 SSDSHCK, SSDSABK, SSDSPBK, SSINBR +!/ST4 SSDSHCK, SSDSABK, SSDSPBK, SSINBR, & +!/ST4 CAPCHNK(1:10) !/ST4 REAL :: ZZWND !/ST4 REAL :: SSDSCOS, SSDSDTH, SSDSBT, SSDSBM(0:4) ! @@ -1101,9 +1102,10 @@ !/ST4 FFXFM, FFXPM, SSDSBRF1, SSDSBRF2, & !/ST4 SSDSBINT, SSDSBCK, SSDSHCK, SSDSABK, & !/ST4 SSDSPBK, SSINBR,SSINTHP,TTAUWSHELTER,& -!/ST4 SSWELLF(:), SSDSC(:), SSDSBR, & +!/ST4 SINTAILPAR(:), SSWELLF(:), SSDSC(:), SSDSBR, & !/ST4 SSDSP, WWNMEANP, SSTXFTF, SSTXFTWN, & -!/ST4 SSDSBT, SSDSCOS, SSDSDTH, SSDSBM(:) +!/ST4 SSDSBT, SSDSCOS, SSDSDTH, SSDSBM(:), & +!/ST4 CAPCHNK(:) !/ST6 REAL, POINTER :: SIN6A0, SDS6A1, SDS6A2, SWL6B1, & !/ST6 SIN6WS, SIN6FC !/ST6 INTEGER, POINTER :: SDS6P1, SDS6P2 @@ -1770,12 +1772,18 @@ !/ST4 MPARS(IMOD)%SRCPS%QBI(NKHS,NKD), & !/ST4 STAT=ISTAT ) !/ST4 CHECK_ALLOC_STATUS ( ISTAT ) +!/ST4 MPARS(IMOD)%SRCPS%IKTAB(:,:)=0. +!/ST4 MPARS(IMOD)%SRCPS%DCKI(:,:)=0. +!/ST4 MPARS(IMOD)%SRCPS%QBI(:,:)=0. !/ST4 SDSNTH = MTH/2-1 !MIN(NINT(SSDSDTH/(DTH*RADE)),MTH/2-1) !/ST4 ALLOCATE( MPARS(IMOD)%SRCPS%SATINDICES(2*SDSNTH+1,MTH), & !/ST4 MPARS(IMOD)%SRCPS%SATWEIGHTS(2*SDSNTH+1,MTH), & !/ST4 MPARS(IMOD)%SRCPS%CUMULW(MSPEC,MSPEC), & !/ST4 STAT=ISTAT ) !/ST4 CHECK_ALLOC_STATUS ( ISTAT ) +!/ST4 MPARS(IMOD)%SRCPS%SATINDICES(:,:)=0. +!/ST4 MPARS(IMOD)%SRCPS%SATWEIGHTS(:,:)=0. +!/ST4 MPARS(IMOD)%SRCPS%CUMULW(:,:)=0. ! SGRDS(IMOD)%SINIT = .TRUE. #if defined(TEST_W3GDATMD) || defined(TEST_W3GDATMD_W3DIMS) @@ -2287,6 +2295,8 @@ !/ST4 ZZ0RAT => MPARS(IMOD)%SRCPS%ZZ0RAT !/ST4 ZZALP => MPARS(IMOD)%SRCPS%ZZALP !/ST4 TTAUWSHELTER => MPARS(IMOD)%SRCPS%TTAUWSHELTER +!/ST4 SINTAILPAR => MPARS(IMOD)%SRCPS%SINTAILPAR +!/ST4 CAPCHNK => MPARS(IMOD)%SRCPS%CAPCHNK !/ST4 SSWELLFPAR => MPARS(IMOD)%SRCPS%SSWELLFPAR !/ST4 SSWELLF => MPARS(IMOD)%SRCPS%SSWELLF !/ST4 SSDSC => MPARS(IMOD)%SRCPS%SSDSC diff --git a/model/ftn/w3gridmd.ftn b/model/ftn/w3gridmd.ftn index 2131916feb..f25879bc46 100644 --- a/model/ftn/w3gridmd.ftn +++ b/model/ftn/w3gridmd.ftn @@ -750,7 +750,8 @@ !/ST3 REAL :: STXFTFTAIL, SDSC1, & !/ST3 SDSDELTA1, SDSDELTA2 ! -!/ST4 INTEGER :: SWELLFPAR, SDSISO, SDSBRFDF +!/ST4 INTEGER :: SWELLFPAR, SDSISO, SDSBRFDF, SINTABLE,& +!/ST4 TAUBUG !/ST4 REAL :: SDSBCHOICE !/ST4 REAL :: ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP,& !/ST4 ZALP, Z0RAT, TAUWSHELTER, SWELLF, & @@ -766,7 +767,11 @@ !/ST4 SDSBRF1, & !/ST4 SDSBM0, SDSBM1, SDSBM2, SDSBM3, & !/ST4 SDSBM4, SDSFACMTF, SDSCUMP, SDSNUW, & -!/ST4 SDSL, SDSMWD, SDSMWPOW, SPMSS, SDSNMTF +!/ST4 SDSL, SDSMWD, SDSMWPOW, SPMSS, SDSNMTF, & +!/ST4 SINTAIL1, SINTAIL2, & +!/ST4 CUMSIGP, VISCSTRESS, & +!/ST4 CAPCHA, CHAMIN, CHA0, UCAP, SIGMAUCAP + ! !/ST6 REAL :: SINA0, SINWS, SINFC, & !/ST6 SDSA1, SDSA2, SWLB1 @@ -855,7 +860,10 @@ !/ST4 NAMELIST /SIN4/ ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP, ZALP, & !/ST4 TAUWSHELTER, SWELLFPAR, SWELLF, & !/ST4 SWELLF2, SWELLF3, SWELLF4, SWELLF5, SWELLF6, & -!/ST4 SWELLF7, Z0RAT, SINBR +!/ST4 SWELLF7, Z0RAT, SINBR, SINTABLE, SINTAIL1, & +!/ST4 SINTAIL2, TAUWBUG, VISCSTRESS, & +!/ST4 CAPCHA, CHAMIN, CHA0, UCAP, SIGMAUCAP + !/NL1 NAMELIST /SNL1/ LAMBDA, NLPROP, KDCONV, KDMIN, & !/NL1 SNLCS1, SNLCS2, SNLCS3 !/NL2 NAMELIST /SNL2/ IQTYPE, TAILNL, NDEPTH @@ -875,7 +883,7 @@ !/ST4 SDSC5, SDSC6, SDSBR, SDSBT, SDSP, SDSISO, & !/ST4 SDSBCK, SDSABK, SDSPBK, SDSBINT, SDSHCK, & !/ST4 SDSDTH, SDSCOS, SDSBRF1, SDSBRFDF, SDSNUW, & -!/ST4 SDSBM0, SDSBM1, SDSBM2, SDSBM3, SDSBM4, & +!/ST4 SDSBM0, SDSBM1, SDSBM2, SDSBM3, SDSBM4, CUMSIGP,& !/ST4 WHITECAPWIDTH, WHITECAPDUR, SDSMWD, SDSMWPOW, SDKOF !/ST6 NAMELIST /SIN6/ SINA0, SINWS, SINFC @@ -1429,6 +1437,18 @@ !/ST4 TAUWSHELTER = 0.3 !/ST4 ZALP = 0.006 !/ST4 SINBR = 0. +!/ST4 SINTABLE = 1 +!/ST4 SINTAIL1 = 0. ! TAUWSHELTER FOR TAIL (no table) +!/ST4 SINTAIL2 = 0. ! additional peak in capillary range +!/ST4 TAUWBUG = 1 ! TAUWBUG is 1 is the bug is kept: +!/ST4 ! initializes TAUWX/Y to zero in W3SRCE +!/ST4 VISCSTRESS =0 +!/ST4 CAPCHA = 0. ! =1 indicates capping of drag is active +!/ST4 CHAMIN = 0.0001 ! +!/ST4 CHA0 = ALPHA0 ! initial value for charnock +!/ST4 UCAP = 30. ! U10 threshold from which drag capping is applied +!/ST4 SIGMAUCAP = 10. ! Width for reduction of drag beyond UCAP + ! !/ST6 SINA0 = 0.09 !/ST6 SINWS = 32.0 @@ -1498,6 +1518,16 @@ !/ST4 SSWELLF(6) = SWELLF6 !/ST4 SSWELLF(7) = SWELLF7 !/ST4 SSWELLFPAR = SWELLFPAR +!/ST4 SINTAILPAR(1) = FLOAT(SINTABLE) +!/ST4 SINTAILPAR(2) = SINTAIL1 +!/ST4 SINTAILPAR(3) = SINTAIL2 +!/ST4 SINTAILPAR(4) = FLOAT(TAUWBUG) +!/ST4 SINTAILPAR(5) = VISCSTRESS +!/ST4 CAPCHNK(1) = CAPCHA +!/ST4 CAPCHNK(2) = CHAMIN +!/ST4 CAPCHNK(3) = CHA0 +!/ST4 CAPCHNK(4) = UCAP +!/ST4 CAPCHNK(5) = SIGMAUCAP ! !/ST6 CALL READNL ( NDSS, 'SIN6', STATUS ) !/ST6 WRITE (NDSO,920) STATUS @@ -1745,8 +1775,9 @@ !/ST4 SDSBINT = 0.3 !/ST4 SDSHCK = 1.5 !/ST4 WHITECAPWIDTH = 0.3 -!/ST4 SDSSTRAIN = 0. !/ST4 SDSFACMTF = 400 ! MTF factor for Lambda , Romero (2019) +!/ST4 CUMSIGP = 0. +!/ST4 SDSSTRAIN = 0. !/ST4 SDSSTRAINA = 15. !/ST4 SDSSTRAIN2 = 0. !/ST4 WHITECAPDUR = 0.56 ! breaking duration factor @@ -1831,7 +1862,7 @@ !/ST4 SSDSC(9) = SDSL !/ST4 SSDSC(10) = SDSSTRAINA*NTH/360. ! angle Aor enhanced straining !/ST4 SSDSC(11) = SDSSTRAIN2 ! straining constant for directional part -!/ST4 SSDSC(12) = SDSBT +!/ST4 SSDSC(12) = CUMSIGP !/ST4 SSDSC(13) = SDSMWD !/ST4 SSDSC(14) = SPMSS !/ST4 SSDSC(15) = SDSMWPOW @@ -2694,7 +2725,8 @@ !/ST3 SWELLF !/ST4 WRITE (NDSO,2920) ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP, ZALP, & !/ST4 TAUWSHELTER, SWELLFPAR, SWELLF, SWELLF2, SWELLF3, SWELLF4, & -!/ST4 SWELLF5, SWELLF6, SWELLF7, Z0RAT, SINBR +!/ST4 SWELLF5, SWELLF6, SWELLF7, Z0RAT, SINBR, SINTABLE, TAUWBUG, +!/ST4 VISCSTRESS, SINTAIL1, SINTAIL2, CAPCHA, CHAMIN, CHA0, UCAP, SIGMAUCAP !/ST6 WRITE (NDSO,2920) SINA0, SINWS, SINFC !/NL1 WRITE (NDSO,2922) LAMBDA, NLPROP, KDCONV, KDMIN, & !/NL1 SNLCS1, SNLCS2, SNLCS3 @@ -5578,6 +5610,11 @@ !/ST4 ', SWELLF3 =',F8.5,', SWELLF4 =',F9.1,','/ & !/ST4 ' SWELLF5 =',F8.5,', SWELLF6 =',F8.5, & !/ST4 ', SWELLF7 =',F12.2,', Z0RAT =',F8.5,', SINBR =',F8.5,' /') +!/ST4 ' SINTABLE =',I2,', TAUWBUG =',I2, & +!/ST4 ', VISCSTRESS =',F8.5,', SINTAIL1 =',F8.5,', SINTAIL2 =',F8.5,',' / & +!/ST4 ', CAPCHA =',F8.5,', CHAMIN =',F8.5,', CHA0 =',F8.5,', UCAP =',F5.1,', SIGMAUCAP =', & +!/ST4 F5.1,' /') + ! !/ST6 920 FORMAT (/' Wind input (Donelan et al, 2006) ',A/ & !/ST6 ' --------------------------------------------------') diff --git a/model/ftn/w3iogrmd.ftn b/model/ftn/w3iogrmd.ftn index 7b89e52ba6..f32cf4c4e3 100644 --- a/model/ftn/w3iogrmd.ftn +++ b/model/ftn/w3iogrmd.ftn @@ -1070,29 +1070,39 @@ !/ST4 ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & !/ST4 TTAUWSHELTER, SSWELLFPAR, SSWELLF, SSINBR, & !/ST4 ZZ0RAT, SSDSC, & -!/ST4 SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & +!/ST4 SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & !/ST4 SSDSCOS, SSDSDTH, WWNMEANP, WWNMEANPTAIL,SSTXFTF,& !/ST4 SSTXFTFTAIL, SSTXFTWN, SSTXFTF, SSTXFTWN, & !/ST4 SSDSBRF1, SSDSBRF2, SSDSBRFDF,SSDSBCK, SSDSABK, & -!/ST4 SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & -!/ST4 SSDSHCK, DELUST, DELTAIL, DELTAUW, & -!/ST4 DELU, DELALP, TAUT, TAUHFT, TAUHFT2, & +!/ST4 SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & +!/ST4 SSDSHCK, & !/ST4 IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, & -!/ST4 DIKCUMUL, CUMULW +!/ST4 DIKCUMUL, CUMULW, SINTAILPAR, CAPCHNK +!/ST4 IF (SINTAILPAR(1).GT.0.5) THEN +!/ST4 WRITE (NDSM) DELUST, DELTAIL, DELTAUW, DELU, DELALP, & +!/ST4 TAUT, TAUHFT +!/ST4 IF (TTAUWSHELTER.GT.0) WRITE (NDSM) TAUHFT2 +!/ST4 END IF !/ST4 ELSE !/ST4 READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & !/ST4 ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, & !/ST4 TTAUWSHELTER, SSWELLFPAR, SSWELLF, SSINBR, & !/ST4 ZZ0RAT, SSDSC, & -!/ST4 SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & +!/ST4 SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, & !/ST4 SSDSCOS, SSDSDTH, WWNMEANP, WWNMEANPTAIL,SSTXFTF,& !/ST4 SSTXFTFTAIL, SSTXFTWN, SSTXFTF, SSTXFTWN, & !/ST4 SSDSBRF1, SSDSBRF2, SSDSBRFDF,SSDSBCK, SSDSABK, & -!/ST4 SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & -!/ST4 SSDSHCK, DELUST, DELTAIL, DELTAUW, & -!/ST4 DELU, DELALP, TAUT, TAUHFT, TAUHFT2, & +!/ST4 SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, & +!/ST4 SSDSHCK, & !/ST4 IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, & -!/ST4 DIKCUMUL, CUMULW +!/ST4 DIKCUMUL, CUMULW, SINTAILPAR, CAPCHNK +!/ST4 IF (SINTAILPAR(1).GT.0.5) THEN +!/ST4 CALL INSIN4(.FALSE.) +!/ST4 READ (NDSM,END=801,ERR=802,IOSTAT=IERR) & +!/ST4 DELUST, DELTAIL, DELTAUW, DELU, DELALP, & +!/ST4 TAUT, TAUHFT +!/ST4 IF (TTAUWSHELTER.GT.0) READ(NDSM,END=801,ERR=802,IOSTAT=IERR) TAUHFT2 +!/ST4 END IF !/ST4 END IF ! !/DEBUGIOGR WRITE(740+IAPROC,*) 'W3IOGR, step 18' diff --git a/model/ftn/w3src4md.ftn b/model/ftn/w3src4md.ftn index cc7359902d..1707a8ebb3 100644 --- a/model/ftn/w3src4md.ftn +++ b/model/ftn/w3src4md.ftn @@ -65,18 +65,16 @@ !air kinematic viscosity (used in WAM) INTEGER, PARAMETER :: ITAUMAX=200,JUMAX=200 INTEGER, PARAMETER :: IUSTAR=100,IALPHA=200, ILEVTAIL=50 - REAL :: TAUT(0:ITAUMAX,0:JUMAX), DELTAUW, DELU ! Table for H.F. stress as a function of 2 variables - REAL :: TAUHFT(0:IUSTAR,0:IALPHA), DELUST, DELALP - ! Table for H.F. stress as a function of 3 variables - REAL :: TAUHFT2(0:IUSTAR,0:IALPHA,0:ILEVTAIL) + REAL, ALLOCATABLE :: TAUT(:,:), TAUHFT(:,:), TAUHFT2(:,:,:) + REAL :: DELUST, DELALP, DELTAUW, DELU ! Table for swell damping REAL :: DELTAIL REAL, PARAMETER :: UMAX = 50. REAL, PARAMETER :: TAUWMAX = 2.2361 !SQRT(5.) INTEGER :: DIKCUMUL ! Size of wave height table for integrating the PDF of wave heights - INTEGER, PARAMETER :: NKHI=100, FAC_KD2=1000 + INTEGER, PARAMETER :: NKHI=100, FAC_KD2=1000 REAL, PARAMETER :: FAC_KD1=1.01, KHSMAX=2., KHMAX=2. REAL, PARAMETER ::KDMAX=200000. !/ @@ -171,7 +169,7 @@ USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, DTH, DDEN, WWNMEANP, & WWNMEANPTAIL, FTE, FTF, SSTXFTF, SSTXFTWN,& SSTXFTFTAIL, SSWELLF, ESIN, ECOS, AAIRCMIN, & - AAIRGB, AALPHA, ZZWND + AAIRGB, AALPHA, ZZWND, SSDSC !/S USE W3SERVMD, ONLY: STRACE !/T USE W3ODATMD, ONLY: NDST !/T USE W3ODATMD, ONLY: NDST @@ -197,7 +195,7 @@ !/S INTEGER, SAVE :: IENT = 0 REAL :: TAUW, EBAND, EMEANWS,UNZ, & - EB(NK),EB2(NK),ELCS, ELSN + EB(NK),EB2(NK),ELCS, ELSN, SIGFAC !/ !/ ------------------------------------------------------------------- / !/ @@ -222,17 +220,18 @@ DO IK=1, NK EB(IK) = 0. EB2(IK) = 0. + SIGFAC=SIG(IK)**SSDSC(12) * DDEN(IK) / CG(IK) DO ITH=1, NTH IS=ITH+(IK-1)*NTH EB(IK) = EB(IK) + A(ITH,IK) - ELCS = ELCS + A(ITH,IK)*ECOS(IS)*DDEN(IK) / CG(IK) - ELSN = ELSN + A(ITH,IK)*ESIN(IS)*DDEN(IK) / CG(IK) + ELCS = ELCS + A(ITH,IK)*ECOS(IS)*SIGFAC + ELSN = ELSN + A(ITH,IK)*ESIN(IS)*SIGFAC IF (LLWS(IS)) EB2(IK) = EB2(IK) + A(ITH,IK) AMAX = MAX ( AMAX , A(ITH,IK) ) END DO END DO - DLWMEAN=ATAN2(ELSN,ELCS); + DLWMEAN=ATAN2(ELSN,ELCS) ! ! 2. Integrate over directions -------------------------------------- * ! @@ -286,7 +285,6 @@ !/FLX5 CALL W3FLX5 ( ZZWND, U, UDIR, TAUA, TAUADIR, DAIR, & !/FLX5 USTAR, USDIR, Z0, CD, CHARN ) !/FLX5 ELSE - Z0=0. CALL CALC_USTAR(U,TAUW,USTAR,Z0,CHARN) UNZ = MAX ( 0.01 , U ) CD = (USTAR/UNZ)**2 @@ -395,7 +393,7 @@ USE W3GDATMD, ONLY: NK, NTH, NSPEC, DDEN, SIG, SIG2, TH, & ESIN, ECOS, EC2, ZZWND, AALPHA, BBETA, ZZALP,& TTAUWSHELTER, SSWELLF, DDEN2, DTH, SSINTHP, & - ZZ0RAT, SSINBR + ZZ0RAT, SSINBR, SINTAILPAR !/S USE W3SERVMD, ONLY: STRACE !/T USE W3ODATMD, ONLY: NDST !/T0 USE W3ODATMD, ONLY: NDST @@ -434,7 +432,7 @@ REAL XI,DELI1,DELI2 REAL XJ,DELJ1,DELJ2 REAL XK,DELK1,DELK2 - REAL :: CONST, CONST0, CONST2, TAU1 + REAL :: CONST, CONST0, CONST2, TAU1, TAU1NT, ZINF, TENSK REAL X,ZARG,ZLOG,UST REAL :: COSWIND, XSTRESS, YSTRESS, TAUHF REAL TEMP, TEMP2 @@ -442,6 +440,12 @@ REAL DSTAB(3,NSPEC), DVISC, DTURB REAL STRESSSTAB(3,2),STRESSSTABN(3,2) !/T0 REAL :: DOUT(NK,NTH) + INTEGER, PARAMETER :: JTOT=50 + REAL , PARAMETER :: KM=363.,CMM=0.2325 ! K and C at phase speed minimum in rad/m + REAL :: OMEGACC, OMEGA, ZZ0, ZX, ZBETA, USTR, TAUR, & + CONST1, LEVTAIL0, X0, Y, DELY, YC, ZMU, & + LEVTAIL, CGTAIL, ALPHAM, FM, ALPHAT, FMEAN + REAL, ALLOCATABLE :: W(:) !/ !/ ------------------------------------------------------------------- / !/ @@ -458,6 +462,11 @@ STRESSSTAB =0. STRESSSTABN =0. ! +! Coupling coefficient times density ratio DRAT +! + CONST1=BBETA/KAPPA**2 ! needed for the tail + CONST0=CONST1*DRAT ! needed for the resolved spectrum +! ! 1.a estimation of surface roughness parameters ! Z0VISC = 0.1*nu_air/MAX(USTAR,0.0001) @@ -546,10 +555,6 @@ ! STRESSSTAB(ISTAB,:)=0. STRESSSTABN(ISTAB,:)=0. -! -! Coupling coefficient times density ratio DRAT -! - CONST0=BBETA*DRAT/(kappa**2) ! DO IK=1, NK TAUPX=TAUX-ABS(TTAUWSHELTER)*STRESSSTAB(ISTAB,1) @@ -665,6 +670,15 @@ ! !/T1 CALL OUTMAT (NDST, D, NTH, NTH, NK, 'diag Sin') ! + TAUPX=TAUX-ABS(TTAUWSHELTER)*XSTRESS + TAUPY=TAUY-ABS(TTAUWSHELTER)*YSTRESS + USTP=(TAUPX**2+TAUPY**2)**0.25 + USDIRP=ATAN2(TAUPY,TAUPX) + + UST=USTP + ! + ! Computes HF Tail + ! ! Computes the high-frequency contribution ! the difference in spectal density (kx,ky) to (f,theta) ! is integrated in this modified CONST0 @@ -675,37 +689,117 @@ IS=ITH+(NK-1)*NTH COSWIND=(ECOS(IS)*COSU+ESIN(IS)*SINU) TEMP=TEMP+A(IS)*(MAX(COSWIND,0.))**3 - END DO - - TAUPX=TAUX-ABS(TTAUWSHELTER)*XSTRESS - TAUPY=TAUY-ABS(TTAUWSHELTER)*YSTRESS - USTP=(TAUPX**2+TAUPY**2)**0.25 - USDIRP=ATAN2(TAUPY,TAUPX) + END DO - UST=USTP - ! finds the values in the tabulated stress TAUHFT - XI=UST/DELUST - IND = MAX(1,MIN (IUSTAR-1, INT(XI))) - DELI1= MAX(MIN (1. ,XI-FLOAT(IND)),0.) - DELI2= 1. - DELI1 - XJ=MAX(0.,(GRAV*Z0/MAX(UST,0.00001)**2-AALPHA) / DELALP) - J = MAX(1 ,MIN (IALPHA-1, INT(XJ))) - DELJ1= MAX(0.,MIN (1. , XJ-FLOAT(J))) - DELJ2=1. - DELJ1 - IF (TTAUWSHELTER.GT.0) THEN - XK = CONST0*TEMP / DELTAIL - I = MIN (ILEVTAIL-1, INT(XK)) - DELK1= MIN (1. ,XK-FLOAT(I)) - DELK2=1. - DELK1 - TAU1 =((TAUHFT2(IND,J,I)*DELI2+TAUHFT2(IND+1,J,I)*DELI1 )*DELJ2 & - +(TAUHFT2(IND,J+1,I)*DELI2+TAUHFT2(IND+1,J+1,I)*DELI1)*DELJ1)*DELK2 & - +((TAUHFT2(IND,J,I+1)*DELI2+TAUHFT2(IND+1,J,I+1)*DELI1 )*DELJ2 & - +(TAUHFT2(IND,J+1,I+1)*DELI2+TAUHFT2(IND+1,J+1,I+1)*DELI1)*DELJ1)*DELK1 + LEVTAIL0 = CONST0 * TEMP ! LEVTAIL is sum over theta of A(k,theta)*cos^3(theta-wind)*DTH*SIG^5/(g^2*2pi)*2*pi*SIG/CG + ! which is the same as sum of + ! E(f,theta)*cos^3(theta-wind)*DTH*SIG^5/(g^2*2pi) + ! reminder: sum of E(f,theta)*DTH*SIG^5/(g^2*2pi) is 2*k^3*E(k) +! +! Computation of stress supported by tail: uses table if SINTAILPAR(1)=1 ,correspoding to SINTABLE = 1 +! + IF(SINTAILPAR(1).LT.0.5) THEN + ALLOCATE(W(JTOT)) + W(2:JTOT-1)=1. + W(1)=0.5 + W(JTOT)=0.5 + X0 = 0.05 + ! + USTR= UST + ZZ0=Z0 + OMEGACC = MAX(SIG(NK),X0*GRAV/UST) + YC = OMEGACC*SQRT(ZZ0/GRAV) + + ! DELY = MAX((1.-YC)/REAL(JTOT),0.) + ! Changed integration variable from Y to LOG(Y) and to log(K) + !ZINF = LOG(YC) + !DELY = MAX((1.-ZINF)/REAL(JTOT),0.) + ZINF = LOG(SIG(NK)**2/GRAV) + DELY = (LOG(TPI/0.005)-ZINF)/REAL(JTOT) + + TAUR=UST**2 + TAU1=0. + + ! Integration loop over the tail wavenumbers or frequencies ... + DO J=1,JTOT + !Y = YC+REAL(J-1)*DELY + !OMEGA = Y*SQRT(GRAV/ZZ0) + !OMEGA = SQRT(GRAV*Y) + ! This is the deep water phase speed... No surface tension !! + !CM = GRAV/OMEGA + ! With this form, Y is the wavenumber in the tail; + Y= EXP(ZINF+REAL(J-1)*DELY) + TENSK =1+(Y/KM)**2 + OMEGA = SQRT(GRAV*Y*TENSK) + CM = SQRT(GRAV*TENSK/Y) + CGTAIL = 0.5*(3*(Y/KM)**2+1)*SQRT(GRAV/(Y*TENSK)) + !this is the inverse wave age, shifted by ZZALP (tuning) + ZX = USTR/CM +ZZALP + ZARG = MIN(KAPPA/ZX,20.) + ! ZMU corresponds to EXP(ZCN) + ZMU = MIN(GRAV*ZZ0/CM**2*EXP(ZARG),1.) + ZLOG = MIN(ALOG(ZMU),0.) + ZBETA = CONST1*ZMU*ZLOG**4 + ! + ! Optional addition of capillary wave peak if SINTAIL2=1 + ! + IF (SINTAILPAR(3).GT.0) THEN + IF (USTR.LT.CM) THEN + ALPHAM=MAX(0.,0.01*(1.+ALOG(USTR/CM))) + ELSE + ALPHAM=0.01*(1+3.*ALOG(USTR/CM)) + END IF + FM=EXP(-0.25*(Y/KM-1)**2) + + ALPHAT=ALPHAM*(CMM/CM)*FM ! equivalent to 2*Bh in Elfouhaily et al. + LEVTAIL=LEVTAIL0*0.5*(1-tanh((Y-20)/5))+SINTAILPAR(3)*0.5*(1+TANH((Y-20)/5))*ALPHAT + ELSE + LEVTAIL=LEVTAIL0 + END IF + ! WRITE(991,*) 'TAIL??',SINTAILPAR(3),LEVTAIL0,LEVTAIL,ALPHAT,Y,Y/KM,OMEGA/(TPI) + + !TAU1=TAU1+W(J)*ZBETA*(USTR/UST)**2/Y*DELY ! integration over LOG(Y) + TAU1=TAU1+W(J)*ZBETA*USTR**2*LEVTAIL*DELY*CGTAIL/CM ! integration over LOG(K) + + ! NB: the factor ABS(TTAUWSHELTER) was forgotten in the TAUHFT2 table + !TAUR=TAUR-W(J)*ABS(TTAUWSHELTER)*USTR**2*ZBETA*LEVTAIL/Y*DELY + !TAUR=TAUR-W(J)*USTR**2*ZBETA*LEVTAIL*DELY ! integration over LOG(Y) + TAUR=TAUR-W(J)*SINTAILPAR(2)*USTR**2*ZBETA*LEVTAIL*DELY*CGTAIL/CM ! DK/K*CG/C = D OMEGA / OMEGA + USTR=SQRT(MAX(TAUR,0.)) + END DO + DEALLOCATE(W) + TAU1NT=TAU1 + TAUHF = TAU1 + ! + ! In this case, uses tables for high frequency contribution to TAUW. + ! ELSE - TAU1 =(TAUHFT(IND,J)*DELI2+TAUHFT(IND+1,J)*DELI1 )*DELJ2 & - +(TAUHFT(IND,J+1)*DELI2+TAUHFT(IND+1,J+1)*DELI1)*DELJ1 + ! finds the values in the tabulated stress TAUHFT + XI=UST/DELUST + IND = MAX(1,MIN (IUSTAR-1, INT(XI))) + DELI1= MAX(MIN (1. ,XI-FLOAT(IND)),0.) + DELI2= 1. - DELI1 + XJ=MAX(0.,(GRAV*Z0/MAX(UST,0.00001)**2-AALPHA) / DELALP) + J = MAX(1 ,MIN (IALPHA-1, INT(XJ))) + DELJ1= MAX(0.,MIN (1. , XJ-FLOAT(J))) + DELJ2=1. - DELJ1 + IF (TTAUWSHELTER.GT.0) THEN + XK = LEVTAIL0/ DELTAIL + I = MIN (ILEVTAIL-1, INT(XK)) + DELK1= MIN (1. ,XK-FLOAT(I)) + DELK2=1. - DELK1 + TAU1 =((TAUHFT2(IND,J,I)*DELI2+TAUHFT2(IND+1,J,I)*DELI1 )*DELJ2 & + +(TAUHFT2(IND,J+1,I)*DELI2+TAUHFT2(IND+1,J+1,I)*DELI1)*DELJ1)*DELK2 & + +((TAUHFT2(IND,J,I+1)*DELI2+TAUHFT2(IND+1,J,I+1)*DELI1 )*DELJ2 & + +(TAUHFT2(IND,J+1,I+1)*DELI2+TAUHFT2(IND+1,J+1,I+1)*DELI1)*DELJ1)*DELK1 + ELSE + TAU1 =(TAUHFT(IND,J)*DELI2+TAUHFT(IND+1,J)*DELI1 )*DELJ2 & + +(TAUHFT(IND,J+1)*DELI2+TAUHFT(IND+1,J+1)*DELI1)*DELJ1 END IF - TAUHF = CONST0*TEMP*UST**2*TAU1 + ! + TAUHF = LEVTAIL0*UST**2*TAU1 + END IF ! End of test on use of table + TAUWX = XSTRESS+TAUHF*COS(USDIRP) TAUWY = YSTRESS+TAUHF*SIN(USDIRP) ! @@ -793,7 +887,8 @@ SSDSDTH, SSDSCOS, TH, DTH, XFR, ECOS, ESIN, & SSDSC, SSDSBRF1, SSDSBCK, SSDSBINT, SSDSPBK, & SSDSABK, SSDSHCK, IKTAB, DCKI, SATINDICES, & - SATWEIGHTS, CUMULW, NKHS, NKD, NDTAB, QBI + SATWEIGHTS, CUMULW, NKHS, NKD, NDTAB, QBI, & + SINTAILPAR !/S USE W3SERVMD, ONLY: STRACE !/ IMPLICIT NONE @@ -828,13 +923,18 @@ ! ! These precomputed tables are written in mod_def.ww3 ! - IF (FLTABS) THEN - CALL TABU_STRESS - CALL TABU_TAUHF(SIG(NK) ) !tabulate high-frequency stress: 2D table + IF (SINTAILPAR(1).GT.0.5) THEN + IF (.NOT. ALLOCATED(TAUT)) ALLOCATE(TAUT(0:ITAUMAX,0:JUMAX)) + IF (.NOT. ALLOCATED(TAUHFT)) ALLOCATE(TAUHFT(0:IUSTAR,0:IALPHA)) + IF (FLTABS) THEN + CALL TABU_STRESS + CALL TABU_TAUHF(SIG(NK) ) !tabulate high-frequency stress: 2D table + END IF IF (TTAUWSHELTER.GT.0) THEN - CALL TABU_TAUHF2(SIG(NK) ) !tabulate high-frequency stress: 3D table - END IF + IF (.NOT. ALLOCATED(TAUHFT2)) ALLOCATE(TAUHFT2(0:IUSTAR,0:IALPHA,0:ILEVTAIL)) + IF (FLTABS) CALL TABU_TAUHF2(SIG(NK) ) !tabulate high-frequency stress: 3D table END IF + END IF ! ! 2. SPONTANEOUS BREAKING ! 2.a Precomputes the indices for integrating the spectrum to get saturation (TEST 4xx ) @@ -958,7 +1058,7 @@ ! Precomputes the weights for the cumulative effect (TEST 441 and 500) ! DIKCUMUL = 0 - IF (SSDSC(3).NE.0) THEN + IF (SSDSC(3).LT.0.) THEN ! DIKCUMUL is the integer difference in frequency bands ! between the "large breakers" and short "wiped-out waves" DIKCUMUL = NINT(SSDSBRF1/(XFR-1.)) @@ -1069,7 +1169,7 @@ ! ---------------------------------------------------------------------- INTEGER I,J,ITER REAL ZTAUW,UTOP,CDRAG,WCD,USTOLD,TAUOLD - REAL X,UST,ZZ0,ZNU,F,DELF,ZZ00 + REAL X,UST,ZZ0,F,DELF,ZZ00 ! ! DELU = UMAX/FLOAT(JUMAX) @@ -1528,39 +1628,97 @@ ! ! 10. Source code : !-----------------------------------------------------------------------------! - USE CONSTANTS, ONLY: GRAV, KAPPA - USE W3GDATMD, ONLY: ZZWND, AALPHA + USE CONSTANTS, ONLY: GRAV, KAPPA, NU_AIR + USE W3GDATMD, ONLY: ZZWND, AALPHA, ZZ0MAX, SINTAILPAR, CAPCHNK !/T USE W3ODATMD, ONLY: NDST IMPLICIT NONE REAL, intent(in) :: WINDSPEED,TAUW REAL, intent(out) :: USTAR, Z0, CHARN ! local variables - REAL SQRTCDM1 - REAL XI,DELI1,DELI2,XJ,delj1,delj2 - REAL TAUW_LOCAL - INTEGER IND,J -! - TAUW_LOCAL=MAX(MIN(TAUW,TAUWMAX),0.) - XI = SQRT(TAUW_LOCAL)/DELTAUW - IND = MIN ( ITAUMAX-1, INT(XI)) ! index for stress table - DELI1 = MIN(1.,XI - REAL(IND)) !interpolation coefficient for stress table - DELI2 = 1. - DELI1 - XJ = WINDSPEED/DELU - J = MIN ( JUMAX-1, INT(XJ) ) - DELJ1 = MIN(1.,XJ - REAL(J)) - DELJ2 = 1. - DELJ1 - USTAR=(TAUT(IND,J)*DELI2+TAUT(IND+1,J )*DELI1)*DELJ2 & - + (TAUT(IND,J+1)*DELI2+TAUT(IND+1,J+1)*DELI1)*DELJ1 -! -! Determines roughness length -! + REAL :: SQRTCDM1 + REAL :: XI,DELI1,DELI2,XJ,delj1,delj2 ! used for table version + INTEGER :: IND,J + REAL :: TAUW_LOCAL + REAL :: TAUOLD,CDRAG,WCD,USTOLD,X,UST,ZZ0,ZNU,ZZ00,F,DELF + REAL :: CHATH, XMIN ! used for reduction of high winds + INTEGER, PARAMETER :: NITER=10 + REAL , PARAMETER :: XM=0.50, EPS1=0.00001 + INTEGER :: ITER + + CHATH = AALPHA +! + IF (SINTAILPAR(1).GT.0.5) THEN + TAUW_LOCAL=MAX(MIN(TAUW,TAUWMAX),0.) + XI = SQRT(TAUW_LOCAL)/DELTAUW + IND = MIN ( ITAUMAX-1, INT(XI)) ! index for stress table + DELI1 = MIN(1.,XI - REAL(IND)) !interpolation coefficient for stress table + DELI2 = 1. - DELI1 + XJ = WINDSPEED/DELU + J = MIN ( JUMAX-1, INT(XJ) ) + DELJ1 = MIN(1.,XJ - REAL(J)) + DELJ2 = 1. - DELJ1 + USTAR=(TAUT(IND,J)*DELI2+TAUT(IND+1,J )*DELI1)*DELJ2 & + + (TAUT(IND,J+1)*DELI2+TAUT(IND+1,J+1)*DELI1)*DELJ1 + ELSE + IF (CAPCHNK(1).EQ.1.) THEN + ! Computation of sea surface roughness and charnock coefficient based + ! on Donelan (2018). Determines minimum charnock; reduction for winds + ! above a particular threshold + CHATH = CAPCHNK(2) + 0.5 * (CAPCHNK(3) - CAPCHNK(2)) * (1 & + - TANH((WINDSPEED-CAPCHNK(4))/CAPCHNK(5))) + XMIN = 0.15 * (CAPCHNK(3)-CHATH) + ELSE + XMIN = 0. + END IF + + ! This max is for comparison ... to be removed later + ! TAUW_LOCAL=MAX(MIN(TAUW,TAUWMAX),0.) + TAUW_LOCAL=TAUW + CDRAG = 0.0012875 + WCD = SQRT(CDRAG) + USTOLD = WINDSPEED*WCD + TAUOLD = MAX(USTOLD**2, TAUW_LOCAL+EPS1) + + DO ITER=1,NITER + X = MAX(TAUW_LOCAL/TAUOLD, XMIN) + UST = SQRT(TAUOLD) + ZZ00 = CHATH*TAUOLD/GRAV + IF (ZZ0MAX.NE.0) ZZ00=MIN(ZZ00,ZZ0MAX) + + ZZ0 = ZZ00/(1.-X)**XM + ZNU = 0.11*nu_air/MAX(UST,1E-6) + ZZ0 = SINTAILPAR(5)*ZNU+ZZ0 + F = UST-KAPPA*WINDSPEED/(ALOG(ZZWND/ZZ0)) + DELF= 1.-KAPPA*WINDSPEED/(ALOG(ZZWND/ZZ0))**2*2./UST & + *(1.-(XM+1)*X)/(1.-X) + UST = UST-F/DELF + TAUOLD= MAX(UST**2., TAUW_LOCAL+EPS1) + END DO + USTAR=UST + END IF + ! + ! Determines roughness length + ! + IF (USTAR.GT.0.001) THEN SQRTCDM1 = MIN(WINDSPEED/USTAR,100.0) Z0 = ZZWND*EXP(-KAPPA*SQRTCDM1) - IF (USTAR.GT.0.001) THEN - CHARN = GRAV*Z0/USTAR**2 - ELSE - CHARN = AALPHA - END IF + CHARN = GRAV*Z0/USTAR**2 + ELSE + IF (USTAR.GT.0) THEN + SQRTCDM1 = MIN(WINDSPEED/USTAR,100.0) + Z0 = ZZWND*EXP(-KAPPA*SQRTCDM1) + ELSE + Z0 = CHATH*0.001*0.001/GRAV + END IF + CHARN = CHATH + END IF + IF(CAPCHNK(1) .EQ. 1) THEN + ! Problem with large values of CHARN for low winds + CHARN = MIN( 0.09 , CHARN ) + IF(CHARN.LT.CHATH) CHARN = CHATH + ENDIF + + ! WRITE(6,*) 'CALC_USTAR:',WINDSPEED,TAUW,AALPHA,CHARN,Z0,USTAR ! RETURN END SUBROUTINE CALC_USTAR diff --git a/model/ftn/w3srcemd.ftn b/model/ftn/w3srcemd.ftn index c07b96398e..616edea63a 100644 --- a/model/ftn/w3srcemd.ftn +++ b/model/ftn/w3srcemd.ftn @@ -385,7 +385,7 @@ !/ST3 USE W3SRC3MD !/ST3 USE W3GDATMD, ONLY : ZZWND, FFXFM, FFXPM !/ST4 USE W3SRC4MD, ONLY : W3SPR4, W3SIN4, W3SDS4 -!/ST4 USE W3GDATMD, ONLY : ZZWND, FFXFM, FFXPM, FFXFA +!/ST4 USE W3GDATMD, ONLY : ZZWND, FFXFM, FFXPM, FFXFA, SINTAILPAR !/ST6 USE W3SRC6MD !/ST6 USE W3SWLDMD, ONLY : W3SWL6 !/ST6 USE W3GDATMD, ONLY : SWL6S6 @@ -685,10 +685,14 @@ !/ST3 AMAX, U10ABS, U10DIR, USTAR, USTDIR, & !/ST3 TAUWX, TAUWY, CD, Z0, CHARN, LLWS, FMEANWS) !/ST3 TWS = 1./FMEANWS -!/ST4 TAUWX=0. -!/ST4 TAUWY=0. +!/ST4 IF (SINTAILPAR(4).GT.0.5) THEN ! this is designed to keep the bug as an option +!/ST4 TAUWX=0. +!/ST4 TAUWY=0. +!/ST4 END IF !/ST4 IF ( IT .eq. 0 ) THEN !/ST4 LLWS(:) = .TRUE. +!/ST4 TAUWX=0. +!/ST4 TAUWY=0. !/ST4 USTAR=0. !/ST4 USTDIR=0. !/ST4 ELSE @@ -706,7 +710,7 @@ !/DEBUGSRC!/ST4 WRITE(740+IAPROC,*) '1: out value ALPHA=', CHARN, ' FMEANWS=', FMEANWS !/DEBUGSRC!/ST4 END IF -!/ST4 CALL W3SIN4 ( SPEC, CG1, WN2, U10ABS, USTAR, DRAT, AS, & +!/ST4 IF (SINTAILPAR(4).GT.0.5) CALL W3SIN4 ( SPEC, CG1, WN2, U10ABS, USTAR, DRAT, AS, & !/ST4 U10DIR, Z0, CD, TAUWX, TAUWY, TAUWAX, TAUWAY, & !/ST4 VSIN, VDIN, LLWS, IX, IY, BRLAMBDA ) !/ST4 END IF @@ -1259,6 +1263,11 @@ !/ST4 CALL W3SIN4 ( SPEC, CG1, WN2, U10ABS, USTAR, DRAT, AS, & !/ST4 U10DIR, Z0, CD, TAUWX, TAUWY, TAUWAX, TAUWAY, & !/ST4 VSIN, VDIN, LLWS, IX, IY, BRLAMBDA ) +!/ST4 IF (SINTAILPAR(4).LT.0.5) CALL W3SPR4 (SPEC, CG1, WN1, EMEAN, FMEAN, FMEAN1, WNMEAN,& +!/ST4 AMAX, U10ABS, U10DIR, & +!/ST4!/FLX5 TAUA, TAUADIR, DAIR, & +!/ST4 USTAR, USTDIR, & +!/ST4 TAUWX, TAUWY, CD, Z0, CHARN, LLWS, FMEANWS, DLWMEAN) ! ! 7. Check if integration complete ---------------------------------- * From 1972231c420de36e152921debe614226fb8104c0 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Thu, 16 May 2024 10:07:33 +0100 Subject: [PATCH 2/4] Fixed typo --- model/ftn/w3gridmd.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/w3gridmd.ftn b/model/ftn/w3gridmd.ftn index f25879bc46..0f48cc2d2e 100644 --- a/model/ftn/w3gridmd.ftn +++ b/model/ftn/w3gridmd.ftn @@ -751,7 +751,7 @@ !/ST3 SDSDELTA1, SDSDELTA2 ! !/ST4 INTEGER :: SWELLFPAR, SDSISO, SDSBRFDF, SINTABLE,& -!/ST4 TAUBUG +!/ST4 TAUWBUG !/ST4 REAL :: SDSBCHOICE !/ST4 REAL :: ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP,& !/ST4 ZALP, Z0RAT, TAUWSHELTER, SWELLF, & From 74c5da81b00d2c731aac64aa6195e6f1d7e17d12 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Thu, 16 May 2024 10:09:02 +0100 Subject: [PATCH 3/4] Fixed missing continuation & character --- model/ftn/w3gridmd.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/w3gridmd.ftn b/model/ftn/w3gridmd.ftn index 0f48cc2d2e..78988c290f 100644 --- a/model/ftn/w3gridmd.ftn +++ b/model/ftn/w3gridmd.ftn @@ -2725,7 +2725,7 @@ !/ST3 SWELLF !/ST4 WRITE (NDSO,2920) ZWND, ALPHA0, Z0MAX, BETAMAX, SINTHP, ZALP, & !/ST4 TAUWSHELTER, SWELLFPAR, SWELLF, SWELLF2, SWELLF3, SWELLF4, & -!/ST4 SWELLF5, SWELLF6, SWELLF7, Z0RAT, SINBR, SINTABLE, TAUWBUG, +!/ST4 SWELLF5, SWELLF6, SWELLF7, Z0RAT, SINBR, SINTABLE, TAUWBUG, & !/ST4 VISCSTRESS, SINTAIL1, SINTAIL2, CAPCHA, CHAMIN, CHA0, UCAP, SIGMAUCAP !/ST6 WRITE (NDSO,2920) SINA0, SINWS, SINFC !/NL1 WRITE (NDSO,2922) LAMBDA, NLPROP, KDCONV, KDMIN, & From c3d31fd137144d3c9527e7f7b4f9345312a18729 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Thu, 16 May 2024 10:25:04 +0100 Subject: [PATCH 4/4] Fixed typo --- model/ftn/w3gridmd.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/w3gridmd.ftn b/model/ftn/w3gridmd.ftn index 78988c290f..674526119b 100644 --- a/model/ftn/w3gridmd.ftn +++ b/model/ftn/w3gridmd.ftn @@ -5609,7 +5609,7 @@ !/ST4 ' SWELLF =',F8.5,', SWELLF2 =',F8.5, & !/ST4 ', SWELLF3 =',F8.5,', SWELLF4 =',F9.1,','/ & !/ST4 ' SWELLF5 =',F8.5,', SWELLF6 =',F8.5, & -!/ST4 ', SWELLF7 =',F12.2,', Z0RAT =',F8.5,', SINBR =',F8.5,' /') +!/ST4 ', SWELLF7 =',F12.2,', Z0RAT =',F8.5,', SINBR =',F8.5,','/ & !/ST4 ' SINTABLE =',I2,', TAUWBUG =',I2, & !/ST4 ', VISCSTRESS =',F8.5,', SINTAIL1 =',F8.5,', SINTAIL2 =',F8.5,',' / & !/ST4 ', CAPCHA =',F8.5,', CHAMIN =',F8.5,', CHA0 =',F8.5,', UCAP =',F5.1,', SIGMAUCAP =', &