Skip to content
Merged
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
43 changes: 43 additions & 0 deletions model/src/w3sic4md.F90
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ MODULE W3SIC4MD
! *** Rogers et al. tech. rep. 2021 (RYW2021)
! *** Yu et al. CRST 2022
! *** Yu JMSE 2022
! *** Meylan et al. Ocean Modeling 2021
!
! 6. Switches :
!
Expand Down Expand Up @@ -138,6 +139,7 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
!/ 11-Jan-2024 : Method 8 added (Meylan et al. 2018) (E. Rogers)
!/ 11-Jan-2024 : Method 9 added (Rogers et al., 2021)
!/ denoted "RYW2021" (E. Rogers)
!/ 14-Aug-2024 : Method 10 added (Meylan et al. 2021) (E. Thomas)
!/
!/ FIXME : Move field input to W3SRCE and provide
!/ (S.Zieger) input parameter to W3SIC1 to make the subroutine
Expand Down Expand Up @@ -307,6 +309,8 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
! suggested default is marked with "(*SD*)", for consistency
! with SWAN (v41.31AB or later)
!
! 10) Meylan et al. 2021 (Ocean Modeling): ocean-wave attenuation
! due to scattering by sea ice floes.
! ------------------------------------------------------------------
!
! For all methods, the user can specify namelist
Expand Down Expand Up @@ -450,6 +454,8 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
REAL, ALLOCATABLE :: FREQ(:) ! wave frequency
REAL, ALLOCATABLE :: MARG1(:), MARG2(:) ! Arguments for M2
REAL, ALLOCATABLE :: KARG1(:), KARG2(:), KARG3(:) !Arguments for M3
REAL :: x1,x2,x3,x1sqr,x2sqr,x3sqr !Arguments for M10
REAL :: perfour,amhb,bmhb !Arguments for M10
LOGICAL :: NML_INPUT ! if using namelist input for M2

!/
Expand Down Expand Up @@ -699,6 +705,43 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
DO IK=1,NK
WN_I(IK) = Chf*(hice**mpow)*(FREQ(IK)**npow)
END DO

CASE (10)
! Cubic fit to Meylan, Horvat & Bitz 2021
! ICECOEF1 is thickness
! ICECOEF5 is floe size
! TPI/SIG is period
x3=min(ICECOEF1,3.5) ! limit thickness to 3.5 m
x3=max(x3,0.1) ! limit thickness >0.1 m since I make fit below
x2=min(ICECOEF5*0.5,100.0) ! convert dia to radius, limit to 100m
x2=max(2.5,x2)
x2sqr=x2*x2
x3sqr=x3*x3
amhb = 2.12e-3
bmhb = 4.59e-2

DO IK=1, NK
x1=TPI/SIG(IK) ! period
x1sqr=x1*x1
KARG1(ik)=-0.26982 + 1.5043*x3 - 0.70112*x3sqr + 0.011037*x2 + &
(-0.0073178)*x2*x3 + 0.00036604*x2*x3sqr + &
(-0.00045789)*x2sqr + 1.8034e-05*x2sqr*x3 + &
(-0.7246)*x1 + 0.12068*x1*x3 + &
(-0.0051311)*x1*x3sqr + 0.0059241*x1*x2 + &
0.00010771*x1*x2*x3 - 1.0171e-05*x1*x2sqr + &
0.0035412*x1sqr - 0.0031893*x1sqr*x3 + &
(-0.00010791)*x1sqr*x2 + &
0.00031073*x1**3 + 1.5996e-06*x2**3 + 0.090994*x3**3
KARG1(IK)=min(KARG1(IK),0.0)
ALPHA(IK) = 10.0**KARG1(IK)
perfour=x1sqr*x1sqr
if ((x1.gt.5.0) .and. (x1.lt.20.0)) then
ALPHA(IK) = ALPHA(IK) + amhb/x1sqr+bmhb/perfour
else if (x1.gt.20.0) then
ALPHA(IK) = amhb/x1sqr+bmhb/perfour
endif
WN_I(IK) = ALPHA(IK) * 0.5
end do

CASE DEFAULT
WN_I = ICECOEF1 !Default to IC1: Uniform in k
Expand Down
1 change: 1 addition & 0 deletions regtests/bin/matrix.base
Original file line number Diff line number Diff line change
Expand Up @@ -1957,6 +1957,7 @@
echo "$rtst -w work_IC4_M7 -i input_IC4_M7 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -w work_IC4_M8 -i input_IC4_M8 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -w work_IC4_M9 -i input_IC4_M9 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -w work_IC4_M10 -i input_IC4_M10 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -g 1000m -w work_IC5_M1 -i input_IC5_M1 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -g 1000m -w work_IC5_M2 -i input_IC5_M2 $ww3 ww3_tic1.1" >> matrix.body
echo "$rtst -g 1000m -w work_IC5_M3 -i input_IC5_M3 $ww3 ww3_tic1.1" >> matrix.body
Expand Down
9 changes: 9 additions & 0 deletions regtests/ww3_tic1.1/info
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
# IC4METHOD = 8 - Meylan et al. (2018) ; Liu et al. (2020) #
# (NB: redundant with IC5+IC5VEMOD=3) #
# IC4METHOD = 9 - RYW (2021) ; Yu et al. (2022) #
# IC4METHOD = 10 - Meylan et al. (2021) #
# IC5 = Choose from three different effective medium models #
# IC5VEMOD = 1 - Extended Fox and Squire model (EFS) #
# IC5VEMOD = 2 - Robinson and Palmer model (RP) #
Expand Down Expand Up @@ -101,6 +102,14 @@
# 'IC1' 19680606 000000 5.35E-6 #
# 'IC2' 19680606 000000 16.05E-6 #
# #
# ------------> &SIC4 IC4METHOD = 10 / #
# ...ICECOEF1, ICECOEF5 are required: #
# T T Ice parameter 1 #
# T T Ice parameter 5 #
# ... #
# 'IC1' 19680606 000000 0.2 #
# 'IC5' 19680606 000000 0.459 #
# #
# Reference (w/plots): Rogers and Orzech, NRL Memorandum Report (2013) #
# available from http://www7320.nrlssc.navy.mil/pubs.php #
# (This report only covers IC1 and IC2, not IC3, which is newer) #
Expand Down
2 changes: 2 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/namelists_1-D.nml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
&SIC4 IC4METHOD = 10 /
END OF NAMELISTS
16 changes: 16 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/points.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
0.00 0. 'Point 1 '
1.00E3 0. 'Point 2 '
2.00E3 0. 'Point 3 '
3.00E3 0. 'Point 4 '
4.00E3 0. 'Point 5 '
5.00E3 0. 'Point 6 '
6.00E3 0. 'Point 7 '
7.00E3 0. 'Point 8 '
8.00E3 0. 'Point 9 '
9.00E3 0. 'Point 10 '
10.00E3 0. 'Point 11 '
11.00E3 0. 'Point 12 '
12.00E3 0. 'Point 13 '
13.00E3 0. 'Point 14 '
14.00E3 0. 'Point 15 '
15.00E3 0. 'Point 16 '
1 change: 1 addition & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/switch
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NOGRB SHRD PR3 UQ FLX2 LN0 ST0 NL0 BT0 DB0 TR0 BS0 IC4 IS0 REF0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7
43 changes: 43 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_grid.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
$ WAVEWATCH III Grid preprocessor input file
$ ------------------------------------------
'1-D parameterized ice test '
$
$ 1.1 0.04118 25 24 0.0
1.1 0.0418 31 36 5.0
$
F T F F F T
60. 60. 60. 60.
$
$ IC4METHOD determines calculation
$ IC4METHOD = 1 - Wadhams et al. (1988)
$ IC4METHOD = 2 - Meylan et al. (2014)
$ IC4METHOD = 3 - Kohout & Meylan (2008) in Horvat & Tziperman (2015)
$ IC4METHOD = 4 - Kohout et al. (2014)
$ IC4METHOD = 5 - Simple ki step function
$ IC4METHOD = 6 - Simple ki step function via namelist
$ IC4METHOD = 7 - Doble et al. (GRL 2015)
$ IC4METHOD = 8 - Meylan et al. (2018) ; Liu et al. (2020)
$ IC4METHOD = 9 - RYW (2021) ; Yu et al. (2022)
$ IC4M8 Fit to R21A L ChfM2=0.059
$ IC4M10
&SIC4 IC4METHOD = 10 , IC4CN = 0.059/
END OF NAMELISTS
$
'RECT' F 'NONE'
156 3
1.0E3 1.0E3 1.
-1.0E3 -1.0E3 1.
$ dlim dmin file# scale layout# format# formatdescrip filetype# filenm
-0.1 0.1 401 -1.0 1 1 '(....)' 'NAME' '../input_IC1/depth1d.flat'
$
10 1 1 '(....)' 'PART' 'input'
$
$ First grid
$
2 2 F
$
0 0 F
0 0 F
0 0
$
0. 0. 0. 0. 0
81 changes: 81 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_grid.nml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
! -------------------------------------------------------------------- !
! WAVEWATCH III - ww3_grid.nml - Grid pre-processing !
! -------------------------------------------------------------------- !

! -------------------------------------------------------------------- !
! Define the spectrum parameterization via SPECTRUM_NML namelist
! -------------------------------------------------------------------- !
&SPECTRUM_NML
SPECTRUM%XFR = 1.1
SPECTRUM%FREQ1 = 0.0418
SPECTRUM%NK = 31
SPECTRUM%NTH = 36
SPECTRUM%THOFF = 5.0
/

! -------------------------------------------------------------------- !
! Define the run parameterization via RUN_NML namelist
! -------------------------------------------------------------------- !
&RUN_NML
RUN%FLCX = T
RUN%FLSOU = T
/

! -------------------------------------------------------------------- !
! Define the timesteps parameterization via TIMESTEPS_NML namelist
! -------------------------------------------------------------------- !
&TIMESTEPS_NML
TIMESTEPS%DTMAX = 60.
TIMESTEPS%DTXY = 60.
TIMESTEPS%DTKTH = 60.
TIMESTEPS%DTMIN = 60.
/

! -------------------------------------------------------------------- !
! Define the grid to preprocess via GRID_NML namelist
! -------------------------------------------------------------------- !
&GRID_NML
GRID%NAME = '1-D parameterized ice test'
GRID%NML = '../input_IC4_M10/namelists_1-D.nml'
GRID%TYPE = 'RECT'
GRID%COORD = 'CART'
GRID%CLOS = 'NONE'
GRID%ZLIM = -0.1
GRID%DMIN = 0.1
/

! -------------------------------------------------------------------- !
! Define the rectilinear grid type via RECT_NML namelist
! -------------------------------------------------------------------- !
&RECT_NML
RECT%NX = 156
RECT%NY = 3
RECT%SX = 1.0E3
RECT%SY = 1.0E3
RECT%X0 = -1.0E3
RECT%Y0 = -1.0E3
/

! -------------------------------------------------------------------- !
! Define the depth to preprocess via DEPTH_NML namelist
! -------------------------------------------------------------------- !
&DEPTH_NML
DEPTH%SF = -1.0
DEPTH%FILENAME = '../input_IC1/depth1d.flat'
/

! -------------------------------------------------------------------- !
! Define the input boundary points via INBND_COUNT_NML and
! INBND_POINT_NML namelist
! -------------------------------------------------------------------- !
&INBND_COUNT_NML
INBND_COUNT%N_POINT = 1
/

&INBND_POINT_NML
INBND_POINT(1) = 2 2 F
/

! -------------------------------------------------------------------- !
! WAVEWATCH III - end of namelist !
! -------------------------------------------------------------------- !
20 changes: 20 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_ounf.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
$ WAVEWATCH III Grid output post-processing (netcdf)
$---------------------------------------------------
19680606 000000 3600. 99
N
$ Options: DPT CUR WND DT WLV ICE HS L T02 T01 TM1 FP DIR SPR DP EF
$ TH1M STH1M PHS PTP PLP PDIR PSP WSF TWS PNR UST CHA CGE FAW
$ TAW TWA WCC WCF WCH WCM SXY TWO BHD FOC TUS USS P2S WN USF
$ P2L ABR UBR BED FBB TBB MSS MSC DTD FCT CFX CFT CFK US1 US2
DPT WLV HS DIR
$
3 4
0 1 2
F
ww3.
4
1 999 1 999 3 2
$
$ -------------------------------------------------------------------- $
$ End of input file $
$ -------------------------------------------------------------------- $
29 changes: 29 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_ounf.nml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
! -------------------------------------------------------------------- !
! WAVEWATCH III ww3_ounf.nml - Grid output post-processing !
! -------------------------------------------------------------------- !

! -------------------------------------------------------------------- !
! Define the output fields to postprocess via FIELD_NML namelist
! -------------------------------------------------------------------- !
&FIELD_NML
FIELD%TIMESTART = '19680606 000000'
FIELD%TIMESTRIDE = '3600.'
FIELD%TIMECOUNT = '99'
FIELD%TIMESPLIT = 4
FIELD%LIST = 'DPT WLV HS DIR'
FIELD%PARTITION = '0 1 2'
FIELD%SAMEFILE = F
FIELD%TYPE = 4
/

! -------------------------------------------------------------------- !
! Define the content of the output file via FILE_NML namelist
! -------------------------------------------------------------------- !
&FILE_NML
FILE%IXN = 999
FILE%IYN = 999
/

! -------------------------------------------------------------------- !
! WAVEWATCH III - end of namelist !
! -------------------------------------------------------------------- !
13 changes: 13 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_outf.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
$ WAVEWATCH III Grid output post-processing
$ -----------------------------------------
19680606 000000 3600. 99
N
$ Options: DPT CUR WND DT WLV ICE HS L T02 T01 TM1 FP DIR SPR DP EF
$ TH1M STH1M PHS PTP PLP PDIR PSP WSF TWS PNR UST CHA CGE FAW
$ TAW TWA WCC WCF WCH WCM SXY TWO BHD FOC TUS USS P2S WN USF
$ P2L ABR UBR BED FBB TBB MSS MSC DTD FCT CFX CFT CFK US1 US2
DPT WLV HS DIR
$
3 0
$
1 999 1 999 1 1
19 changes: 19 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_outp_spec.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
$ WAVEWATCH III Point output post-processing
$ ------------------------------------------
19680606 120000 3600. 1
$
1
2
3
4
5
6
7
8
9
10
11
-1
$
1
2 -1. 0. 33 F
19 changes: 19 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_outp_tab50.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
$ WAVEWATCH III Point output post-processing
$ ------------------------------------------
19680606 000000 600. 9999
$
1
2
3
4
5
6
7
8
9
10
11
-1
$
2
2 50
10 changes: 10 additions & 0 deletions regtests/ww3_tic1.1/input_IC4_M10/ww3_outp_tab51.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
$ WAVEWATCH III Point output post-processing
$ ------------------------------------------
19680606 000000 900. 49
$
$ 1
11
-1
$
2
2 51
Loading