120 SUBROUTINE w3sic2 (A, DEPTH, ICEH, ICEF, CG, WN, IX, IY, S, D, WN_R, &
304 REAL,
INTENT(IN) :: a(
nspec), depth, iceh
305 REAL,
INTENT(IN) :: cg(
nk), wn(
nk)
307 REAL,
INTENT(IN) :: alpha(
nk)
308 INTEGER,
INTENT(IN) :: ix, iy
309 REAL,
INTENT(IN) :: wn_r(
nk), cg_ice(
nk), r(
nk)
310 REAL,
INTENT(IN) :: icef
317 INTEGER,
SAVE :: ient = 0
324 REAL :: icecoef1, icecoef2, iceconc
325 REAL,
ALLOCATABLE :: wn_i(:)
326 REAL :: viscm=1.83e-6
327 REAL :: pturb, pvisc, dturb, dvisc, &
328 smooth, re, uorb, aorb, eb, &
329 deli1, deli2, fw, xi, fturb, &
330 cg_eff(
nk), wlg_r(
nk), smooth_dmax(
nk)
331 INTEGER :: ind, ith, is
332 LOGICAL :: noice=.false.
338 CALL strace (ient,
'W3SIC2')
354 IF (
inflags2(-6))icecoef2 = icep2(ix,iy)
355 IF (
inflags2(4)) iceconc = icei(ix,iy)
361 IF (icecoef1==0.0) noice=.true.
362 IF (
inflags2(4).AND.(iceconc==0.0)) noice=.true.
375 WRITE (
ndst,9000) depth,icecoef1,icecoef2
388 WRITE (ndse,1001)
'ICE PARAMETER 1'
392 WRITE (ndse,1001)
'ICE PARAMETER 2'
396 wn_i(:) = 0.5 * alpha(:)
402 d1d(ik)= -2.0 * cg(ik) * wn_i(ik)
430 wlg_r(ik)=
tpi/wn_r(ik)
431 smooth_dmax(ik)= (0.5*(1+tanh((icef-
ic2pars(8)*wlg_r(ik))/(icef*0.5))))**2
435 IF (r(ik).GT.1.)
THEN
436 uorb = uorb + eb * smooth_dmax(ik)*
sig(ik)**2 *
dden(ik) / cg(ik) &
437 / (r(ik)*cg_ice(ik)/cg(ik))
438 aorb = aorb + eb * smooth_dmax(ik) *
dden(ik) / cg(ik) &
439 / (r(ik)*cg_ice(ik)/cg(ik))
441 uorb = uorb + eb * smooth_dmax(ik) *
sig(ik)**2 *
dden(ik) / cg(ik)
442 aorb = aorb + eb * smooth_dmax(ik) *
dden(ik) / cg(ik)
450 re = uorb*aorb / viscm
457 deli1= min(1. ,xi-float(ind))
460 dturb= fturb*fw*uorb/
grav
469 dvisc =
ic2pars(6) * wn_r(ik) * sqrt(viscm*
sig(ik) / 2.)
470 d1d(ik) = -1.*(pturb*max(dturb*
sig(ik)**2,dvisc) + pvisc*dvisc) &
479 d(ikth) = d1d(
mapwn(ikth))
491 dout(ik,ith) = d(ith+(ik-1)*
nth)
495 0.0, 0.001,
'Diag Sice',
' ',
'NONAME')
504 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3SIC2 : '/ &
505 ' ',a,
' REQUIRED BUT NOT SELECTED'/)
508 9000
FORMAT (
' TEST W3SIC2 : DEPTH,ICECOEF1 : ',2e10.3)