129 INTEGER,
PRIVATE,
PARAMETER :: NKD = 275
130 REAL,
PRIVATE,
PARAMETER :: KDMIN = 0.025 , kdmax = 20.
131 REAL,
PUBLIC,
PARAMETER ::
lammax = 0.49999
134 REAL,
PRIVATE :: sitmin, xsit
180 SUBROUTINE w3snl3 ( A, CG, WN, DEPTH, S, D )
349 REAL,
INTENT(IN) :: A(NTH,NFR), CG(NFR), WN(NFR), DEPTH
350 REAL,
INTENT(OUT) :: S(NTH,NFR), D(NTH,NFR)
355 INTEGER :: IFR, IERR, IKD, JKD(NFRCUT), IQA, IF1MIN, &
356 IF1MAX, IF2MIN, IF2MAX, ISP0, ISPX0, ITH, &
359 INTEGER,
SAVE :: IENT = 0
361 INTEGER :: LQST1(16), LQST4(16)
362 REAL :: XSITLN, SIT, FPROP, FQ1, FQ2, FQ3, FQ4, &
364 REAL :: XWN(NFRMAX), XCG(NFRMAX), SCALE1(NFRCUT), &
365 SCALE2(NFRCUT), LQST2(16), FACT(6), &
367 REAL :: UE(NSPMIN:NSPMAX), DSB(NSPMIN:NSPMX2), &
368 DD1(NSPMIN:NSPMX2), DD2(NSPMIN:NSPMX2), &
369 DD3(NSPMIN:NSPMX2), DD4(NSPMIN:NSPMX2)
374 CALL strace (ient,
'W3SNL3')
395 DO ifr = nfr+1, nfrmax
397 CALL wavnu3(
xsi(ifr), depth, xwn(ifr), xcg(ifr))
399 CALL wavnu1(
xsi(ifr), depth, xwn(ifr), xcg(ifr))
413 scale1(ifr) = aux1 * xwn(ifr)**(4.+
snlmsc) * &
415 scale2(ifr) = aux2 * xwn(ifr)**11 * &
416 (xwn(ifr)*depth)**
snlnsc / xcg(ifr)
422 sit =
xsi(ifr) * sqrt(depth/
grav)
423 ikd = 1 + nint( ( log(sit) - log(sitmin) ) / xsitln )
424 jkd(ifr) = max( 1 , min(ikd,nkd) )
442 IF ( aux1 .LE. 0. .AND. aux2 .LE. 0. )
THEN
446 ELSE IF ( aux2 .LE. 0. )
THEN
450 IF ( ifr .GT. nfr ) cycle
452 IF ( ifr .GT. 1 )
THEN
453 if1min = max( 1 , ifr )
454 if2min = max( 1 , if1min +
nfrmin )
455 dsb(1:(if1min-1)*nth) = 0.
456 dd1(1:(if1min-1)*nth) = 0.
457 dd2(1:(if1min-1)*nth) = 0.
458 dd3(1:(if1min-1)*nth) = 0.
459 dd4(1:(if1min-1)*nth) = 0.
462 ELSE IF ( aux1 .LE. 0. )
THEN
466 IF ( ifr .LT. 1 ) cycle
468 IF ( ifr .LT. nfrcut )
THEN
469 if1max = min( nfrcut, ifr )
471 dsb(if1max*nth+1:nfrcut*nth) = 0.
472 dd1(if1max*nth+1:nfrcut*nth) = 0.
473 dd2(if1max*nth+1:nfrcut*nth) = 0.
474 dd3(if1max*nth+1:nfrcut*nth) = 0.
475 dd4(if1max*nth+1:nfrcut*nth) = 0.
482 DO ifr=if1min, if1max
490 lqst1 =
qst1(:,iqa,ikd)
491 lqst2 =
qst2(:,iqa,ikd)
492 fact =
qst3(:,iqa,ikd)
493 fact(1:4) = fact(1:4) * xcg(ifr) / ( xwn(ifr) *
xsi(ifr) )
494 fprop = scale1(ifr)*fact(5) + scale2(ifr)*fact(6)
506 fq1 = ( ue(ispx+lqst1( 1)) * lqst2( 1) + &
507 ue(ispx+lqst1( 2)) * lqst2( 2) + &
508 ue(ispx+lqst1( 3)) * lqst2( 3) + &
509 ue(ispx+lqst1( 4)) * lqst2( 4) ) * fact(1)
510 fq2 = ( ue(ispx+lqst1( 5)) * lqst2( 5) + &
511 ue(ispx+lqst1( 6)) * lqst2( 6) + &
512 ue(ispx+lqst1( 7)) * lqst2( 7) + &
513 ue(ispx+lqst1( 8)) * lqst2( 8) ) * fact(2)
514 fq3 = ( ue(ispx+lqst1( 9)) * lqst2( 9) + &
515 ue(ispx+lqst1(10)) * lqst2(10) + &
516 ue(ispx+lqst1(11)) * lqst2(11) + &
517 ue(ispx+lqst1(12)) * lqst2(12) ) * fact(3)
518 fq4 = ( ue(ispx+lqst1(13)) * lqst2(13) + &
519 ue(ispx+lqst1(14)) * lqst2(14) + &
520 ue(ispx+lqst1(15)) * lqst2(15) + &
521 ue(ispx+lqst1(16)) * lqst2(16) ) * fact(4)
523 aux1 = fq1 * fq2 * ( fq3 + fq4 )
524 aux2 = fq3 * fq4 * ( fq1 + fq2 )
525 dsb(isp) = fprop * ( aux1 - aux2 )
529 dd1(isp) = fprop * fact(1) * ( fq2 * aux1 - aux2 )
530 dd2(isp) = fprop * fact(2) * ( fq1 * aux1 - aux2 )
534 dd3(isp) = fprop * fact(3) * ( aux2 - fq4*aux1 )
535 dd4(isp) = fprop * fact(4) * ( aux2 - fq3*aux1 )
547 CALL expnd2 ( dsb(1:nth*nfrcut), dsb )
548 CALL expnd2 ( dd1(1:nth*nfrcut), dd1 )
549 CALL expnd2 ( dd2(1:nth*nfrcut), dd2 )
550 CALL expnd2 ( dd3(1:nth*nfrcut), dd3 )
551 CALL expnd2 ( dd4(1:nth*nfrcut), dd4 )
556 DO ifr=if2min, if2max
564 lqst4 =
qst4(:,iqa,ikd)
565 lqst5 =
qst5(:,iqa,ikd)
566 lqst6 =
qst6(:,iqa,ikd)
576 s(ith,ifr) = s(ith,ifr) + dsb(ispx+lqst4( 1)) * lqst5( 1) &
577 + dsb(ispx+lqst4( 2)) * lqst5( 2) &
578 + dsb(ispx+lqst4( 3)) * lqst5( 3) &
579 + dsb(ispx+lqst4( 4)) * lqst5( 4) &
580 + dsb(ispx+lqst4( 5)) * lqst5( 5) &
581 + dsb(ispx+lqst4( 6)) * lqst5( 6) &
582 + dsb(ispx+lqst4( 7)) * lqst5( 7) &
583 + dsb(ispx+lqst4( 8)) * lqst5( 8) &
584 + dsb(ispx+lqst4( 9)) * lqst5( 9) &
585 + dsb(ispx+lqst4(10)) * lqst5(10) &
586 + dsb(ispx+lqst4(11)) * lqst5(11) &
587 + dsb(ispx+lqst4(12)) * lqst5(12) &
588 + dsb(ispx+lqst4(13)) * lqst5(13) &
589 + dsb(ispx+lqst4(14)) * lqst5(14) &
590 + dsb(ispx+lqst4(15)) * lqst5(15) &
591 + dsb(ispx+lqst4(16)) * lqst5(16)
593 d(ith,ifr) = d(ith,ifr) + dd1(ispx+lqst4( 1)) * lqst6( 1) &
594 + dd1(ispx+lqst4( 2)) * lqst6( 2) &
595 + dd1(ispx+lqst4( 3)) * lqst6( 3) &
596 + dd1(ispx+lqst4( 4)) * lqst6( 4) &
597 + dd2(ispx+lqst4( 5)) * lqst6( 5) &
598 + dd2(ispx+lqst4( 6)) * lqst6( 6) &
599 + dd2(ispx+lqst4( 7)) * lqst6( 7) &
600 + dd2(ispx+lqst4( 8)) * lqst6( 8) &
601 + dd3(ispx+lqst4( 9)) * lqst6( 9) &
602 + dd3(ispx+lqst4(10)) * lqst6(10) &
603 + dd3(ispx+lqst4(11)) * lqst6(11) &
604 + dd3(ispx+lqst4(12)) * lqst6(12) &
605 + dd4(ispx+lqst4(13)) * lqst6(13) &
606 + dd4(ispx+lqst4(14)) * lqst6(14) &
607 + dd4(ispx+lqst4(15)) * lqst6(15) &
608 + dd4(ispx+lqst4(16)) * lqst6(16)
624 DO ifr=if2min, if2max
625 s(:,ifr) = s(:,ifr) /
xsi(ifr) * xcg(ifr) *
tpiinv
643 SUBROUTINE expand ( SPEC )
673 REAL,
INTENT(OUT) :: SPEC(1-NTHMAX:NTH+NTHMAX,NFRMIN:NFRMAX)
681 spec(:,nfrmin:0) = 0.
683 spec(1:nth,1:nfr) = a *
tpi
686 spec(1:nth,ifr) = spec(1:nth,ifr) *
xsi(ifr) / xcg(ifr)
690 spec(1:nth,ifr) = spec(1:nth,ifr-1) *
fachfe
694 spec(nth+ith,1:nfrmax) = spec( ith ,1:nfrmax)
695 spec( 1 -ith,1:nfrmax) = spec(nth+1-ith,1:nfrmax)
716 SUBROUTINE expnd2 ( ARIN, AROUT )
747 REAL,
INTENT(IN) :: ARIN(NTH,NFRCUT)
748 REAL,
INTENT(OUT) :: AROUT(1-NTHMAX:NTH+NTHMAX,NFRMIN:NFRCUT)
753 REAL :: TEMP(NTH,NFRCUT)
759 arout(:,nfrmin:0) = 0.
761 arout(1:nth,1:nfrcut) = temp
764 arout(nth+ith,1:nfrcut) = arout( ith ,1:nfrcut)
765 arout( 1 -ith,1:nfrcut) = arout(nth+1-ith,1:nfrcut)
887 INTEGER :: IFRMIN, IFRMAX, IKD, IERR, IQ, NQD, &
888 NQS, J, IFR, IQA, JJ, JF, NTHMX2, &
890 INTEGER :: JFR(4), JFR1(4), JTH(4), JTH1(4)
892 INTEGER,
SAVE :: IENT = 0
894 INTEGER,
ALLOCATABLE :: AST1(:,:,:), AST2(:,:,:)
895 REAL :: SITMAX, XFRLN
896 REAL :: OFF12, OFF34, TH12, DEPTH, &
897 S0, S1, S2, S3, S4, AUXFR(4), &
898 WN0, WN1, WN2, WN3, WN4, &
899 CG0, CG1, CG2, CG3, CG4, AUXF, &
900 AA, BB, CC, DELTH(4), AUX1, AUX2, &
901 WFR(4), WFR1(4), WTH(4), WTH1(4), &
905 INTEGER :: OFR(4), OFR1(4), OTH(4), OTH1(4)
906 REAL :: HFR(4), HFR1(4), HTH(4), HTH1(4)
907 REAL :: F1, F2, F3, F4, CQD, CQS
910 TYPE(qst),
ALLOCATABLE :: TSTORE(:,:)
915 CALL strace (ient,
'INSNL3')
927 ALLOCATE ( tstore(
snlnq*4,1:nkd) )
930 sitmin = sqrt( kdmin * tanh(kdmin) )
931 sitmax = sqrt( kdmax * tanh(kdmax) )
932 xsit = (sitmax/sitmin)**(1./real(nkd-1))
935 WRITE (
ndst,9010) nkd, kdmin, kdmax, xsit
947 s0 = sitmin * sqrt(
grav / depth ) / xsit
952 CALL wavnu2 ( s0, depth, wn0, cg0, 1.e-6, 25, ierr)
963 WRITE (
ndst,9020) ikd, iq, wn0*depth, s0*
tpiinv, depth
969 IF (
snlcd(iq) .GT. 0. ) nqd = nqd + 1
970 IF (
snlcs(iq) .GT. 0. ) nqs = nqs + 1
972 IF ( th12 .LT. 0. )
THEN
973 IF ( off12.LT.0. .OR. off12.GT.0.5 .OR. &
974 off34.LT.0. .OR. off34.GT.0.5 )
GOTO 801
976 IF (
snlt(iq).GT.
delthm .OR. off12.LT.0. .OR. &
983 WRITE (
ndst,9021)
snlt(iq), off12, off34, &
989 s1 = s0 * ( 1. + off12 )
990 CALL wavnu2 ( s1, depth, wn1, cg1, 1.e-6, 25, ierr)
991 s2 = s0 * ( 1. - off12 )
992 CALL wavnu2 ( s2, depth, wn2, cg2, 1.e-6, 25, ierr)
993 s3 = s0 * ( 1. + off34 )
994 CALL wavnu2 ( s3, depth, wn3, cg3, 1.e-6, 25, ierr)
995 s4 = s0 * ( 1. - off34 )
996 CALL wavnu2 ( s4, depth, wn4, cg4, 1.e-6, 25, ierr)
1003 IF ( th12 .LT. 0. )
THEN
1006 bb = wn1**2 + wn2**2 + 2.*wn1*wn2*cos(th12)
1007 bb = sqrt( max( bb , 0. ) )
1010 IF ( th12.LT.0. .AND. abs(off12).LE.1.e-4 )
THEN
1016 aux1 = (cc**2+bb**2-aa**2) / (2.*bb*cc)
1017 aux2 = (aa**2+bb**2-cc**2) / (2.*bb*aa)
1018 delth(1) = - acos( max( 0. , min( 1. , aux1 ) ) )
1019 delth(2) = acos( max( 0. , min( 1. , aux2 ) ) )
1023 aux1 = (cc**2+bb**2-aa**2) / (2.*bb*cc)
1024 aux2 = (aa**2+bb**2-cc**2) / (2.*bb*aa)
1025 delth(3) = - acos( max( 0. , min( 1. , aux1 ) ) )
1026 delth(4) = acos( max( 0. , min( 1. , aux2 ) ) )
1035 jfr(j) = int( log(auxfr(j)) / xfrln )
1036 jfr1(j) = jfr(j) + 1 * sign(1.,auxfr(j)-1.)
1037 wfr(j) = (
xfr**jfr1(j)-auxfr(j))/(
xfr**jfr1(j)-
xfr**jfr(j))
1038 wfr1(j) = 1. - wfr(j)
1041 ifrmin = min( ifrmin , minval(jfr1) )
1042 ifrmax = max( ifrmax , maxval(jfr1) )
1045 WRITE (
ndst,9023) 1, jfr(1), jfr1(1), wfr(1), wfr1(1)
1047 WRITE (
ndst,9024) j, jfr(j), jfr1(j), wfr(j), wfr1(j)
1054 aux1 = delth(j) /
dth
1056 jth1(j) = jth(j) + 1 * sign(1.,delth(j))
1057 wth1(j) = abs(aux1) - real(abs(jth(j)))
1058 wth(j) = 1. - wth1(j)
1064 WRITE (
ndst,9025) 1, jth(1), jth1(1), wth(1), wth1(1)
1066 WRITE (
ndst,9024) j, jth(j), jth1(j), wth(j), wth1(j)
1072 IF (
snlm(iq).EQ.0. .AND.
snlt(iq).LT.0. )
THEN
1097 tstore(
nqa,ikd)%OFR = jfr
1098 tstore(
nqa,ikd)%OFR1 = jfr1
1099 tstore(
nqa,ikd)%HFR = wfr
1100 tstore(
nqa,ikd)%HFR1 = wfr1
1101 tstore(
nqa,ikd)%OTH = jth
1102 tstore(
nqa,ikd)%OTH1 = jth1
1103 tstore(
nqa,ikd)%HTH = wth
1104 tstore(
nqa,ikd)%HTH1 = wth1
1105 IF ( jj .EQ. 2 )
THEN
1106 tstore(
nqa,ikd)%CQD =
snlcd(iq) * 2.
1107 tstore(
nqa,ikd)%CQS =
snlcs(iq) * 2.
1112 auxf = ( wn0 * s0 ) / cg0
1113 tstore(
nqa,ikd)%F1 = auxf * cg1 / ( wn1 * s1 )
1114 tstore(
nqa,ikd)%F2 = auxf * cg2 / ( wn2 * s2 )
1115 tstore(
nqa,ikd)%F3 = auxf * cg3 / ( wn3 * s3 )
1116 tstore(
nqa,ikd)%F4 = auxf * cg4 / ( wn4 * s4 )
1140 nfrmax = nfr + ifrmax - ifrmin
1180 qst1((j-1)*4+1,iqa,ikd) = tstore(iqa,ikd)%OTH (j) + &
1181 tstore(iqa,ikd)%OFR (j) *
nthexp
1182 qst1((j-1)*4+2,iqa,ikd) = tstore(iqa,ikd)%OTH1(j) + &
1183 tstore(iqa,ikd)%OFR (j) *
nthexp
1184 qst1((j-1)*4+3,iqa,ikd) = tstore(iqa,ikd)%OTH (j) + &
1185 tstore(iqa,ikd)%OFR1(j) *
nthexp
1186 qst1((j-1)*4+4,iqa,ikd) = tstore(iqa,ikd)%OTH1(j) + &
1187 tstore(iqa,ikd)%OFR1(j) *
nthexp
1189 qst2((j-1)*4+1,iqa,ikd) = tstore(iqa,ikd)%HFR (j) * &
1190 tstore(iqa,ikd)%HTH (j)
1191 qst2((j-1)*4+2,iqa,ikd) = tstore(iqa,ikd)%HFR (j) * &
1192 tstore(iqa,ikd)%HTH1(j)
1193 qst2((j-1)*4+3,iqa,ikd) = tstore(iqa,ikd)%HFR1(j) * &
1194 tstore(iqa,ikd)%HTH (j)
1195 qst2((j-1)*4+4,iqa,ikd) = tstore(iqa,ikd)%HFR1(j) * &
1196 tstore(iqa,ikd)%HTH1(j)
1200 qst3(1,iqa,ikd) = tstore(iqa,ikd)%F1
1201 qst3(2,iqa,ikd) = tstore(iqa,ikd)%F2
1202 qst3(3,iqa,ikd) = tstore(iqa,ikd)%F3
1203 qst3(4,iqa,ikd) = tstore(iqa,ikd)%F4
1204 qst3(5,iqa,ikd) = tstore(iqa,ikd)%CQD
1205 qst3(6,iqa,ikd) = tstore(iqa,ikd)%CQS
1210 IF ( nqd .GT. 0 )
qst3(5,:,:) =
qst3(5,:,:) / real(nqd)
1211 IF ( nqs .GT. 0 )
qst3(6,:,:) =
qst3(6,:,:) / real(nqs)
1213 DEALLOCATE ( tstore )
1225 ALLOCATE ( ast1(16,
nqa,nkd), ast2(16,
nqa,nkd) )
1229 s0 = sitmin * sqrt(
grav / depth ) / xsit
1234 CALL wavnu2 ( s0, depth, wn0, cg0, 1.e-6, 25, ierr)
1243 WRITE (
ndst,9030) ikd, iq, wn0*depth, s0*
tpiinv, depth
1251 WRITE (
ndst,9031)
snlt(iq), off12, off34
1256 auxfr(1) = ( 1. + off12 )
1257 auxfr(2) = ( 1. - off12 )
1258 auxfr(3) = ( 1. + off34 )
1259 auxfr(4) = ( 1. - off34 )
1262 jfr(j) = int( log(auxfr(j)) / xfrln )
1263 jfr1(j) = jfr(j) + 1 * sign(1.,auxfr(j)-1.)
1264 wfr(j) = (
xfr**jfr1(j)-auxfr(j))/(
xfr**jfr1(j)-
xfr**jfr(j))
1265 wfr1(j) = 1. - wfr(j)
1269 WRITE (
ndst,9032) 1, jfr(1), jfr1(1), wfr(1), wfr1(1)
1271 WRITE (
ndst,9033) j, jfr(j), jfr1(j), wfr(j), wfr1(j)
1279 IF ( jiq .LE. 2 )
THEN
1289 IF ( jof .EQ. 1 )
THEN
1297 sioff = s0 *
xfr**ifr
1298 CALL wavnu2 ( sioff, depth, wn0, cg0, 1.e-6, 25, ierr)
1299 s1 = sioff * ( 1. + off12 )
1300 CALL wavnu2 ( s1, depth, wn1, cg1, 1.e-6, 25, ierr)
1301 s2 = sioff * ( 1. - off12 )
1302 CALL wavnu2 ( s2, depth, wn2, cg2, 1.e-6, 25, ierr)
1303 s3 = sioff * ( 1. + off34 )
1304 CALL wavnu2 ( s3, depth, wn3, cg3, 1.e-6, 25, ierr)
1305 s4 = sioff * ( 1. - off34 )
1306 CALL wavnu2 ( s4, depth, wn4, cg4, 1.e-6, 25, ierr)
1309 WRITE (
ndst,9034) jiq, jof, ifr, wfroff, sioff/s0
1312 IF ( th12 .LT. 0. )
THEN
1315 bb = wn1**2 + wn2**2 + 2.*wn1*wn2*cos(th12)
1316 bb = sqrt( max( bb , 0. ) )
1319 IF ( th12.LT.0. .AND. abs(off12).LE.1.e-4 )
THEN
1325 aux1 = (cc**2+bb**2-aa**2) / (2.*bb*cc)
1326 aux2 = (aa**2+bb**2-cc**2) / (2.*bb*aa)
1327 delth(1) = - acos( max( 0. , min( 1. , aux1 ) ) )
1328 delth(2) = acos( max( 0. , min( 1. , aux2 ) ) )
1332 aux1 = (cc**2+bb**2-aa**2) / (2.*bb*cc)
1333 aux2 = (aa**2+bb**2-cc**2) / (2.*bb*aa)
1334 delth(3) = - acos( max( 0. , min( 1. , aux1 ) ) )
1335 delth(4) = acos( max( 0. , min( 1. , aux2 ) ) )
1341 aux1 = delth(jiq) /
dth
1342 jth(jiq) = int(aux1)
1343 jth1(jiq) = jth(jiq) + 1 * sign(1.,delth(jiq))
1344 wth1(jiq) = abs(aux1) - real(abs(jth(jiq)))
1345 wth(jiq) = 1. - wth1(jiq)
1347 nthmx2 = max( nthmx2 , abs(jth1(jiq)) )
1350 WRITE (
ndst,9036) jiq, jth(jiq), jth1(jiq), &
1356 IF (
snlm(iq).EQ.0. .AND.
snlt(iq).LT.0. )
THEN
1383 ist = (jiq-1)*4 + (jof-1)*2 + 1
1384 ast1(ist,
nqa+jqr,ikd) = ifr
1385 ast2(ist,
nqa+jqr,ikd) = jth(jiq)
1386 qst5(ist,
nqa+jqr,ikd) = wf * ( wfroff * wth(jiq) )
1387 qst6(ist,
nqa+jqr,ikd) = wf * ( wfroff * wth(jiq) )**2
1389 ast1(ist,
nqa+jqr,ikd) = ifr
1390 ast2(ist,
nqa+jqr,ikd) = jth1(jiq)
1391 qst5(ist,
nqa+jqr,ikd) = wf * ( wfroff * wth1(jiq) )
1392 qst6(ist,
nqa+jqr,ikd) = wf * ( wfroff * wth1(jiq) )**2
1408 WRITE (
ndst,9037) ikd,
nqa+jqr
1410 WRITE (
ndst,9038) ist, ast1(ist,
nqa+jqr,ikd), &
1411 ast2(ist,
nqa+jqr,ikd), &
1432 IF (
nthmax .LT. nthmx2 )
GOTO 810
1433 IF (
nqa .NE.
SIZE(ast1(1,:,1)) )
GOTO 811
1435 DEALLOCATE ( ast1, ast2 )
1443 CALL extcde ( 1000 )
1446 WRITE (
ndse,1001) off12, off34
1447 CALL extcde ( 1001 )
1450 WRITE (
ndse,1002) off12, off34,
snlt(iq), &
1452 CALL extcde ( 1002 )
1456 CALL extcde ( 1010 )
1459 WRITE (
ndse,1011)
nqa,
SIZE(ast1(1,:,1))
1460 CALL extcde ( 1011 )
1466 1000
FORMAT (/
' *** WAVEWATCH-III ERROR IN INSNL3 :'/ &
1467 ' PARAMETER OUT OF RANGE '/ &
1468 ' LAMMAX, DELTHM :', 2e12.4/)
1469 1001
FORMAT (/
' *** WAVEWATCH-III ERROR IN INSNL3 :'/ &
1470 ' PARAMETER OUT OF RANGE '/ &
1471 ' MU, LAMBDA :', 2e12.4/)
1472 1002
FORMAT (/
' *** WAVEWATCH-III ERROR IN INSNL3 :'/ &
1473 ' PARAMETER OUT OF RANGE '/ &
1474 ' MU, LAMBDA, TH12 :',3e12.4/ &
1475 ' LAMBDA RANGE :',2e12.4)
1476 1010
FORMAT (/
' *** WAVEWATCH-III ERROR IN INSNL3 :'/ &
1477 ' NTHMAX LESS THAN NTHMX2 :', 2i8/)
1478 1011
FORMAT (/
' *** WAVEWATCH-III ERROR IN INSNL3 :'/ &
1479 ' NQA INCONSISTENT :', 2i8/)
1482 9010
FORMAT (/
' TEST INSNL3: NKD, KDMIN/MAX/X : ',i8,3f10.4)
1486 9020
FORMAT (/
' TEST INSNL3: IKD, IQ, KD, F, D: ',2i8,2f10.4,f10.2)
1487 9021
FORMAT (/
' TEST INSNL3: TH12 : ',3x,f8.2/ &
1488 ' OFF12, OFF34 : ',3x,2f8.2/ &
1489 ' CD, CS : ',3x,2e10.2)
1490 9022
FORMAT (
' ANGLES (DEGR) : ',1x,4f8.2)
1491 9023
FORMAT (
' FREQUENCY IND. : ',1x,3i4,2f6.2)
1492 9024
FORMAT (
' : ',1x,3i4,2f6.2)
1493 9025
FORMAT (
' DIRECTIONAL IND. : ',1x,3i4,2f6.2)
1496 9026
FORMAT (
' TEST INSNL3: FILLING FIRST DATA TABLES :'/ &
1497 ' NQA AND MAXIMUM : ',2i8/ &
1498 ' NQD AND NQS : ',2i8)
1499 9027
FORMAT (
' NFR, MIN/MAX/CUT : ',4i8/ &
1500 ' NTH, MIN/MAX/EXP : ',4i8)
1504 9030
FORMAT (/
' TEST INSNL3: IKD, IQ, KD, F, D: ',2i8,2f10.4,f10.2)
1505 9031
FORMAT (/
' TEST INSNL3: TH12 : ',3x,f8.2/ &
1506 ' OFF12, OFF34 : ',3x,2f8.2)
1507 9032
FORMAT (
' FREQUENCY IND. : ',1x,3i4,2f6.2)
1508 9033
FORMAT (
' : ',1x,3i4,2f6.2)
1509 9034
FORMAT (
' J,J,J, W, SIn : ',1x,3i4,2f6.2)
1510 9035
FORMAT (
' ANGLES (DEGR) : ',3x,4f8.2)
1511 9036
FORMAT (
' DIRECTIONAL IND. : ',1x,3i4,2f6.2)
1514 9037
FORMAT (/
' TEST INSNL3: STORAGE ARRAYS FOR IKD, IQA =',2i6)
1515 9038
FORMAT (23x,3i4,3f8.3)
1533 REAL FUNCTION MINLAM ( MU, THETA )
1562 REAL,
INTENT(IN) :: mu, theta
1566 REAL :: muloc, thetar, bb, aux
1570 IF ( theta .LT. 0. )
THEN
1573 muloc = max( 0. , min( 1., mu ) )
1574 thetar = theta * atan(1.) / 45.
1575 bb = (1.+muloc)**4 + (1.-muloc)**4 + &
1576 2. * (1.+muloc)**2 * (1.-muloc)**2 * cos(thetar)
1577 bb = sqrt( max( bb , 0. ) )
1578 aux = max( 0. , 0.5*bb-1. )
1579 minlam = sqrt( aux )
1601 REAL function
maxlam ( mu, theta )
1630 REAL,
INTENT(IN) :: mu, theta
1634 REAL :: muloc, thetar, bb, aux
1638 IF ( theta .LT. 0. )
THEN
1641 muloc = max( 0. , min( 1., mu ) )
1642 thetar = theta * atan(1.) / 45.
1643 bb = (1.+muloc)**4 + (1.-muloc)**4 + &
1644 2. * (1.+muloc)**2 * (1.-muloc)**2 * cos(thetar)
1645 bb = sqrt( max( bb , 0. ) )