@@ -89,6 +89,7 @@ MODULE W3SIC4MD
89
89
! *** Rogers et al. tech. rep. 2021 (RYW2021)
90
90
! *** Yu et al. CRST 2022
91
91
! *** Yu JMSE 2022
92
+ ! *** Meylan et al. Ocean Modeling 2021
92
93
!
93
94
! 6. Switches :
94
95
!
@@ -138,6 +139,7 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
138
139
! / 11-Jan-2024 : Method 8 added (Meylan et al. 2018) (E. Rogers)
139
140
! / 11-Jan-2024 : Method 9 added (Rogers et al., 2021)
140
141
! / denoted "RYW2021" (E. Rogers)
142
+ ! / 14-Aug-2024 : Method 10 added (Meylan et al. 2021) (E. Thomas)
141
143
! /
142
144
! / FIXME : Move field input to W3SRCE and provide
143
145
! / (S.Zieger) input parameter to W3SIC1 to make the subroutine
@@ -307,6 +309,8 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
307
309
! suggested default is marked with "(*SD*)", for consistency
308
310
! with SWAN (v41.31AB or later)
309
311
!
312
+ ! 10) Meylan et al. 2021 (Ocean Modeling): ocean-wave attenuation
313
+ ! due to scattering by sea ice floes.
310
314
! ------------------------------------------------------------------
311
315
!
312
316
! For all methods, the user can specify namelist
@@ -450,6 +454,8 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
450
454
REAL , ALLOCATABLE :: FREQ(:) ! wave frequency
451
455
REAL , ALLOCATABLE :: MARG1(:), MARG2(:) ! Arguments for M2
452
456
REAL , ALLOCATABLE :: KARG1(:), KARG2(:), KARG3(:) ! Arguments for M3
457
+ REAL :: x1,x2,x3,x1sqr,x2sqr,x3sqr ! Arguments for M10
458
+ REAL :: perfour,amhb,bmhb ! Arguments for M10
453
459
LOGICAL :: NML_INPUT ! if using namelist input for M2
454
460
455
461
! /
@@ -699,6 +705,43 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
699
705
DO IK= 1 ,NK
700
706
WN_I(IK) = Chf* (hice** mpow)* (FREQ(IK)** npow)
701
707
END DO
708
+
709
+ CASE (10 )
710
+ ! Cubic fit to Meylan, Horvat & Bitz 2021
711
+ ! ICECOEF1 is thickness
712
+ ! ICECOEF5 is floe size
713
+ ! TPI/SIG is period
714
+ x3= min (ICECOEF1,3.5 ) ! limit thickness to 3.5 m
715
+ x3= max (x3,0.1 ) ! limit thickness >0.1 m since I make fit below
716
+ x2= min (ICECOEF5* 0.5 ,100.0 ) ! convert dia to radius, limit to 100m
717
+ x2= max (2.5 ,x2)
718
+ x2sqr= x2* x2
719
+ x3sqr= x3* x3
720
+ amhb = 2.12e-3
721
+ bmhb = 4.59e-2
722
+
723
+ DO IK= 1 , NK
724
+ x1= TPI/ SIG(IK) ! period
725
+ x1sqr= x1* x1
726
+ KARG1(ik)=- 0.26982 + 1.5043 * x3 - 0.70112 * x3sqr + 0.011037 * x2 + &
727
+ (- 0.0073178 )* x2* x3 + 0.00036604 * x2* x3sqr + &
728
+ (- 0.00045789 )* x2sqr + 1.8034e-05 * x2sqr* x3 + &
729
+ (- 0.7246 )* x1 + 0.12068 * x1* x3 + &
730
+ (- 0.0051311 )* x1* x3sqr + 0.0059241 * x1* x2 + &
731
+ 0.00010771 * x1* x2* x3 - 1.0171e-05 * x1* x2sqr + &
732
+ 0.0035412 * x1sqr - 0.0031893 * x1sqr* x3 + &
733
+ (- 0.00010791 )* x1sqr* x2 + &
734
+ 0.00031073 * x1** 3 + 1.5996e-06 * x2** 3 + 0.090994 * x3** 3
735
+ KARG1(IK)= min (KARG1(IK),0.0 )
736
+ ALPHA(IK) = 10.0 ** KARG1(IK)
737
+ perfour= x1sqr* x1sqr
738
+ if ((x1.gt. 5.0 ) .and. (x1.lt. 20.0 )) then
739
+ ALPHA(IK) = ALPHA(IK) + amhb/ x1sqr+ bmhb/ perfour
740
+ else if (x1.gt. 20.0 ) then
741
+ ALPHA(IK) = amhb/ x1sqr+ bmhb/ perfour
742
+ endif
743
+ WN_I(IK) = ALPHA(IK) * 0.5
744
+ end do
702
745
703
746
CASE DEFAULT
704
747
WN_I = ICECOEF1 ! Default to IC1: Uniform in k
0 commit comments