118 SUBROUTINE w3sbt9(AC,H_WDEPTH,S,D,IX,IY)
200 REAL,
INTENT(IN) :: H_WDEPTH
201 REAL,
INTENT(IN) :: AC(NSPEC)
202 INTEGER,
INTENT(IN) :: IX, IY
203 REAL,
INTENT(OUT) :: S(NSPEC), D(NSPEC)
209 INTEGER,
SAVE :: IENT = 0
254 CALL strace (ient,
'W3SBT9')
267 WRITE(
ndse,*)
'RHOM NOT SET'
273 WRITE(
ndse,*)
'DM NOT SET'
277 kinvism = mudv(ix,iy)
279 WRITE(
ndse,*)
'KINVISM NOT SET'
283 rootdg = sqrt(h_wdepth/
grav)
287 snd =
sig(is) * rootdg
288 IF (snd .GE. 2.5)
THEN
294 ELSE IF (snd.LT.1.e-6)
THEN
296 k_rock = snd/h_wdepth
303 cwave = sqrt(
grav*h_wdepth/(snd2+1./(1.+0.666*snd2 &
304 +0.445*snd2**2 -0.105*snd2**3+0.272*snd2**4)))
305 k_rock =
sig(is)/cwave
307 CALL calc_nd(k_rock,h_wdepth,snd2,nd_rock)
309 nwave_rock = 0.5*(1.0+2.0*k_rock*h_wdepth/sinh(2.0*k_rock*h_wdepth))
310 cg_rock= nwave_rock*cwave
323 kd_rock = k_rock * h_wdepth
325 IF((kd_rock.LT.kdcutoff).AND.(dm.GT.1.0e-5))
THEN
328 zeta=sqrt(kinvism/kinvisw)
330 sbltw=sqrt(2.0*kinvisw/
sig(is))
331 sbltm=sqrt(2.0*kinvism/
sig(is))
334 CALL ng(
sig(is),h_wdepth,dtilde,zeta,sbltm,gamma,k_rock,k_mud, &
344 ztmp=2.0*k_mud*h_wdepth
350 nwave_mud=0.5*(1.0+2.0*k_mud*h_wdepth/ztmp)
352 cg_mud=nwave_mud*cwave
355 CALL calc_nd(k_mud,h_wdepth,snd2,nd_mud)
376 kd = k_mud * h_wdepth
377 IF ( kd .LT. kdcutoff )
THEN
379 smudwd(is)=2.0*dmw(is)*cg_mud
383 inan = .NOT. ( dmw(is) .GE. -huge(dmw(is)) .AND. dmw(is) &
386 WRITE(*,
'(/1A/)')
'W3SBT9 ERROR -- DMW(IS) IS NAN'
387 WRITE(*,*)
'W3SBT9: RHOM, DM, KINVISM = ',rhom, dm, kinvism
388 WRITE(*,*)
'W3SBT9: IS,NK = ',is,nk
389 WRITE(*,*)
'W3SBT9: H_WDEPTH,KD,KDCUTOFF = ',h_wdepth,kd, kdcutoff
390 WRITE(*,*)
'W3SBT9: K_MUD,CG_MUD,NWAVE_MUD = ',k_mud,cg_mud,nwave_mud
399 d(is) = -smudwd(
mapwn(is))
429 SUBROUTINE ng(SIGMA,H_WDEPTH,DTILDE,ZETA,SBLTM,GAMMA,WK,WKDR,DISS)
499 REAL,
INTENT(IN) :: SIGMA
500 REAL,
INTENT(IN) :: H_WDEPTH
501 REAL,
INTENT(IN) :: DTILDE
503 REAL,
INTENT(IN) :: ZETA
506 REAL,
INTENT(IN) :: GAMMA
508 REAL,
INTENT(IN) :: SBLTM
512 REAL,
INTENT(IN) :: WK
515 REAL,
INTENT(OUT) :: WKDR
516 REAL,
INTENT(OUT) :: DISS
531 b1=gamma*(-2.0*gamma**2+2.0*gamma-1.-zeta**2)*sinh(dtilde)* &
532 cosh(dtilde)-gamma**2*zeta*((cosh(dtilde))**2+ &
533 (sinh(dtilde))**2)-(gamma-1.)**2*zeta*((cosh(dtilde))**2 &
534 *(cos(dtilde))**2+(sinh(dtilde))**2*(sin(dtilde))**2)-2.0 &
535 *gamma*(1.-gamma)*(zeta*cosh(dtilde)+gamma*sinh(dtilde)) &
538 b2=gamma*(-2.0*gamma**2+2.0*gamma-1.+zeta**2)*sin(dtilde)* &
539 cos(dtilde) -2.0*gamma*(1.-gamma)*(zeta*sinh(dtilde)+gamma &
540 *cosh(dtilde))*sin(dtilde)
542 b3=(zeta*cosh(dtilde)+gamma*sinh(dtilde))**2*(cos(dtilde))**2 &
543 +(zeta*sinh(dtilde)+gamma*cosh(dtilde))**2*(sin(dtilde))**2
545 br=wk*sbltm*(b1-b2)/(2.0*b3)+gamma*wk*dm
547 bi=wk*sbltm*(b1+b2)/(2.0*b3)
552 diss=-sbltm*(brp+bip)*wk**2/(sinh(2.0*wk*h_wdepth)+2.0*wk*h_wdepth)
553 wkdr=wk-br*wk/(sinh(wk*h_wdepth)*cosh(wk*h_wdepth)+wk*h_wdepth)
571 SUBROUTINE calc_nd(KWAVE,H_WDEPTH,SND2,ND)
575 REAL,
INTENT(IN) :: KWAVE
576 REAL,
INTENT(IN) :: H_WDEPTH
577 REAL,
INTENT(IN) :: SND2
578 REAL,
INTENT(OUT) :: ND
585 fac1 = 2.*knd/sinh(2.*knd)
587 fac3 = 2.*fac2/(1.+fac2*fac2)
588 nd= fac1*(0.5/h_wdepth - kwave/fac3)