216 INTEGER,
SAVE :: IENT = 0
222 CALL strace (ient,
'INSIN3')
304 y=2**(1/2)*(1-abs(erf(x)))/2
306 y=2**(1/2)*(1+erf(x))/2
340 SUBROUTINE w3sbt4 (A, CG, WN, DEPTH, D50, PSIC, TAUBBL, BEDFORM, S, D, IX, IY )
433 INTEGER,
SAVE :: IENT = 0
436 LOGICAL,
SAVE :: FIRST = .true.
437 REAL,
INTENT(IN) :: CG(NK), WN(NK), DEPTH, A(NSPEC), D50
438 REAL,
INTENT(IN) :: PSIC
439 INTEGER,
INTENT(IN) :: IX, IY
440 REAL,
INTENT(OUT) :: S(NSPEC), D(NSPEC), TAUBBL(2)
441 REAL,
INTENT(INOUT) :: BEDFORM(3)
443 REAL :: UORB2,UORB,AORB, EBX, EBY, AX, AY, LX, LY
444 REAL :: CONST2, TEMP2
445 REAL :: FW, KSUBN, KSUBS, KSUBR, MINADIM
446 REAL :: SHIELDS(3), PSI, DELI1, DELI2, EB, XI, VARU, DD50
447 INTEGER :: IK, ITH, IS, IND, INDE, ISUB
452 REAL,
PARAMETER :: WSUB(3) = (/ 0.1666667, 0.1666666 , 0.6666667/)
453 REAL,
PARAMETER :: XSUB(3) = (/ -0.001, 0.001 , 0. /)
455 REAL :: PROBA1, PROBA2, PSIX, PSIXT, PSIN2, DPSI , FACTOR
462 CALL strace (ient,
'W3SBT4')
490 dsub=depth*(1.+xsub(isub))
497 IF ( wn(ik)*dsub .LT. 6. )
THEN
504 ebx = ebx +a(is)*
ecos(ith)
505 eby = eby +a(is)*
esin(ith)
512 cbeta(ik) = 0.5*
sig(ik)**2 /(
grav*(sinh(wn(ik)*dsub))**2)
514 factor= (
dden(ik) / cg(ik))*2*cbeta(ik)*
grav
517 aorb = aorb + varu/(
sig(ik)**2)
518 ax = ax + (ebx * factor)
519 ay = ay + (eby * factor)
528 uorb = sqrt(max(1.0e-7,uorb2))
529 aorb = sqrt(max(1.0e-7,2*aorb))
534 lx = aorb*1.7*ax/sqrt(ax**2+ay**2+1e-12)
535 ly = aorb*1.7*ay/sqrt(ax**2+ay**2+1e-12)
539 xi=max((alog10(max(aorb/dd50,0.3))-
abmin)/
delab,1.)
541 deli1= min(1. ,xi-float(ind))
549 shields(isub)=psi/psic
552 dpsi=(shields(2)-shields(1))/(xsub(2)-xsub(1))*
sbtcx(5)
556 IF (abs(dpsi).LT.0.0001*shields(3).OR.abs(dpsi).LT.1.e-8)
THEN
560 IF(shields(3).GT.
sbtcx(3))
THEN
565 ksubs=aorb*0.0655*(uorb2/((
sed_sg-1)*
grav*aorb))**1.4
566 ksubn = ksubr + ksubs
571 ksubn=max(background,aorb*
sbtcx(4))
582 psix=(
sbtcx(3)-shields(3))/dpsi
586 deli1 = min(1. ,psixt-float(inde))
591 psin2=max(shields(3)+exp(-(0.5*psix**2))/sqrt(
tpi)*dpsi/(proba2+0.0001),
sbtcx(3))
593 ksubn = proba1*max(background,aorb*
sbtcx(4)) &
597 IF (proba2.GT.0.5)
THEN
611 xi=max((alog10(max(aorb/ksubn,0.3))-
abmin)/
delab,1.)
613 deli1= min(1. ,xi-float(ind))
620 const2=
dden(ik)/cg(ik) &
622 dsum(ik)=-fw*uorb*cbeta(ik)
626 temp2=const2*d(is)*a(is)
627 taubbl(1) = taubbl(1) - temp2*
ecos(is)
628 taubbl(2) = taubbl(2) - temp2*
esin(is)