Skip to content
Closed
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
76 changes: 23 additions & 53 deletions model/src/w3adatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ MODULE W3ADATMD
! US3D R.A. Public 3D Stokes drift.
! USSP R.A. Public Partitioned Surface Stokes drift
!
! USSHX/Y R.A. Public Surface layer averaged Stokes drift.
!
! ABA R.A. Public Near-bottom rms wave ex. amplitude.
! ABD R.A. Public Corresponding direction.
! UBA R.A. Public Near-bottom rms wave velocity.
Expand Down Expand Up @@ -440,9 +442,7 @@ MODULE W3ADATMD
XPRMS(:), XTPMS(:), XPHICE(:), &
XTAUICE(:,:)
REAL, POINTER :: XP2SMS(:,:), XUS3D(:,:), XUSSP(:,:)
#ifdef W3_CESMCOUPLED
REAL, POINTER :: XLANGMT(:)
#endif
REAL, POINTER :: XUSSHX(:), XUSSHY(:)
!
! Output fields group 7)
!
Expand Down Expand Up @@ -471,12 +471,7 @@ MODULE W3ADATMD
!
REAL, POINTER :: USERO(:,:)
REAL, POINTER :: XUSERO(:,:)
#ifdef W3_CESMCOUPLED
! Output fileds for Langmuir mixing in group
REAL, POINTER :: LANGMT(:), LAPROJ(:), LASL(:), &
LASLPJ(:), LAMULT(:), ALPHAL(:), &
ALPHALS(:), USSXH(:), USSYH(:)
#endif
REAL, POINTER :: USSHX(:), USSHY(:)
!
! Spatial derivatives
!
Expand Down Expand Up @@ -557,11 +552,7 @@ MODULE W3ADATMD
!/
!/ Data aliases for structure WADAT(S)
!/
#ifdef W3_CESMCOUPLED
REAL, POINTER :: LANGMT(:), LAPROJ(:), ALPHAL(:), &
ALPHALS(:), LAMULT(:), LASL(:), &
LASLPJ(:), USSXH(:), USSYH(:)
#endif
REAL, POINTER :: USSHX(:), USSHY(:)
REAL, POINTER :: CG(:,:), WN(:,:)
REAL, POINTER :: IC3WN_R(:,:), IC3WN_I(:,:), IC3CG(:,:)
!
Expand Down Expand Up @@ -1042,19 +1033,6 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )

#ifdef W3_CESMCOUPLED
ALLOCATE ( WADATS(IMOD)%USSXH(NSEALM) , &
WADATS(IMOD)%USSYH(NSEALM) , &
WADATS(IMOD)%LANGMT(NSEALM) , &
WADATS(IMOD)%LAPROJ(NSEALM) , &
WADATS(IMOD)%LASL(NSEALM) , &
WADATS(IMOD)%LASLPJ(NSEALM) , &
WADATS(IMOD)%ALPHAL(NSEALM) , &
WADATS(IMOD)%ALPHALS(NSEALM) , &
WADATS(IMOD)%LAMULT(NSEALM) , &
STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
#endif
!
WADATS(IMOD)%HS = UNDEF
WADATS(IMOD)%WLM = UNDEF
Expand Down Expand Up @@ -1230,6 +1208,8 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
WADATS(IMOD)%TPMS (NSEALM) , &
WADATS(IMOD)%PHICE (NSEALM) , &
WADATS(IMOD)%TAUICE(NSEALM,2), &
WADATS(IMOD)%USSHX(NSEALM), &
WADATS(IMOD)%USSHY(NSEALM), &
STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
!
Expand Down Expand Up @@ -1269,12 +1249,11 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
WADATS(IMOD)%TPMS = UNDEF
WADATS(IMOD)%PHICE = UNDEF
WADATS(IMOD)%TAUICE = UNDEF
#ifdef W3_CESMCOUPLED
WADATS(IMOD)%LANGMT = UNDEF
#endif
IF ( P2MSF(1).GT.0 ) WADATS(IMOD)%P2SMS = UNDEF
IF ( US3DF(1).GT.0 ) WADATS(IMOD)%US3D = UNDEF
IF ( USSPF(1).GT.0 ) WADATS(IMOD)%USSP = UNDEF
WADATS(IMOD)%USSHX = UNDEF
WADATS(IMOD)%USSHY = UNDEF

#ifdef W3_MEMCHECK
WRITE(30000+IAPROC,*) 'memcheck_____:', 'W3DIMA 6'
Expand Down Expand Up @@ -1543,7 +1522,7 @@ SUBROUTINE W3DIMA ( IMOD, NDSE, NDST, D_ONLY )
! 5. Restore previous grid setting if necessary
!
IF ( JGRID .NE. IMOD ) CALL W3SETG ( JGRID, NDSE, NDST )

#ifdef W3_MEMCHECK
WRITE(30000+IAPROC,*) 'memcheck_____:', 'W3DIMA END'
call getMallocInfo(mallinfos)
Expand Down Expand Up @@ -2232,15 +2211,17 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS )
CHECK_ALLOC_STATUS ( ISTAT )
END IF
!
#ifdef W3_CESMCOUPLED
IF ( OUTFLAGS( 6, 14) ) THEN
ALLOCATE ( WADATS(IMOD)%XLANGMT(NXXX), STAT=ISTAT )
ALLOCATE ( WADATS(IMOD)%XUSSHX(NXXX), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
ALLOCATE ( WADATS(IMOD)%XUSSHY(NXXX), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
ELSE
ALLOCATE ( WADATS(IMOD)%XLANGMT(1), STAT=ISTAT )
ALLOCATE ( WADATS(IMOD)%XUSSHX(1), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
ALLOCATE ( WADATS(IMOD)%XUSSHY(1), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
END IF
#endif
!
WADATS(IMOD)%XSXX = UNDEF
WADATS(IMOD)%XSYY = UNDEF
Expand All @@ -2262,9 +2243,8 @@ SUBROUTINE W3XDMA ( IMOD, NDSE, NDST, OUTFLAGS )
WADATS(IMOD)%XUSSP = UNDEF
WADATS(IMOD)%XTAUOCX = UNDEF
WADATS(IMOD)%XTAUOCY = UNDEF
#ifdef W3_CESMCOUPLED
WADATS(IMOD)%XLANGMT = UNDEF
#endif
WADATS(IMOD)%XUSSHX = UNDEF
WADATS(IMOD)%XUSSHY = UNDEF
!
IF ( OUTFLAGS( 7, 1) ) THEN
ALLOCATE ( WADATS(IMOD)%XABA(NXXX), STAT=ISTAT )
Expand Down Expand Up @@ -2987,18 +2967,8 @@ SUBROUTINE W3SETA ( IMOD, NDSE, NDST )
USERO => WADATS(IMOD)%USERO
!
WN => WADATS(IMOD)%WN
#ifdef W3_CESMCOUPLED
! USSX and USSY are already set
LANGMT => WADATS(IMOD)%LANGMT
LAPROJ => WADATS(IMOD)%LAPROJ
LASL => WADATS(IMOD)%LASL
LASLPJ => WADATS(IMOD)%LASLPJ
ALPHAL => WADATS(IMOD)%ALPHAL
ALPHALS=> WADATS(IMOD)%ALPHALS
USSXH => WADATS(IMOD)%USSXH
USSYH => WADATS(IMOD)%USSYH
LAMULT => WADATS(IMOD)%LAMULT
#endif
USSHX => WADATS(IMOD)%USSHX
USSHY => WADATS(IMOD)%USSHY
#ifdef W3_IC3
IC3WN_R=> WADATS(IMOD)%IC3WN_R
IC3WN_I=> WADATS(IMOD)%IC3WN_I
Expand Down Expand Up @@ -3319,9 +3289,6 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST )
BEDFORMS=> WADATS(IMOD)%XBEDFORMS
PHIBBL => WADATS(IMOD)%XPHIBBL
TAUBBL => WADATS(IMOD)%XTAUBBL
#ifdef W3_CESMCOUPLED
LANGMT => WADATS(IMOD)%XLANGMT
#endif
!
MSSX => WADATS(IMOD)%XMSSX
MSSY => WADATS(IMOD)%XMSSY
Expand All @@ -3337,6 +3304,9 @@ SUBROUTINE W3XETA ( IMOD, NDSE, NDST )
CFLKMAX => WADATS(IMOD)%XCFLKMAX
!
USERO => WADATS(IMOD)%XUSERO
!
USSHX => WADATS(IMOD)%XUSSHX
USSHY => WADATS(IMOD)%XUSSHY
!
END IF
!
Expand Down
11 changes: 11 additions & 0 deletions model/src/w3gdatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,9 @@ MODULE W3GDATMD
#ifdef W3_IS2
REAL, POINTER :: IS2PARS(:)
#endif
LOGICAL :: LMPENABLED ! flag to enable Li et al. Langmuir parameterization
LOGICAL :: SDTAIL ! flag to enable high-freq tail in Li et al. Stokes Drift computations
REAL :: HSLMODE ! 0 for test (HSL=10m everywhere, 1 for coupler-based HSL)
!
! unstructured data
!
Expand Down Expand Up @@ -1082,6 +1085,10 @@ MODULE W3GDATMD
#endif
INTEGER, POINTER :: NBEDGE
INTEGER, POINTER :: EDGES(:,:), NEIGH(:,:)

LOGICAL, POINTER :: LMPENABLED
LOGICAL, POINTER :: SDTAIL
REAL, POINTER :: HSLMODE
!
! Variables for unstructured grids
!
Expand Down Expand Up @@ -2301,6 +2308,10 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST )
US3DF => GRIDS(IMOD)%US3DF
USSPF => GRIDS(IMOD)%USSPF
USSP_WN => GRIDS(IMOD)%USSP_WN
!
LMPENABLED => GRIDS(IMOD)%LMPENABLED
SDTAIL => GRIDS(IMOD)%SDTAIL
HSLMODE => GRIDS(IMOD)%HSLMODE
#ifdef W3_REF1
REFLC => GRIDS(IMOD)%REFLC
REFLD => GRIDS(IMOD)%REFLD
Expand Down
16 changes: 16 additions & 0 deletions model/src/w3gridmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1109,6 +1109,7 @@ MODULE W3GRIDMD
STH1MF, I1STH1M, I2STH1M, &
TH2MF, I1TH2M, I2TH2M, &
STH2MF, I1STH2M, I2STH2M
NAMELIST /LMPN/ LMPENABLED, SDTAIL, HSLMODE
#ifdef W3_IS1
NAMELIST /SIS1/ ISC1, ISC2
#endif
Expand Down Expand Up @@ -2769,6 +2770,11 @@ SUBROUTINE W3GRID()
I2STH2M=NK
!
FACBERG=1.
!
LMPENABLED = .false.
SDTAIL = .false.
HSLMODE = 0 ! 0 for test (HSL=10m everywhere, 1 for coupler-based HSL)
!
#ifdef W3_IS0
WRITE (NDSO,944)
#endif
Expand Down Expand Up @@ -2927,6 +2933,10 @@ SUBROUTINE W3GRID()
IC5MAXKI, IC5MINHW, IC5MAXITER, IC5RKICK, &
IC5KFILTER, IC5MSTR(NINT(IC5VEMOD))
#endif
!
CALL READNL ( NDSS, 'LMPN', STATUS )
WRITE (NDSO,4960) STATUS
WRITE (NDSO,4961) LMPENABLED, SDTAIL, HSLMODE
!
CALL READNL ( NDSS, 'OUTS', STATUS )
WRITE (NDSO,4970) STATUS
Expand Down Expand Up @@ -6829,6 +6839,10 @@ SUBROUTINE W3GRID()
/' (0.0==> no reduction and 1.0==> no wind', &
/' input with 100% ice cover)')
!
!
4960 FORMAT (/' Langmuir Mixing Parameterization ',A/ &
' --------------------------------------------------')
4961 FORMAT (' &LMPN LMPENABLED = ',L, 'SDTAIL = ', L, ' HSLMODE = ', I2 '/' )
!
4970 FORMAT (/' Spectral output on full grid ',A/ &
' --------------------------------------------------')
Expand Down Expand Up @@ -7506,6 +7520,8 @@ SUBROUTINE READNL ( NDS, NAME, STATUS )
READ (NDS,NML=UNST,END=801,ERR=802,IOSTAT=J)
CASE('OUTS')
READ (NDS,NML=OUTS,END=801,ERR=802,IOSTAT=J)
CASE('LMPN')
READ (NDS,NML=LMPN,END=801,ERR=802,IOSTAT=J)
CASE('MISC')
READ (NDS,NML=MISC,END=801,ERR=802,IOSTAT=J)
CASE DEFAULT
Expand Down
23 changes: 7 additions & 16 deletions model/src/w3idatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,8 @@ MODULE W3IDATMD
! FLCUR Log. Public Flag for current input.
! FLWIND Log. Public Flag for wind input.
! FLICE Log. Public Flag for ice input.
#ifdef W3_CESMCOUPLED
! HML R.A. Public Mixed layer depth
#endif
! HSL R.A. Public Depth of a surface layer over which Stokes
! drift is averaged
! FLTAUA Log. Public Flag for atmospheric momentum input
! FLRHOA Log. Public Flag for air density input
! INFLAGS1 L.A. Public Array consolidating the above six
Expand Down Expand Up @@ -206,9 +205,7 @@ MODULE W3IDATMD
REAL, POINTER :: CYTIDE(:,:,:,:)
REAL, POINTER :: WLTIDE(:,:,:,:)
#endif
#ifdef W3_CESMCOUPLED
REAL, POINTER :: HML(:,:)
#endif
REAL, POINTER :: HSL(:,:)
LOGICAL :: IINIT
#ifdef W3_WRST
LOGICAL :: WRSTIINIT=.FALSE.
Expand Down Expand Up @@ -259,9 +256,7 @@ MODULE W3IDATMD
LOGICAL, POINTER :: FLLEVTIDE, FLCURTIDE, &
FLLEVRESI, FLCURRESI
#endif
#ifdef W3_CESMCOUPLED
REAL , POINTER :: HML(:,:)
#endif
REAL , POINTER :: HSL(:,:)
!/
CONTAINS
!/ ------------------------------------------------------------------- /
Expand Down Expand Up @@ -558,7 +553,7 @@ SUBROUTINE W3DIMI ( IMOD, NDSE, NDST, FLAGSTIDEIN )
FLLEVRESI = FLAGSTIDE(3)
FLCURRESI = FLAGSTIDE(4)
#endif

FLWIND => INPUTS(IMOD)%INFLAGS1(3)
FLICE => INPUTS(IMOD)%INFLAGS1(4)
FLTAUA => INPUTS(IMOD)%INFLAGS1(5)
Expand Down Expand Up @@ -713,10 +708,8 @@ SUBROUTINE W3DIMI ( IMOD, NDSE, NDST, FLAGSTIDEIN )
CHECK_ALLOC_STATUS ( ISTAT )
END IF
!
#ifdef W3_CESMCOUPLED
ALLOCATE ( INPUTS(IMOD)%HML(NX,NY), STAT=ISTAT )
ALLOCATE ( INPUTS(IMOD)%HSL(NX,NY), STAT=ISTAT )
CHECK_ALLOC_STATUS ( ISTAT )
#endif
!
INPUTS(IMOD)%IINIT = .TRUE.
!
Expand Down Expand Up @@ -1022,9 +1015,7 @@ SUBROUTINE W3SETI ( IMOD, NDSE, NDST )
ICEI => INPUTS(IMOD)%ICEI
BERGI => INPUTS(IMOD)%BERGI
END IF
#ifdef W3_CESMCOUPLED
HML => INPUTS(IMOD)%HML
#endif
HSL => INPUTS(IMOD)%HSL
!
IF ( FLTAUA ) THEN
UX0 => INPUTS(IMOD)%UX0
Expand Down
Loading