Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion model/src/pdlib_field_vec.F90
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@ SUBROUTINE GET_ARRAY_SIZE(TheSize)
IF ( FLGRDALL( 2, 19) ) THEN
IH = IH + 1
END IF
IF ( FLGRDALL( 2, 20) ) THEN
IH =IH + 1
END IF
IF ( FLGRDALL( 3, 1) ) THEN
DO IK=E3DF(2,1),E3DF(3,1)
IH = IH + 1
Expand Down Expand Up @@ -830,7 +833,7 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD)
STH2M, HSIG, TAUICE, PHICE, PTHP0, PQP,&
PPE, PGW, PSW, PTM1, PT1, PT2, PEP, &
QP, MSSD, MSCD, STMAXE, STMAXD, HMAXE, &
HCMAXE, HMAXD, HCMAXD, WBT, USSP
HCMAXE, HMAXD, HCMAXD, WBT, USSP, BRCOEF
USE W3GDATMD, ONLY: NK, NSEAL
USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NTPROC, FLOUT, &
NAPFLD, NAPPNT, NAPRST, NAPBPT, NAPTRK,&
Expand Down Expand Up @@ -968,6 +971,10 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD)
IH = IH + 1
Arrexch(IH,JSEA)=WNMEAN(JSEA)
END IF
IF ( FLGRDALL( 2, 20) ) THEN
IH = IH + 1
Arrexch(IH,JSEA)=BRCOEF(JSEA)
END IF
IF ( FLGRDALL( 3, 1) ) THEN
DO IK=E3DF(2,1),E3DF(3,1)
IH = IH + 1
Expand Down Expand Up @@ -1411,6 +1418,10 @@ SUBROUTINE DO_OUTPUT_EXCHANGES(IMOD)
IH = IH + 1
WNMEAN(1:NSEA) = ARRtotal(IH,:)
END IF
IF ( FLGRDALL( 2, 20) ) THEN
IH = IH + 1
BRCOEF(1:NSEA) = ARRtotal(IH,:)
END IF
IF ( FLGRDALL( 3, 1) ) THEN
DO IK=E3DF(2,1),E3DF(3,1)
IH = IH + 1
Expand Down
20 changes: 17 additions & 3 deletions model/src/w3adatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -407,14 +407,15 @@ MODULE W3ADATMD
THS(:), THP0(:), &
HSIG(:), STMAXE(:), STMAXD(:), &
HMAXE(:), HCMAXE(:), HMAXD(:), &
HCMAXD(:), QP(:), WBT(:), WNMEAN(:)
HCMAXD(:), QP(:), WBT(:), WNMEAN(:),&
BRCOEF(:)
REAL, POINTER :: XHS(:), XWLM(:), XT02(:), XT0M1(:), &
XT01 (:), XFP0(:), XTHM(:), &
XTHS(:), XTHP0(:), &
XHSIG(:), XSTMAXE(:), XSTMAXD(:), &
XHMAXE(:), XHCMAXE(:), XHMAXD(:), &
XHCMAXD(:), XQP(:), XWBT(:), &
XWNMEAN(:)
XWNMEAN(:), XBRCOEF(:)
!
! Output fields group 3)
!
Expand Down Expand Up @@ -589,7 +590,7 @@ MODULE W3ADATMD
THP0(:), HSIG(:), &
STMAXE(:), STMAXD(:), HMAXE(:), &
HCMAXE(:), HMAXD(:), HCMAXD(:), &
QP(:), WBT(:), WNMEAN(:)
QP(:), WBT(:), WNMEAN(:), BRCOEF(:)
!
REAL, POINTER :: EF(:,:), TH1M(:,:), STH1M(:,:), &
TH2M(:,:), STH2M(:,:)
Expand Down Expand Up @@ -1050,6 +1051,7 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
WADATS(IMOD)%HCMAXD(NSEALM), WADATS(IMOD)%QP(NSEALM), &
WADATS(IMOD)%WBT(NSEALM), &
WADATS(IMOD)%WNMEAN(NSEALM), &
WADATS(IMOD)%BRCOEF(NSEALM), &
STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
!
Expand All @@ -1072,6 +1074,7 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
WADATS(IMOD)%QP = UNDEF
WADATS(IMOD)%WBT = UNDEF
WADATS(IMOD)%WNMEAN = UNDEF
WADATS(IMOD)%BRCOEF = UNDEF

call print_memcheck(memunit, 'memcheck_____:'//' W3DIMA 3')
!
Expand Down Expand Up @@ -1733,6 +1736,14 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS )
CHECK_ALLOC_STATUS ( ISTAT )
END IF
!
IF ( OUTFLAGS( 2, 20) ) THEN
ALLOCATE ( WADATS(IMOD)%XBRCOEF(NXXX), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
ELSE
ALLOCATE ( WADATS(IMOD)%XBRCOEF(1), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
END IF
!
WADATS(IMOD)%XHS = UNDEF
WADATS(IMOD)%XWLM = UNDEF
WADATS(IMOD)%XT02 = UNDEF
Expand All @@ -1751,6 +1762,7 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS )
WADATS(IMOD)%XHCMAXD= UNDEF
WADATS(IMOD)%XWBT = UNDEF
WADATS(IMOD)%XWNMEAN= UNDEF
WADATS(IMOD)%XBRCOEF= UNDEF
!
IF ( OUTFLAGS( 3, 1) ) THEN
ALLOCATE ( WADATS(IMOD)%XEF(NXXX,E3DF(2,1):E3DF(3,1)), STAT=ISTAT )
Expand Down Expand Up @@ -2860,6 +2872,7 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST )
QP => WADATS(IMOD)%QP
WBT => WADATS(IMOD)%WBT
WNMEAN => WADATS(IMOD)%WNMEAN
BRCOEF => WADATS(IMOD)%BRCOEF
!
EF => WADATS(IMOD)%EF
TH1M => WADATS(IMOD)%TH1M
Expand Down Expand Up @@ -3203,6 +3216,7 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST )
QP => WADATS(IMOD)%XQP
WBT => WADATS(IMOD)%XWBT
WNMEAN => WADATS(IMOD)%XWNMEAN
BRCOEF => WADATS(IMOD)%XBRCOEF
!
EF => WADATS(IMOD)%XEF
TH1M => WADATS(IMOD)%XTH1M
Expand Down
8 changes: 6 additions & 2 deletions model/src/w3gdatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,9 @@ MODULE W3GDATMD
! SDBC2 Real Public Hmax/d ratio. (!/DB1)
! FDONLY Log. Public Flag for checking depth only (!/DB1)
! otherwise Miche criterion.
! FSLOPE Log. Public Flag for computing slope (!/DB1)
! dependant breaking coeff,
! constant otherwise
! ----------------------------------------------------------------
!
! The structure STRP contains parameters for the triad interaction
Expand Down Expand Up @@ -989,7 +992,7 @@ MODULE W3GDATMD
#endif
#ifdef W3_DB1
REAL :: SDBC1, SDBC2
LOGICAL :: FDONLY
LOGICAL :: FDONLY, FSLOPE
REAL :: SDBSC
#endif
END TYPE SDBP
Expand Down Expand Up @@ -1391,7 +1394,7 @@ MODULE W3GDATMD
!/
#ifdef W3_DB1
REAL, POINTER :: SDBC1, SDBC2
LOGICAL, POINTER :: FDONLY
LOGICAL, POINTER :: FDONLY, FSLOPE
REAL, POINTER :: SDBSC
#endif
!/
Expand Down Expand Up @@ -2814,6 +2817,7 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST )
SDBC1 => MPARS(IMOD)%SDBPS%SDBC1
SDBC2 => MPARS(IMOD)%SDBPS%SDBC2
FDONLY => MPARS(IMOD)%SDBPS%FDONLY
FSLOPE => MPARS(IMOD)%SDBPS%FSLOPE
SDBSC => MPARS(IMOD)%SDBPS%SDBSC
#endif
!
Expand Down
37 changes: 28 additions & 9 deletions model/src/w3gridmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -896,6 +896,7 @@ MODULE W3GRIDMD
#ifdef W3_DB1
REAL :: BJALFA, BJGAM
LOGICAL :: BJFLAG
LOGICAL :: BRFLAG
#endif
#ifdef W3_PR2
REAL :: DTIME
Expand Down Expand Up @@ -1066,7 +1067,7 @@ MODULE W3GRIDMD
BOTROUGHMIN, BOTROUGHFAC
#endif
#ifdef W3_DB1
NAMELIST /SDB1/ BJALFA, BJGAM, BJFLAG
NAMELIST /SDB1/ BJALFA, BJGAM, BJFLAG, BRFLAG
#endif
#ifdef W3_UOST
NAMELIST /UOST/ UOSTFILELOCAL, UOSTFILESHADOW, &
Expand Down Expand Up @@ -2358,11 +2359,20 @@ SUBROUTINE W3GRID()
BJALFA = 1.
BJGAM = 0.73
BJFLAG = .TRUE.
BRFLAG = .FALSE.
CALL READNL ( NDSS, 'SDB1', STATUS )
WRITE (NDSO,928) STATUS
BJALFA = MAX ( 0. , BJALFA )
BJGAM = MAX ( 0. , BJGAM )
WRITE (NDSO,929) BJALFA, BJGAM
WRITE (NDSO,928) STATUS
IF ( BRFLAG ) THEN
WRITE (NDSO,*) ' Slope-dependant breaking coeff.'
BJALFA = MIN (50. , MAX ( 40. , BJALFA ))
BJGAM = MAX ( 0. , BJGAM )
WRITE (NDSO,929) BJALFA, BJGAM
ELSE
WRITE (NDSO,*) ' Constant breaking coeff.'
BJALFA = MAX ( 0. , BJALFA )
BJGAM = MAX ( 0. , BJGAM )
WRITE (NDSO,929) BJALFA, BJGAM
END IF
IF ( BJFLAG ) THEN
WRITE (NDSO,*) ' Using Hmax/d ratio only.'
ELSE
Expand All @@ -2373,6 +2383,7 @@ SUBROUTINE W3GRID()
SDBC1 = BJALFA
SDBC2 = BJGAM
FDONLY = BJFLAG
FSLOPE = BRFLAG
#endif
!
!
Expand Down Expand Up @@ -3314,9 +3325,17 @@ SUBROUTINE W3GRID()
#endif
#ifdef W3_DB1
IF ( BJFLAG ) THEN
WRITE (NDSO,2928) BJALFA, BJGAM, '.TRUE.'
IF (BRFLAG) THEN
WRITE (NDSO,2928) BJALFA, BJGAM, '.TRUE.', '.TRUE.'
ELSE
WRITE (NDSO,2928) BJALFA, BJGAM, '.TRUE.', '.FALSE.'
END IF
ELSE
WRITE (NDSO,2928) BJALFA, BJGAM, '.FALSE.'
IF (BRFLAG) THEN
WRITE (NDSO,2928) BJALFA, BJGAM, '.FALSE.', '.TRUE.'
ELSE
WRITE (NDSO,2928) BJALFA, BJGAM, '.FALSE.', '.FALSE.'
END IF
END IF
#endif
#ifdef W3_PR1
Expand Down Expand Up @@ -6514,10 +6533,10 @@ SUBROUTINE W3GRID()
#ifdef W3_DB1
928 FORMAT (/' Surf breaking (B&J 1978) ',A/ &
' --------------------------------------------------')
929 FORMAT ( ' alpha :',F8.3/ &
929 FORMAT ( ' alpha / slope factor :',F8.3/ &
' gamma :',F8.3)
2928 FORMAT ( ' &SDB1 BJALFA =',F7.3,', BJGAM =',F7.3, &
', BJFLAG = ',A,' /')
', BJFLAG = ',A,', BRFLAG = ' ,A,' /')
#endif
!
#ifdef W3_TR0
Expand Down
23 changes: 22 additions & 1 deletion model/src/w3initmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2150,7 +2150,8 @@ SUBROUTINE W3MPIO ( IMOD )
STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, &
HCMAXD, QP, PTHP0, PQP, PPE, PGW, PSW, &
PTM1, PT1, PT2, PEP, WBT, CX, CY, &
TAUOCX, TAUOCY, WNMEAN, QKK, SKEW, EMBIA1, EMBIA2
TAUOCX, TAUOCY, WNMEAN, QKK, SKEW, &
EMBIA1, EMBIA2, BRCOEF
#endif

#ifdef W3_MPI
Expand Down Expand Up @@ -2464,6 +2465,16 @@ SUBROUTINE W3MPIO ( IMOD )
IT, MPI_COMM_WAVE, IRQGO(IH), IERR)
#ifdef W3_MPIT
WRITE (NDST,9011) IH, ' 2/19', IROOT, IT, IRQGO(IH), IERR
#endif
END IF
!
IF ( FLGRDALL( 2, 20) ) THEN
IH = IH + 1
IT = IT + 1
CALL MPI_SEND_INIT (BRCOEF(1),NSEALM , MPI_REAL, IROOT, &
IT, MPI_COMM_WAVE, IRQGO(IH), IERR)
#ifdef W3_MPIT
WRITE (NDST,9011) IH, ' 2/20', IROOT, IT, IRQGO(IH), IERR
#endif
END IF
!
Expand Down Expand Up @@ -3534,6 +3545,16 @@ SUBROUTINE W3MPIO ( IMOD )
MPI_COMM_WAVE, IRQGO2(IH), IERR )
#ifdef W3_MPIT
WRITE (NDST,9011) IH, ' 2/19', IFROM, IT, IRQGO2(IH), IERR
#endif
END IF
!
IF ( FLGRDALL( 2, 20) ) THEN
IH = IH + 1
IT = IT + 1
CALL MPI_RECV_INIT (BRCOEF(I0),1,WW3_FIELD_VEC, IFROM, IT, &
MPI_COMM_WAVE, IRQGO2(IH), IERR )
#ifdef W3_MPIT
WRITE (NDST,9011) IH, ' 2/20', IFROM, IT, IRQGO2(IH), IERR
#endif
END IF
!
Expand Down
16 changes: 14 additions & 2 deletions model/src/w3iogomd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -912,10 +912,13 @@ SUBROUTINE W3FLDTOIJ(FLD, I, J, IAPROC, NAPOUT, NDSEN)
CASE('WNM')
I = 2
J = 19
CASE('BRCOEF')
I = 2
J = 20
#ifdef W3_OASOCM
CASE('THM')
I = 2
J = 20
J = 21
#endif
!
! Group 3
Expand Down Expand Up @@ -2517,7 +2520,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD &
USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN, &
TAUA, TAUADIR
USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, THM, THS, THP0,&
WBT, WNMEAN
WBT, WNMEAN, BRCOEF
USE W3ADATMD, ONLY: DTDYN, FCUT, ABA, ABD, UBA, UBD, SXX, SYY, SXY,&
PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, &
PTHP0, PQP, PPE, PGW, PSW, PTM1, PT1, PT2, &
Expand Down Expand Up @@ -2841,6 +2844,7 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD &
IF ( FLOGRD( 2,16) ) HCMAXD(ISEA) = UNDEF
IF ( FLOGRD( 2,17) ) WBT (ISEA) = UNDEF
IF ( FLOGRD( 2,19) ) WNMEAN(ISEA) = UNDEF
IF ( FLOGRD( 2,20) ) BRCOEF(ISEA) = UNDEF
!
IF ( FLOGRD( 3, 1) ) EF (ISEA,:) = UNDEF
IF ( FLOGRD( 3, 2) ) TH1M (ISEA,:) = UNDEF
Expand Down Expand Up @@ -3210,6 +3214,11 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD &
WRITE ( NDSOG ) WNMEAN(1:NSEA)
#ifdef W3_ASCII
WRITE ( NDSOA,* ) 'WNMEAN:', WNMEAN(1:NSEA)
#endif
ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 20 ) THEN
WRITE ( NDSOG ) BRCOEF(1:NSEA)
#ifdef W3_ASCII
WRITE ( NDSOA,* ) 'BRCOEF:', BRCOEF(1:NSEA)
#endif
!
! Section 3)
Expand Down Expand Up @@ -3779,6 +3788,9 @@ SUBROUTINE W3IOGO ( INXOUT, NDSOG, IOTST, IMOD &
ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN
READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) &
WNMEAN(1:NSEA)
ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 20 ) THEN
READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) &
BRCOEF(1:NSEA)
!
! Section 3)
!
Expand Down
10 changes: 5 additions & 5 deletions model/src/w3iogrmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1809,18 +1809,18 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT &
#ifdef W3_DB1
IF ( WRITE ) THEN
WRITE (NDSM) &
SDBC1, SDBC2, FDONLY
SDBC1, SDBC2, FDONLY, FSLOPE
#ifdef W3_ASCII
WRITE (NDSA,*) &
'SDBC1, SDBC2, FDONLY:', &
SDBC1, SDBC2, FDONLY
'SDBC1, SDBC2, FDONLY, FSLOPE:', &
SDBC1, SDBC2, FDONLY, FSLOPE
#endif
ELSE
READ (NDSM,END=801,ERR=802,IOSTAT=IERR) &
SDBC1, SDBC2, FDONLY
SDBC1, SDBC2, FDONLY, FSLOPE
END IF
!
IF ( FLTEST ) WRITE (NDST,9053) SDBC1, SDBC2, FDONLY
IF ( FLTEST ) WRITE (NDST,9053) SDBC1, SDBC2, FDONLY, FSLOPE
#endif

#ifdef W3_UOST
Expand Down
9 changes: 5 additions & 4 deletions model/src/w3odatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ MODULE W3ODATMD
INTEGER :: NOUTP = -1, IOUTP = -1, IOSTYP = 1
!
INTEGER, PARAMETER :: NOGRP = 10
INTEGER, PARAMETER :: NGRPP = 20
INTEGER, PARAMETER :: NGRPP = 21
INTEGER, PARAMETER :: DIMP = 15
INTEGER :: NOGE(NOGRP)
INTEGER :: NOTYPE
Expand Down Expand Up @@ -770,9 +770,9 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST )
!
! 2) Standard mean wave parameters
!
NOGE(2) = 19
#ifdef W3_OASOCM
NOGE(2) = 20
#ifdef W3_OASOCM
NOGE(2) = 21
#endif
!
IDOUT( 2, 1) = 'Wave height '
Expand All @@ -794,8 +794,9 @@ SUBROUTINE W3NOUT ( NDSERR, NDSTST )
IDOUT( 2, 17) = 'Dominant wave bT '
IDOUT( 2, 18) = 'Peak prd. (from fp)'
IDOUT( 2, 19) = 'Mean wave number '
IDOUT( 2, 20) = 'Breaking coef. '
#ifdef W3_OASOCM
IDOUT( 2, 20) = 'Mean wave dir. norot'
IDOUT( 2, 21) = 'Mean wave dir. norot'
#endif
! IDOUT( 2,10) = 'Mean wave dir. a2b2'
! IDOUT( 2,11) = 'Mean dir. spr. a2b2'
Expand Down
Loading