93 SUBROUTINE w3fld1( ASPC, FPI, WNDX,WNDY, ZWND, &
94 DEPTH, RIB, DAIR, UST, USTD, Z0, &
95 TAUNUX, TAUNUY, CHARN)
188 REAL,
INTENT(IN) :: ASPC(NSPEC), WNDX, WNDY, &
189 ZWND, DEPTH, RIB, DAIR, FPI
190 REAL,
INTENT(OUT) :: UST, USTD, Z0
191 REAL,
INTENT(OUT),
OPTIONAL :: CHARN
192 REAL,
INTENT(INOUT) :: TAUNUX, TAUNUY
197 REAL,
PARAMETER :: NU=0.105/10000.0
198 REAL,
PARAMETER :: DELTA=0.03
200 REAL :: wnd_in_mag, wnd_in_dir
202 REAL :: KMAX, KTAILA, KTAILB, KTAILC
203 REAL :: SAT, z01, z02, u10
207 REAL :: DTX, DTY, iter_thresh, &
210 REAL :: WAGE, CBETA, BP, CD, &
211 USTRB, ANGDIF, USTAR, ZNU, &
212 TAUT, TAUX, TAUY, BETAG, TAUDIR, &
215 REAL :: UPROFV, VPROFV
217 REAL :: WND_1X, WND_1Y, &
220 DIFU10XX, DIFU10YX, DIFU10XY, DIFU10YY, &
221 FD_A, FD_B, FD_C, FD_D, &
223 APAR, CH,UITV, VITV,USTL,&
226 REAL :: WND_TOP, ANG_TOP, WND_PA, WND_PE, &
227 WND_PEx, WND_PEy, WND_PAx, WND_PAy, &
229 INTEGER :: NKT, K, T, Z2, ITER, ZI, ZII, &
230 I, CTR, ITERATION, KA1, KA2, &
233 REAL,
ALLOCATABLE,
DIMENSION(:) :: WN, DWN, CP,SIG2
234 REAL,
ALLOCATABLE,
DIMENSION(:,:) :: SPC2
235 REAL,
ALLOCATABLE,
DIMENSION(:) :: TLTN, TLTE, TAUD, &
237 TLTED, ZOFK, UPROF, VPROF, &
238 FTILDE, UP1, VP1, UP, VP, &
241 INTEGER,
SAVE :: IENT = 0
243 LOGICAL :: FSFL1,FSFL2, CRIT1, CRIT2
244 LOGICAL :: IT_FLAG1, IT_FLAG2
245 LOGICAL,
SAVE :: FIRST = .true.
253 CALL strace (ient,
'W3FLD1')
267 wnd_in_mag = sqrt( wndx**2 + wndy**2 )
268 wnd_in_dir = atan2(wndy, wndx)
294 DO WHILE ( kmax .LT. 366.0 )
296 kmax = ( kmax *
xfr**2 )
299 ALLOCATE( wn(nkt), dwn(nkt), cp(nkt), sig2(nkt),spc2(nkt,
nth), &
300 tltn(nkt), tlte(nkt), taud(nkt), &
301 tltnd(nkt), tlted(nkt), zofk(nkt), uprof(nkt+1),&
302 vprof(nkt+1), ftilde(nkt), up1(nkt+1),vp1(nkt+1), &
303 up(nkt+1), vp(nkt+1), tltna(nkt),tltea(nkt))
310 cp(k) = (
sig(k) / wn(k) )
314 DO k = (
nk + 1 ), ( nkt)
315 sig2(k) = sig2(k-1) *
xfr
316 call sig2wn(sig2(k),depth,wn(k))
317 cp(k) = sig2(k) / wn(k)
321 dwn(k) = wn(k+1) - wn(k)
323 dwn(nkt) = wn(nkt)*
xfr**2 - wn(nkt)
334 spc2(k,t) = aspc(i) *
sig(k)
340 spc2(k,t)=spc2(
nk,t)*wn(
nk)**3.0/wn(k)**(3.0)
355 DO WHILE ( ( ktaila .GE. wn(ka1) ) .AND. (ka1 .LT. nkt-6) )
359 DO WHILE ( ( ktailb .GE. wn(ka2) ) .AND. (ka2 .LT. nkt-4) )
363 DO WHILE ( ( ktailc .GE. wn(ka3)) .AND. (ka3 .LT. nkt-2) )
368 CALL appendtail(spc2, wn, nkt, ka1, ka2, ka3,&
385 iteration = iteration + 1
387 ustsm =
kappa * wnd_in_mag / ( log( zwnd / z1 ) )
388 z0sm = 0.132 * nu / ustsm
389 IF ( (abs( z0sm - z1 ) .LT. 10.0**(-6)) .OR.&
390 ( iteration .GT. 5 ))
THEN
397 taunux = ustsm**2 * dair * wndx / wnd_in_mag
398 taunuy = ustsm**2 * dair * wndy / wnd_in_mag
407 IF (iter .EQ. 1)
THEN
408 taunux = taunux + dtx
410 ELSEIF (iter .EQ. 2)
THEN
411 taunux = taunux - dtx
412 taunuy = taunuy + dty
414 ELSEIF (iter .EQ. 3)
THEN
415 taunuy = taunuy - dty
421 CALL appendtail(spc2, wn, nkt, ka1, ka2, ka3,&
422 atan2(taunuy,taunux), sat)
433 taud(zi) = atan2( tltn(zi-1), tlte(zi-1))
434 ustl = sqrt( sqrt( tltn(zi-1)**2 + tlte(zi-1)**2 )/ dair )
436 angdif=taud(zi)-
th(t)
437 IF ( cos( angdif ) .GE. 0.0 )
THEN
438 wage = cp(z2) / (ustl)
440 IF ( wage .LT. 10. )
THEN
443 ELSEIF ( ( wage .GE. 10.0 ) .AND. &
444 ( wage .LE. 25.0 ) )
THEN
445 cbeta = 10.0 + 15.0 * cos(
pi * ( wage - 10.0 ) &
448 ELSEIF ( wage .GT. 25.0 )
THEN
456 tltnd(zi) =tltnd(zi)+( sin(
th(t) ) * cos( angdif )**2)&
457 * cbeta * spc2(z2,t) * &
458 sqrt( tlte(zi-1)**2 + tltn(zi-1)**2.0 ) &
459 * ( wn(z2)**2.0 )*
dth
460 tlted(zi) = tlted(zi)+(cos(
th(t) ) * cos( angdif )**2)&
461 * cbeta * spc2(z2,t) * &
462 sqrt( tlte(zi-1)**2 + tltn(zi-1)**2.0 ) &
463 * ( wn(z2)**2.0 )*
dth
470 tltna(zi) = tltnd(zi) * dwn(z2) * 0.5
471 tltea(zi) = tlted(zi) * dwn(z2) * 0.5
473 tltna(zi)=(tltnd(zi)+tltnd(zi-1))*0.5*dwn(z2)
474 tltea(zi)=(tlted(zi)+tlted(zi-1))*0.5*dwn(z2)
476 tltn(zi)=tltn(zi-1)+tltna(zi)
477 tlte(zi)=tlte(zi-1)+tltea(zi)
485 ustrb=sqrt(sqrt(tauy**2.0+taux**2.0)/dair)
486 taudirb=atan2(tauy,taux)
489 DO WHILE ( (it_flag2) .AND. ( ctr .LT. 10 ) )
497 taud(zi) = atan2(tltn(zi),tlte(zi))
498 ustl = sqrt(sqrt(tltn(zi)**2+tlte(zi)**2)/dair)
501 angdif = taud(zi)-
th(t)
502 IF ( cos( angdif ) .GE. 0.0 )
THEN
503 wage = cp(z2) / (ustl)
504 IF ( wage .LT. 10 )
THEN
506 ELSEIF ( ( wage .GE. 10.0 ) .AND. &
507 ( wage .LE. 25.0 ) )
THEN
508 cbeta = 10.0 + 15.0 * cos(
pi * ( wage - 10.0 ) &
510 ELSEIF ( wage .GT. 25.0 )
THEN
516 bp = sqrt( (cos(
th(t) ) * cos( angdif )**2.0)**2.0 &
517 + (sin(
th(t) ) * cos( angdif )**2.0)**2.0 )
518 betag=bp*cbeta*sqrt(tlte(zi)**2.0+tltn(zi)**2.0) &
519 /(
dwat)*sig2(z2)/cp(z2)**2
520 ftilde(z2) = ftilde(z2) + betag *
dwat *
grav &
522 tltnd(zi) =tltnd(zi)+ (sin(
th(t) ) * cos( angdif )**2.0)&
523 * cbeta * spc2(z2,t) * sqrt( &
524 tlte(zi)**2.0 + tltn(zi)**2.0 ) * &
526 tlted(zi) = tlted(zi)+(cos(
th(t) ) * cos( angdif )**2.0)&
527 * cbeta * spc2(z2,t) * sqrt( &
528 tlte(zi)**2.0 + tltn(zi)**2.0 ) * &
532 tltna(zi)=tltnd(zi)*dwn(z2)*0.5
533 tltea(zi)=tlted(zi)*dwn(z2)*0.5
535 tltna(zi)=(tltnd(zi)+tltnd(zi-1))*0.5*dwn(z2)
536 tltea(zi)=(tlted(zi)+tlted(zi-1))*0.5*dwn(z2)
539 tltn(zi)=tltn(zi-1)+tltna(zi)
540 tlte(zi)=tlte(zi-1)+tltea(zi)
542 tltn(zi)=taunuy+tltna(zi)
543 tlte(zi)=taunux+tltea(zi)
548 taut=sqrt(tauy**2.0+taux**2.0)
549 ustar=sqrt(sqrt(tauy**2.0+taux**2.0)/dair)
550 taudir=atan2(tauy, taux)
552 crit1=(abs(ustar-ustrb)*100.0)/((ustar+ustrb)*0.5) .GT. 0.1
553 IF ((taudir+taudirb).NE.0.)
THEN
554 crit2=(abs(taudir-taudirb)*100.0/(taudir+taudirb)*0.5) .GT. 0.1
558 IF (crit1 .OR. crit2)
THEN
570 DO WHILE(((tltn(kb)**2+tlte(kb)**2)/(taux**2+tauy**2)).GT. &
581 znu=0.1 * 1.45e-5 / sqrt(sqrt(taunux**2.0+taunuy**2.0)/dair)
588 up1(zi) = ( ( ( wn(z2)**2 / delta ) * ftilde(z2) ) + &
589 ( dair / ( zofk(z2) *
kappa ) ) * ( sqrt( &
590 tltn(zi)**2 + tlte(zi)**2 ) / dair )**(3/2) ) &
591 * ( tlte(zi) ) / ( tlte(zi) * taux &
593 vp1(zi) = ( ( ( wn(z2)**2 / delta ) * ftilde(z2) ) + &
594 ( dair / ( zofk(z2) *
kappa ) ) * ( sqrt( &
595 tltn(zi)**2 + tlte(zi)**2 ) / dair )**(3/2) ) &
596 * ( tltn(zi) ) / ( tlte(zi) * taux &
600 uprof(zi) = dair /
kappa * ( sqrt( taunux**2.0 + taunuy**2.0 ) &
601 / dair )**(1.5) * ( taunux / ( taux * &
602 taunux + tauy * taunuy ) ) * log( &
604 vprof(zi) = dair /
kappa * ( sqrt( taunux**2.0 + taunuy**2.0 ) &
605 / dair )**(1.5) * ( taunuy / ( taux * &
606 taunux + tauy * taunuy ) ) * log( &
612 up1(zi) = ( ( ( wn(z2)**2.0 / delta ) * ftilde(z2) ) + &
613 ( dair / ( zofk(z2) *
kappa ) ) * ( sqrt( &
614 tltn(zi)**2.0 + tlte(zi)**2.0 ) / dair )**(1.5) ) &
615 * ( tlte(zi) ) / ( tlte(zi) * taux + &
617 vp1(zi) = ( ( ( wn(z2)**2.0 / delta ) * ftilde(z2) ) + &
618 ( dair / ( zofk(z2) *
kappa ) ) * ( sqrt( &
619 tltn(zi)**2.0 + tlte(zi)**2.0 ) / dair )**(1.5) ) &
620 * ( tltn(zi) ) / ( tlte(zi) * taux + &
622 up(zi) = up1(zi) * 0.5 + up1(zi-1) * 0.5
623 vp(zi) = vp1(zi) * 0.5 + vp1(zi-1) * 0.5
624 uprof(zi) = uprof(zi-1) + up(zi) * ( zofk(z2) - zofk(z2+1) )
625 vprof(zi) = vprof(zi-1) + vp(zi) * ( zofk(z2) - zofk(z2+1) )
632 uprof(nkt+1) = uprof(nkt) + ( sqrt( sqrt( tauy**2.0 + &
633 taux**2.0 ) / dair ) ) /
kappa * taux &
634 / sqrt( tauy**2.0 +taux**2.0 ) * log( zwnd &
636 vprof(nkt+1) = vprof(nkt) + ( sqrt( sqrt( tauy**2.0 + &
637 taux**2.0 ) / dair ) ) /
kappa * tauy &
638 / sqrt( tauy**2.0 +taux**2.0 ) * log( zwnd &
640 IF (iter .EQ. 3)
THEN
641 wnd_1x = uprof(nkt+1)
642 wnd_1y = vprof(nkt+1)
643 ELSEIF (iter .EQ. 2)
THEN
644 wnd_2x = uprof(nkt+1)
645 wnd_2y = vprof(nkt+1)
646 ELSEIF (iter .EQ. 1)
THEN
647 wnd_3x = uprof(nkt+1)
648 wnd_3y = vprof(nkt+1)
694 iteration = iteration + 1
695 difu10xx = wnd_3x - wnd_1x
696 difu10yx = wnd_3y - wnd_1y
697 difu10xy = wnd_2x - wnd_1x
698 difu10yy = wnd_2y - wnd_1y
699 fd_a = difu10xx / dtx
700 fd_b = difu10xy / dty
701 fd_c = difu10yx / dtx
702 fd_d = difu10yy / dty
703 dwndx = - wndx + wnd_1x
704 dwndy = - wndy + wnd_1y
707 ch = sqrt( uitv**2.0 + vitv**2.0 )
708 IF (ch .GT. 15.)
THEN
709 apar = 0.5 / ( fd_a * fd_d - fd_b * fd_c )
711 apar = 1.0 / ( fd_a * fd_d - fd_b * fd_c )
714 IF (((vitv/max(abs(wndy),ck) .GT. iter_thresh) .OR. &
715 (uitv/max(abs(wndx),ck) .GT. iter_thresh)) .AND. &
716 (iteration .LT. 2))
THEN
717 taunux = taunux - apar * ( fd_d * dwndx - fd_b * dwndy )
718 taunuy = taunuy - apar * ( -fd_c * dwndx +fd_a * dwndy )
719 ELSEIF (((vitv/max(abs(wndy),ck) .GT. iter_thresh) .OR. &
720 (uitv/max(abs(wndx),ck) .GT. iter_thresh)) .AND. &
721 (iteration .LT. 24))
THEN
723 taunux = taunux - apar * ( fd_d * dwndx - fd_b * dwndy )
724 taunuy = taunuy - apar * ( -fd_c * dwndx +fd_a * dwndy )
725 ELSEIF (((vitv/max(abs(wndy),ck) .GT. iter_thresh) .OR. &
726 (uitv/max(abs(wndx),ck) .GT. iter_thresh)) .AND. &
727 (iteration .LT. 26))
THEN
729 taunux = taunux - apar * ( fd_d * dwndx - fd_b * dwndy )
730 taunuy = taunuy - apar * ( -fd_c * dwndx +fd_a * dwndy )
731 ELSEIF (((vitv/max(abs(wndy),ck) .GT. iter_thresh) .OR. &
732 (uitv/max(abs(wndx),ck) .GT. iter_thresh)) .AND. &
733 (iteration .LT. 30))
THEN
735 taunux = taunux - apar * ( fd_d * dwndx - fd_b * dwndy )
736 taunuy = taunuy - apar * ( -fd_c * dwndx +fd_a * dwndy )
737 ELSEIF (iteration .GE. 30)
THEN
738 write(*,*)
'Attn: W3FLD1 not converged.'
739 write(*,*)
' Wind (X/Y): ',wndx,wndy
744 ELSEIF (((vitv/max(abs(wndy),ck) .LT. iter_thresh) .AND.&
745 (uitv/max(abs(wndx),ck) .LT. iter_thresh)) .AND. &
746 (iteration .GE. 2))
THEN
750 if (.not.(cos(wnd_in_dir-atan2(taunuy,taunux)).ge.0.0))
then
751 taunux = ustsm**2 * dair * wndx / wnd_in_mag*.95
752 taunuy = ustsm**2 * dair * wndy / wnd_in_mag*.95
758 ustd = atan2(tauy,taux)
759 ust = sqrt( sqrt( taux**2 + tauy**2 ) / dair)
761 wnd_pa=wnd_in_mag*cos(wnd_in_dir-ustd)
762 z0 = zwnd/exp(wnd_pa*
kappa/ust)
763 cd = ust**2 / wnd_in_mag**2
764 IF (
PRESENT(charn))
THEN
765 charn = 0.01/sqrt(sqrt( taunux**2 + taunuy**2 )/(ust**2))
767 fsfl1=.not.((cd .LT. 0.01).AND.(cd .GT. 0.0001))
768 fsfl2=.not.(cos(wnd_in_dir-ustd).GT.0.9)
769 IF (fsfl1 .or. fsfl2)
THEN
771 write(*,*)
'Attn: W3FLD1 failed, will output bulk...'
773 ust = wnd_in_mag*
kappa/log(zwnd/z0)
775 cd = ust**2 / wnd_in_mag**2
777 DEALLOCATE(wn, dwn, cp,sig2, spc2, tltn, tlte, taud, &
778 tltnd, tlted, zofk, uprof, &
779 vprof, ftilde, up1, vp1, up, vp, tltna, tltea)
857 INTEGER,
SAVE :: IENT = 0
863 CALL strace (ient,
'INFLD')
885 SUBROUTINE appendtail(INSPC, WN2, NKT, KA1, KA2, KA3, WNDDIR,SAT)
952 INTEGER,
INTENT(IN) :: NKT, KA1, KA2, KA3
953 REAL,
INTENT(IN) :: WN2(NKT), WNDDIR,SAT
954 REAL,
INTENT(INOUT) :: INSPC(NKT,NTH)
960 INTEGER,
SAVE :: IENT = 0
962 REAL :: BT(NKT), IC, ANGLE2, ANG(NKT),&
963 NORMSPC(NTH), AVG, ANGDIF, M, MAXANG, &
965 INTEGER :: MAI, I, K, T
966 REAL,
ALLOCATABLE,
DIMENSION(:) :: ANGLE1
971 CALL strace (ient,
'APPENDTAIL')
986 bt(ka1)=bt(ka1)+inspc(ka1,t)*wn2(ka1)**3.0*
dth
995 m = ( bt(ka2) - bt(ka1) ) / ( wn2(ka2) - wn2(ka1) )
1000 ic = bt(ka1) - m * wn2(ka1)
1017 IF (inspc(ka2,t) .GT. maxang)
THEN
1027 IF (maxang .EQ. inspc(ka2,t))
THEN
1033 ALLOCATE(angle1(mai))
1039 IF (maxang .EQ. inspc(ka2,t))
THEN
1045 DO WHILE (angle1(k) .LT. 0.0)
1046 angle1(k) = angle1(k) +
tpi
1048 DO WHILE (angle1(k) .GE.
tpi)
1049 angle1(k) = angle1(k) -
tpi
1052 IF (mai .GT. 1)
THEN
1056 IF (maxan .LT. angle1(i) )
THEN
1059 IF (minan .GT. angle1(i) )
THEN
1066 IF (maxan-minan .GT.
pi)
THEN
1068 IF (maxan - angle1(i) .GT.
pi)
THEN
1069 angle1(i) = angle1(i) +
tpi
1072 angle2=sum(angle1)/max(real(mai),1.)
1074 angle2=sum(angle1)/max(real(mai),1.)
1079 DO WHILE (angle2 .LT. 0.0)
1080 angle2 = angle2 +
tpi
1082 DO WHILE (angle2 .GE.
tpi)
1083 angle2 = angle2 -
tpi
1089 if (cos(angle2-wnddir) .ge. 0.)
then
1090 m=asin(sin(wnddir-angle2))/(wn2(ka3)-wn2(ka2))
1093 ang(k)=ic +m*(wn2(k)-wn2(ka2))
1099 if (sin(wnddir-angle2).GE.0)
then
1100 m=acos(cos(wnddir-angle2))/(wn2(ka3)-wn2(ka2))
1103 ang(k)=ic+m*(wn2(k)-wn2(ka2))
1109 m=acos(cos(wnddir-angle2))/(wn2(ka3)-wn2(ka2))
1112 ang(k)=ic-m*(wn2(k)-wn2(ka2))
1121 avg=sum(inspc(k,:))/max(real(nth),1.)
1123 if (avg /= 0.0)
then
1124 inspc(k,t)=bt(k)*inspc(k,t)/
tpi/(wn2(k)**3.0)/avg
1137 IF (cos(angdif) .GT. 0.0)
THEN
1138 normspc(t) = cos(angdif)**2.0
1143 avg=sum(normspc)/max(real(nth),1.)
1145 if (avg /= 0.0)
then
1146 inspc(k,t) = sat * normspc(t)/
tpi/(wn2(k)**3.0)/avg
1154 IF (cos(angdif) .GT. 0.0)
THEN
1155 normspc(t) = cos(angdif)**2.0
1160 avg=sum(normspc)/max(real(nth),1.)
1163 if (avg /= 0.0)
then
1164 inspc(k,t)=normspc(t)*(sat)/
tpi/(wn2(k)**3.0)/avg
1183 SUBROUTINE sig2wn(SIG,DEPTH,WN)
1201 REAL,
INTENT(IN) :: SIG,DEPTH
1202 REAL,
INTENT(OUT) :: WN
1212 if (tanh(wn1*depth) .LT. 0.99)
then
1214 fk=
grav*wn1*tanh(wn1*depth) - sig**2
1215 fk_slp =
grav*tanh(wn1*depth) +
grav*wn1*depth/(cosh(wn1*depth))**2
1219 if (abs(wn2-wn1)/wn1 .LT. 0.0001 )
then
1260 SUBROUTINE wnd2z0m( W10M , ZNOTM )
1326 REAL,
INTENT(IN) :: W10M
1327 REAL,
INTENT(OUT):: ZNOTM
1330 REAL,
PARAMETER :: bs0 = -8.367276172397277e-12
1331 REAL,
PARAMETER :: bs1 = 1.7398510865876079e-09
1332 REAL,
PARAMETER :: bs2 = -1.331896578363359e-07
1333 REAL,
PARAMETER :: bs3 = 4.507055294438727e-06
1334 REAL,
PARAMETER :: bs4 = -6.508676881906914e-05
1335 REAL,
PARAMETER :: bs5 = 0.00044745137674732834
1336 REAL,
PARAMETER :: bs6 = -0.0010745704660847233
1338 REAL,
PARAMETER :: cf0 = 2.1151080765239772e-13
1339 REAL,
PARAMETER :: cf1 = -3.2260663894433345e-11
1340 REAL,
PARAMETER :: cf2 = -3.329705958751961e-10
1341 REAL,
PARAMETER :: cf3 = 1.7648562021709124e-07
1342 REAL,
PARAMETER :: cf4 = 7.107636825694182e-06
1343 REAL,
PARAMETER :: cf5 = -0.0013914681964973246
1344 REAL,
PARAMETER :: cf6 = 0.0406766967657759
1347 REAL :: Z10, U10,AAA,TMP
1350 INTEGER,
SAVE :: IENT = 0
1351 CALL strace (ient,
'WND2Z0M')
1357 if (u10 > 85.0) u10=85.0
1360 IF ( u10 .LE. 5.0 )
THEN
1361 znotm = (0.0185 / 9.8*(7.59e-4*u10**2+2.46e-2*u10)**2)
1362 ELSEIF (u10 .GT. 5.0 .AND. u10 .LT. 10.0)
THEN
1363 znotm =.00000235*(u10**2 - 25 ) + 3.805129199617346e-05
1364 ELSEIF ( u10 .GE. 10.0 .AND. u10 .LT. 60.0)
THEN
1365 znotm = bs6 + bs5*u10 + bs4*u10**2 + bs3*u10**3 + bs2*u10**4 +&
1366 bs1*u10**5 + bs0*u10**6
1368 znotm = cf6 + cf5*u10 + cf4*u10**2 + cf3*u10**3 + cf2*u10**4 +&
1369 cf1*u10**5 + cf0*u10**6
1375 tmp=0.4*0.4/(alog(10.0/znotm))**2
1379 ELSEIF(u10 < 45.0)
THEN
1380 aaa=0.99+(u10-20)*(0.75-0.99)/(45.0-20.0)
1382 znotm=z10/exp( sqrt(0.4*0.4/(tmp*aaa)) )
1449 REAL,
INTENT(IN) :: WND10
1450 REAL,
INTENT(OUT) :: SAT
1452 INTEGER,
SAVE :: IENT = 0
1453 CALL strace (ient,
'WND2SAT')
1466 IF (wnd10<20.0)
THEN
1467 sat = -0.000018541921682*wnd10**2 &
1468 +0.000751515452434*wnd10 &
1470 ELSEIF (wnd10<45)
THEN
1471 sat = -0.000000009060349*wnd10**4 &
1472 +0.000001276678367*wnd10**3 &
1473 -0.000068274393789*wnd10**2 &
1474 +0.001418180888868*wnd10 &
1477 sat = -0.000155976275073*wnd10 &
1481 sat = min(max(sat,0.002),0.014)