Bundles routines for third order porpagation scheme in single module.
More...
|
| subroutine | w3map2 |
| | Generate 'map' arrays for the ULTIMATE QUICKEST scheme. More...
|
| |
| subroutine | w3xyp2 (ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY) |
| | Propagation in physical space for a given spectral component. More...
|
| |
| subroutine | w3ktp2 (ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, DDDX, DDDY, CX, CY, DCXDX, DCXDY, DCYDX, DCYDY, DCDX, DCDY, VA) |
| | Propagation in spectral space. More...
|
| |
Bundles routines for third order porpagation scheme in single module.
- Author
- H. L. Tolman
- Date
- 29-May-2014
- Copyright
- Copyright 2009-2022 National Weather Service (NWS), National Oceanic and Atmospheric Administration. All rights reserved. WAVEWATCH III is a trademark of the NWS. No unauthorized use without permission.
◆ w3ktp2()
| subroutine w3pro2md::w3ktp2 |
( |
integer, intent(in) |
ISEA, |
|
|
real, intent(in) |
FACTH, |
|
|
real, intent(in) |
FACK, |
|
|
real, intent(in) |
CTHG0, |
|
|
real, dimension(0:nk+1), intent(in) |
CG, |
|
|
real, dimension(0:nk+1), intent(in) |
WN, |
|
|
real, intent(in) |
DEPTH, |
|
|
real, intent(in) |
DDDX, |
|
|
real, intent(in) |
DDDY, |
|
|
real, intent(in) |
CX, |
|
|
real, intent(in) |
CY, |
|
|
real, intent(in) |
DCXDX, |
|
|
real, intent(in) |
DCXDY, |
|
|
real, intent(in) |
DCYDX, |
|
|
real, intent(in) |
DCYDY, |
|
|
real, dimension(0:nk+1), intent(in) |
DCDX, |
|
|
real, dimension(0:nk+1), intent(in) |
DCDY, |
|
|
real, dimension(nspec), intent(inout) |
VA |
|
) |
| |
Propagation in spectral space.
Third order QUICKEST scheme with ULTIMATE limiter.
As with the spatial propagation, the two spaces are considered independently, but the propagation is performed in a 2-D space. Compared to the propagation in physical space, the directions represent a closed space and are therefore comparable to the longitudinal or 'X' propagation. The wavenumber space has to be extended to allow for boundary treatment. Using a simple first order boundary treatment at both sided, two points need to be added. This implies that the spectrum needs to be extended, shifted and rotated, as is performed using MAPTH2 as set in W3MAP3.
- Parameters
-
| [in] | ISEA | Number of sea point. |
| [in] | FACTH | Factor in propagation velocity. |
| [in] | FACK | Factor in propagation velocity. |
| [in] | CTHG0 | Factor in great circle refracftion term. |
| [in] | CG | Local group velocities. |
| [in] | WN | Local wavenumbers. |
| [in] | DEPTH | Depth. |
| [in] | DDDX | Depth gradient. |
| [in] | DDDY | Depth gradient. |
| [in] | CX | Current component. |
| [in] | CY | Current component. |
| [in] | DCXDX | Current gradients. |
| [in] | DCXDY | Current gradients. |
| [in] | DCYDX | Current gradients. |
| [in] | DCYDY | Current gradients. |
| [in] | DCDX | Phase speed gradient. |
| [in] | DCDY | Phase speed gradient. |
| [in,out] | VA | Spectrum. |
- Author
- H. L. Tolman
- Date
- 01-Jul-2013
Definition at line 1305 of file w3pro2md.F90.
1433 INTEGER,
INTENT(IN) :: ISEA
1434 REAL,
INTENT(IN) :: FACTH, FACK, CTHG0, CG(0:NK+1), &
1435 WN(0:NK+1), DEPTH, DDDX, DDDY, &
1436 CX, CY, DCXDX, DCXDY, DCYDX, DCYDY
1437 REAL,
INTENT(IN) :: DCDX(0:NK+1), DCDY(0:NK+1)
1438 REAL,
INTENT(INOUT) :: VA(NSPEC)
1443 INTEGER :: ITH, IK, ISP
1445 INTEGER,
SAVE :: IENT = 0
1447 REAL :: FDDMAX, FDG, FKD, FKD0, DCYX, &
1448 DCXXYY, DCXY, DCXX, DCXYYX, DCYY
1449 REAL :: DSDD(0:NK+1), FRK(NK), FRG(NK), &
1450 FKC(NTH), VQ(-NK-1:NK2*(NTH+2)), &
1451 DB(NK2,NTH+1), DM(NK2,0:NTH+1), &
1452 VCFLT(NK2*(NTH+1)), CFLK(NK2,NTH)
1457 CALL strace (ient,
'W3KTP2')
1467 WRITE (
ndst,9010) isea, depth, cx, cy, dddx, dddy, &
1468 dcxdx, dcxdy, dcydx, dcydy
1475 IF ( depth*wn(ik) .LT. 5. )
THEN
1476 dsdd(ik) = max( 0. , &
1477 cg(ik)*wn(ik)-0.5*
sig(ik) ) / depth
1494 vq(
mapth2(isp)) = va(isp)
1507 fddmax = max(fddmax,abs(
esin(ith)*dddx-
ecos(ith)*dddy))
1511 frk(ik) = facth * dsdd(ik) / wn(ik)
1512 frk(ik) = frk(ik) / max( 1. , frk(ik)*fddmax/
ctmax )
1513 frg(ik) = fdg * cg(ik)
1530 fddmax = max( fddmax , abs( &
1535 frk(ik) = facth * cg(ik) * wn(ik) /
sig(ik)
1548 dcyx = facth * dcydx
1549 dcxxyy = facth * ( dcxdx - dcydy )
1550 dcxy = facth * dcxdy
1554 es2(isp)*dcyx +
esc(isp)*dcxxyy -
ec2(isp)*dcxy
1569 dcxyyx = - ( dcxdy + dcydx )
1571 fkd = ( cx*dddx + cy*dddy )
1574 fkc(ith) =
ec2(ith)*dcxx + &
1575 esc(ith)*dcxyyx +
es2(ith)*dcyy
1581 fkd0 = fkd / cg(ik) * dsdd(ik)
1583 cflk(ik+1,ith) = fkd0 + wn(ik)*fkc(ith)
1590 db(ik+1,1) =
dsip(ik) / cg(ik)
1591 dm(ik+1,1) = wn(ik+1) - wn(ik)
1593 db(nk+2,1) =
dsip(nk+1) / cg(nk+1)
1598 db(ik,ith) = db(ik,1)
1599 dm(ik,ith) = dm(ik,1)
1607 IF ( mod(
itime,2) .EQ. 0 )
THEN
1610 vq(nk+2+(ith-1)*nk2) =
fachfa * vq(nk+1+(ith-1)*nk2)
1614 CALL w3qck2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1615 vq, .false., 1,
mapth2, nspec, &
1616 mapwn2, nspec-nth, nspec, nspec+nth, &
1621 CALL w3uno2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1622 vq, .false., 1,
mapth2, nspec, &
1623 mapwn2, nspec-nth, nspec, nspec+nth, &
1630 CALL w3qck1 ( nth, nk2, nth, nk2, vcflt, vq, .true., &
1636 CALL w3uno2r( nth, nk2, nth, nk2, vcflt, vq, .true., &
1646 CALL w3qck1 ( nth, nk2, nth, nk2, vcflt, vq, .true., &
1652 CALL w3uno2r( nth, nk2, nth, nk2, vcflt, vq, .true., &
1660 vq(nk+2+(ith-1)*nk2) =
fachfa * vq(nk+1+(ith-1)*nk2)
1664 CALL w3qck2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1665 vq, .false., 1,
mapth2, nspec, &
1666 mapwn2, nspec-nth, nspec, nspec+nth, &
1671 CALL w3uno2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1672 vq, .false., 1,
mapth2, nspec, &
1673 mapwn2, nspec-nth, nspec, nspec+nth, &
1683 va(isp) = vq(
mapth2(isp))
1691 9000
FORMAT (
' TEST W3KTP2 : FLCTH-K, FACTH-K, CTMAX :', &
1693 9010
FORMAT (
' TEST W3KTP2 : LOCAL DATA :',i7,f7.1,2f6.2,1x,6e10.2)
1694 9020
FORMAT (
' TEST W3KTP2 : IK, T, L, CG, DSDD : ')
1695 9021
FORMAT (
' ',i3,f7.2,f7.1,f7.2,e11.3)
1699 9040
FORMAT (/
' TEST W3KTP2 : NORMALIZED ',a/)
1700 9041
FORMAT (1x,60(1x,i2))
1701 9042
FORMAT (1x,60i3)
References w3gdatmd::ctmax, w3gdatmd::dsip, w3gdatmd::ec2, w3gdatmd::ecos, w3gdatmd::es2, w3gdatmd::esc, w3gdatmd::esin, w3gdatmd::fachfa, w3gdatmd::flck, w3gdatmd::flcth, w3idatmd::flcur, w3adatmd::itime, w3adatmd::mapth2, w3gdatmd::mapwn, w3adatmd::mapwn2, w3odatmd::ndse, w3odatmd::ndst, w3gdatmd::nk, w3gdatmd::nk2, w3gdatmd::nspec, w3gdatmd::nth, w3gdatmd::sig, w3servmd::strace(), constants::tpi, w3uqckmd::w3qck1(), w3uqckmd::w3qck2(), w3uno2md::w3uno2(), and w3uno2md::w3uno2r().
Referenced by w3wavemd::w3wave().
◆ w3map2()
| subroutine w3pro2md::w3map2 |
Generate 'map' arrays for the ULTIMATE QUICKEST scheme.
- Author
- H. L. Tolman
- Date
- 09-Nov-2005
Definition at line 136 of file w3pro2md.F90.
215 USE w3gdatmd,
ONLY: nk, nth, nspec, nx, ny,
nsea, mapsta
232 INTEGER :: IX, IY, IXY0, IX2, IY2, IX0, IY0, &
233 IK, ITH, ISP, ISP0, ISP2
235 INTEGER,
SAVE :: IENT = 0
238 INTEGER :: MAPTXY(NY,NX), I, IXY
239 INTEGER :: MAPTST(NK+2,NTH)
245 CALL strace (ient,
'W3MAP2')
260 IF ( mapsta(iy,ix).EQ.1 .AND. mapsta(iy,ix2).EQ.1 )
THEN
264 maptxy(iy,ix) = maptxy(iy,ix) + 1
277 IF ( mapsta(iy,ix).EQ.1 .AND. mapsta(iy,ix2).NE.1 )
THEN
281 maptxy(iy,ix) = maptxy(iy,ix) + 2
294 IF ( mapsta(iy,ix).NE.1 .AND. mapsta(iy,ix2).EQ.1 )
THEN
298 maptxy(iy,ix) = maptxy(iy,ix) + 4
309 WRITE (
ndst,9001) (maptxy(iy,ix),ix=1, nx)
325 IF ( mapsta(iy,ix).EQ.1 .AND. mapsta(iy2,ix).EQ.1 )
THEN
329 maptxy(iy,ix) = maptxy(iy,ix) + 1
342 IF ( mapsta(iy,ix).EQ.1 .AND. mapsta(iy2,ix).NE.1 )
THEN
346 maptxy(iy,ix) = maptxy(iy,ix) + 2
359 IF ( mapsta(iy,ix).NE.1 .AND. mapsta(iy2,ix).EQ.1 )
THEN
363 maptxy(iy,ix) = maptxy(iy,ix) + 4
373 WRITE (
ndst,9001) (maptxy(iy,ix),ix=1, nx)
383 IF ( mapsta(iy,ix).EQ.1 )
THEN
394 IF ( ix .EQ. nx ) ix2 = 1
396 IF ( mapsta( iy ,ix ).GE.1 .AND. &
397 mapsta( iy ,ix2).GE.1 .AND. &
398 mapsta(iy+1,ix ).GE.1 .AND. &
399 mapsta(iy+1,ix2).GE.1 )
THEN
408 IF (
mapth2(1) .NE. 0 )
RETURN
418 isp = ith + (ik-1)*nth
419 isp2 = (ik+1) + (ith-1)*(nk+2)
422 maptst(ik+1,ith) = maptst(ik+1,ith) + 1
428 WRITE (
ndst,9000)
'MAPTH2', isp, 0, 0, isp
430 WRITE (
ndst,9001) (maptst(ik,ith),ith=1, nth)
441 isp2 = (ik+1) + (ith-1)*(nk+2)
444 maptst(ik+1,ith) = maptst(ik+1,ith) + 1
451 isp2 = nk+1 + (ith-1)*(nk+2)
454 maptst(nk+1,ith) = maptst(nk+1,ith) + 2
460 isp2 = 1 + (ith-1)*(nk+2)
463 maptst(1,ith) = maptst(1,ith) + 4
468 WRITE (
ndst,9000)
'MAPWN2', nspec-nth, nth, nth, nspec+nth
470 WRITE (
ndst,9001) (maptst(ik,ith),ith=1, nth)
479 9000
FORMAT (/
' TEST W3MAP2 : TEST MAP FOR PROPAGATION'/ &
485 9001
FORMAT (1x,130i1)
486 9010
FORMAT (
' TEST W3MAP2 : COMPOSITE MAPS TH2, WN2 AND BTK')
487 9011
FORMAT (2x,60i2)
References w3adatmd::mapaxy, w3gdatmd::mapsta, w3adatmd::mapth2, w3adatmd::mapwn2, w3adatmd::mapx2, w3adatmd::mapxy, w3adatmd::mapy2, w3adatmd::nact, w3odatmd::ndst, w3gdatmd::nk, w3adatmd::nmx0, w3adatmd::nmx1, w3adatmd::nmx2, w3adatmd::nmxy, w3adatmd::nmy0, w3adatmd::nmy1, w3adatmd::nmy2, w3gdatmd::nsea, w3gdatmd::nspec, w3gdatmd::nth, w3gdatmd::nx, w3gdatmd::ny, and w3servmd::strace().
Referenced by w3wavemd::w3wave().
◆ w3xyp2()
| subroutine w3pro2md::w3xyp2 |
( |
integer, intent(in) |
ISP, |
|
|
real, intent(in) |
DTG, |
|
|
integer, dimension(ny*nx), intent(in) |
MAPSTA, |
|
|
integer, dimension(ny*nx), intent(in) |
MAPFS, |
|
|
real, dimension(1-ny:ny*(nx+2)), intent(inout) |
VQ, |
|
|
real, intent(in) |
VGX, |
|
|
real, intent(in) |
VGY |
|
) |
| |
Propagation in physical space for a given spectral component.
- Parameters
-
| [in] | ISP | Number of spectral bin (IK-1)*NTH+ITH. |
| [in] | DTG | Total time step. |
| [in] | MAPSTA | Grid point status map. |
| [in] | MAPFS | Storage map. |
| [in,out] | VQ | Field to propagate. |
| [in] | VGX | |
| [in] | VGY | |
- Author
- H. L. Tolman
- Date
- 29-May-2014
Definition at line 509 of file w3pro2md.F90.
677 USE w3gdatmd,
ONLY: nk, nth,
dth,
xfr,
esin,
ecos,
sig, nx, ny, &
705 INTEGER,
INTENT(IN) :: ISP, MAPSTA(NY*NX), MAPFS(NY*NX)
706 REAL,
INTENT(IN) :: DTG, VGX, VGY
707 REAL,
INTENT(INOUT) :: VQ(1-NY:NY*(NX+2))
712 INTEGER :: ITH, IK, NTLOC, ITLOC, ISEA, IXY, &
714 INTEGER :: TTEST(2),DTTST
716 INTEGER,
SAVE :: IENT = 0
718 REAL :: CG0, CGA, CGN, CGX, CGY, CXC, CYC, &
719 CXMIN, CXMAX, CYMIN, CYMAX
720 REAL :: DTLOC, DTRAD, &
721 DFRR, CELLP, CGD, DSSD, &
722 DNND, DCELL, XWIND, TFAC, DSS, DNN
724 REAL :: RFAC, DFAC, DVQ, QXX, QXY, QYY
731 REAL :: VLCFLX((NX+1)*NY), VLCFLY((NX+1)*NY),&
732 VFDIFX(1-NY:NX*NY), VFDIFY(NX*NY), &
733 VFDIFC(1-NY:NX*NY), VDXX((NX+1)*NY), &
734 VDYY(NX*NY), VDXY((NX+1)*NY)
736 REAL :: CXTOT((NX+1)*NY), CYTOT(NX*NY)
737 REAL :: VQ_OLD(1-NY:NY*(NX+2))
739 REAL :: VFDIFX_FAC(1-NY:NX*NY), &
740 VFDIFY_FAC(1-NY:NX*NY), &
741 VFDIFC_FAC(1-NY:NX*NY)
747 CALL strace (ient,
'W3XYP2')
763 WRITE(
ndse,*)
'SUBROUTINE W3XYP2 IS NOT YET ADAPTED FOR '// &
764 'TRIPOLE GRIDS. STOPPING NOW.'
771 ith = 1 + mod(isp-1,nth)
776 cgx = cga *
ecos(ith)
777 cgy = cga *
esin(ith)
784 cxmin = minval( cx(1:
nsea) )
785 cxmax = maxval( cx(1:
nsea) )
786 cymin = minval( cy(1:
nsea) )
787 cymax = maxval( cy(1:
nsea) )
788 IF ( abs(cgx+cxmin) .GT. abs(cgx+cxmax) )
THEN
793 IF ( abs(cgy+cymin) .GT. abs(cgy+cymax) )
THEN
798 cxc = max( abs(cxmin) , abs(cxmax) )
799 cyc = max( abs(cymin) , abs(cymax) )
801 cxc = max( abs(cxmin-vgx) , abs(cxmax-vgx) )
802 cyc = max( abs(cymin-vgy) , abs(cymax-vgy) )
809 cgn = 0.9999 * max( abs(cgx) , abs(cgy) , cxc, cyc, 0.001*cg0 )
811 ntloc = 1 + int(dtg/(
dtcfl*cg0/cgn))
812 dtloc = dtg / real(ntloc)
827 yfirst = mod(nint(dttst/dtg),2) .EQ. 0
830 WRITE (
ndst,9000) yfirst
838 IF (
dtme .NE. 0. )
THEN
842 dssd = ( dfrr * cgd )**2 *
dtme / 12.
843 dnnd = ( cgd *
dth )**2 *
dtme / 12.
886 vq(ixy) = vq(ixy) / cg(ik,isea) *
clats(isea)
887 cxtot(ixy) =
ecos(ith) * cg(ik,isea) /
clats(isea)
888 cytot(ixy) =
esin(ith) * cg(ik,isea)
890 cxtot(ixy) = cxtot(ixy) - vgx/
clats(isea)
891 cytot(ixy) = cytot(ixy) - vgy
896 vq(ixy), cxtot(ixy), cytot(ixy)
910 cxtot(ixy) = cxtot(ixy) + cx(isea)/
clats(isea)
911 cytot(ixy) = cytot(ixy) + cy(isea)
914 vq(ixy), cxtot(ixy), cytot(ixy)
928 cp=cxtot(ixy)*
dpdx(iy,ix)+cytot(ixy)*
dpdy(iy,ix)
929 cq=cxtot(ixy)*
dqdx(iy,ix)+cytot(ixy)*
dqdy(iy,ix)
930 vlcflx(ixy) = cp*dtrad
931 vlcfly(ixy) = cq*dtrad
940 IF (
dtme .NE. 0. )
THEN
952 atrny(ixy,1) ,
atrny(ixy,-1) ) .GT. trnmin )
THEN
953 dcell = cgd * min(
hpfac(iy,ix)*rfac, &
954 hqfac(iy,ix)*rfac ) / cellp
955 xwind = 3.3 *
u10(isea)*wn(ik,isea)/
sig(ik) - 2.3
956 xwind = max( 0. , min( 1. , xwind ) )
964 dss = xwind * dcell + (1.-xwind) * dssd * tfac
968 dnn = xwind * dcell + (1.-xwind) * dnnd * tfac
970 vdxx(ixy) = dtloc * (dss*
ecos(ith)**2+dnn*
esin(ith)**2)
971 vdyy(ixy) = dtloc * (dss*
esin(ith)**2+dnn*
ecos(ith)**2) &
973 vdxy(ixy) = dtloc * (dss-dnn) *
esin(ith)*
ecos(ith) &
999 vq(ixy)= vq(ixy) *
gsqrt(iy,ix)
1010 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1014 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1021 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1025 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1034 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1038 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1045 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1049 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1064 vq(ixy)= vq(ixy) /
gsqrt(iy,ix)
1075 REAL(NTLOC-ITLOC)/
REAL(NTLOC)
1077 IF ( rd2 .GT. 0.001 )
THEN
1078 rd2 = min(1.,max(0.,rd1/rd2))
1087 vq(ixy) = ( rd1*
bbpi0(isp,ibi) + rd2*
bbpin(isp,ibi) ) &
1088 / cg(ik,isea) *
clats(isea)
1094 IF (
dtme .NE. 0. )
THEN
1098 vq(iy+nx*ny) = vq(iy)
1106 vfdifx_fac(ixy) = 1.0
1111 vfdify_fac(ixy) = 1.0
1116 vfdifc_fac(ixy) = 1.0
1121 vfdifx_fac(iy-ny) = vfdifx_fac(iy+iy0)
1122 vfdifc_fac(iy-ny) = vfdifc_fac(iy+iy0)
1158 qxx = vfdifx_fac(ixy) *vq_old(ixy+ny) &
1159 - vfdifx_fac(ixy) *vq_old(ixy) &
1160 - vfdifx_fac(ixy-ny)*vq_old(ixy) &
1161 + vfdifx_fac(ixy-ny)*vq_old(ixy-ny)
1162 qyy = vfdify_fac(ixy) *vq_old(ixy+1) &
1163 - vfdify_fac(ixy) *vq_old(ixy) &
1164 - vfdify_fac(ixy-1) *vq_old(ixy) &
1165 + vfdify_fac(ixy-1) *vq_old(ixy-1)
1166 qxy = vfdifc_fac(ixy) *vq_old(ixy) &
1167 + vfdifc_fac(ixy-ny-1)*vq_old(ixy) &
1168 - vfdifc_fac(ixy-1) *vq_old(ixy) &
1169 - vfdifc_fac(ixy-ny) *vq_old(ixy) &
1170 + vfdifc_fac(ixy-ny) *vq_old(ixy+1) &
1171 - vfdifc_fac(ixy) *vq_old(ixy+1) &
1172 + vfdifc_fac(ixy-1) *vq_old(ixy-1) &
1173 - vfdifc_fac(ixy-ny-1)*vq_old(ixy-1) &
1174 + vfdifc_fac(ixy-1) *vq_old(ixy+ny) &
1175 - vfdifc_fac(ixy) *vq_old(ixy+ny) &
1176 + vfdifc_fac(ixy-ny) *vq_old(ixy-ny) &
1177 - vfdifc_fac(ixy-ny-1)*vq_old(ixy-ny) &
1178 + vfdifc_fac(ixy) *vq_old(ixy+ny+1) &
1179 - vfdifc_fac(ixy-1) *vq_old(ixy+ny-1) &
1180 + vfdifc_fac(ixy-ny-1)*vq_old(ixy-ny-1) &
1181 - vfdifc_fac(ixy-ny) *vq_old(ixy-ny+1)
1186 dvq = vdxx(ixy)*(
dpdx(iy,ix)*
dpdx(iy,ix)*qxx &
1187 + 2.0*
dpdx(iy,ix)*
dqdx(iy,ix)*qxy &
1189 + vdyy(ixy)*(
dpdy(iy,ix)*
dpdy(iy,ix)*qxx &
1190 + 2.0*
dpdy(iy,ix)*
dqdy(iy,ix)*qxy &
1192 + 2.0*vdxy(ixy)*(
dpdx(iy,ix)*
dpdy(iy,ix)*qxx &
1197 vq(ixy) = vq_old(ixy) + dvq * dfac
1207 yfirst = .NOT. yfirst
1222 IF ( mapsta(ixy) .GT. 0 )
THEN
1226 vq(ixy) = max( 0. , cg(ik,isea) /
clats(isea) * vq(ixy) )
1241 9000
FORMAT (
' TEST W3XYP2 : YFIRST :',l2)
1242 9001
FORMAT (
' TEST W3XYP2 : ISP, ITH, IK, COS-SIN :',i8,2i4,2f7.3)
1243 9002
FORMAT (
' TEST W3XYP2 : DFRR, CELLP, DTME :',3e10.3)
1244 9003
FORMAT (
' TEST W3XYP2 : NO DISPERSION CORRECTION ')
1245 9010
FORMAT (
' TEST W3XYP2 : INITIALIZE ARRAYS')
1246 9020
FORMAT (
' TEST W3XYP2 : CALCULATING LCFLX/Y AND DSS/NN (NSEA=', &
1248 9022
FORMAT (
' TEST W3XYP2 : CORRECTING FOR CURRENT')
1249 9040
FORMAT (
' TEST W3XYP2 : FIELD AFTER PROP. (NSEA=',i6,
')')
1252 9021
FORMAT (1x,i6,2i5,e12.4,2f7.3)
1255 9041
FORMAT (1x,i6,2i5,e12.4)
References w3adatmd::atrnx, w3adatmd::atrny, w3odatmd::bbpi0, w3odatmd::bbpin, w3adatmd::cg, w3gdatmd::clatmn, w3gdatmd::clats, w3adatmd::cx, w3adatmd::cy, constants::dera, w3gdatmd::dpdx, w3gdatmd::dpdy, w3gdatmd::dqdx, w3gdatmd::dqdy, w3timemd::dsec21(), w3gdatmd::dtcfl, w3gdatmd::dth, w3gdatmd::dtme, w3gdatmd::ecos, w3gdatmd::esin, w3servmd::extcde(), w3gdatmd::flagll, w3odatmd::flbpi, w3idatmd::flcur, w3gdatmd::flcx, w3gdatmd::flcy, constants::grav, w3gdatmd::gsqrt, w3gdatmd::hpfac, w3gdatmd::hqfac, w3odatmd::iaproc, w3gdatmd::iclose, w3gdatmd::iclose_none, w3gdatmd::iclose_smpl, w3gdatmd::iclose_trpl, w3odatmd::isbpi, w3adatmd::itime, w3adatmd::mapaxy, w3gdatmd::mapsf, w3adatmd::mapx2, w3adatmd::mapxy, w3adatmd::mapy2, w3adatmd::nact, w3odatmd::naperr, w3odatmd::nbi, w3odatmd::ndse, w3odatmd::ndst, w3gdatmd::nk, w3adatmd::nmx0, w3adatmd::nmx1, w3adatmd::nmx2, w3adatmd::nmxy, w3adatmd::nmy0, w3adatmd::nmy1, w3adatmd::nmy2, w3gdatmd::nsea, w3gdatmd::nth, w3gdatmd::nx, w3gdatmd::ny, constants::radius, w3gdatmd::sig, w3servmd::strace(), w3gdatmd::sx, w3gdatmd::sy, w3odatmd::tbpi0, w3odatmd::tbpin, w3wdatmd::time, w3adatmd::u10, w3uqckmd::w3qck3(), w3uno2md::w3uno2s(), w3adatmd::wn, and w3gdatmd::xfr.
Referenced by w3wavemd::w3wave().
real, dimension(:), pointer esc
integer, dimension(:), pointer tbpi0
real function dsec21(TIME1, TIME2)
Portable UNO2 scheme on irregular grid.
Define data structures to set up wave model auxiliary data for several models simultaneously.
integer, dimension(:), pointer mapy2
real, parameter dera
DERA Conversion factor from degrees to radians.
Define data structures to set up wave model dynamic data for several models simultaneously.
real, dimension(:,:), pointer atrnx
integer, dimension(:), pointer mapxy
real, dimension(:,:), pointer atrny
real, dimension(:), pointer sig
integer, dimension(:), pointer mapwn2
integer, dimension(:), pointer time
subroutine w3qck2(MX, MY, NX, NY, VELO, DT, DX1, DX2, Q, CLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
Like W3QCK1 with variable grid spacing.
real, dimension(:), pointer ecos
real, dimension(:,:), pointer bbpi0
integer, dimension(:), pointer tbpin
real, dimension(:), pointer dsip
integer, parameter iclose_none
real, dimension(:,:), pointer hqfac
real, dimension(:), pointer es2
real, dimension(:,:), pointer dqdy
real, dimension(:), pointer esin
subroutine w3uno2s(MX, MY, NX, NY, CFLL, TRANS, Q, BCLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
Like W3UNO2r with cell transparencies added.
subroutine w3uno2(MX, MY, NX, NY, VELO, DT, DX1, DX2, Q, BCLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
UNO2 scheme for irregular grid.
real, dimension(:), pointer clats
subroutine w3uno2r(MX, MY, NX, NY, CFLL, Q, BCLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
Preform one-dimensional propagation in a two-dimensional space with irregular boundaries and regular ...
integer, dimension(:,:), pointer mapsf
real, dimension(:,:), pointer dpdx
real, dimension(:,:), pointer gsqrt
integer, dimension(:), pointer mapth2
real, parameter radius
RADIUS Radius of the earth (m).
real, dimension(:), pointer u10
real, parameter tpi
TPI 2*Pi.
real, dimension(:,:), pointer dpdy
subroutine strace(IENT, SNAME)
Define data structures to set up wave model input data for several models simultaneously.
integer, dimension(:), pointer mapwn
integer, dimension(:), pointer mapx2
real, dimension(:,:), pointer hpfac
Portable ULTIMATE QUICKEST schemes.
subroutine w3qck3(MX, MY, NX, NY, CFLL, TRANS, Q, CLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
Like W3QCK1 with cell transparencies added.
Define some much-used constants for global use (all defined as PARAMETER).
subroutine w3qck1(MX, MY, NX, NY, CFLL, Q, CLOSE, INC, MAPACT, NACT, MAPBOU, NB0, NB1, NB2, NDSE, NDST)
Preform one-dimensional propagation in a two-dimensional space with irregular boundaries and regular ...
integer, parameter iclose_trpl
integer, dimension(:), pointer mapaxy
integer, dimension(:), pointer isbpi
real, dimension(:), pointer ec2
integer, parameter iclose_smpl
real, dimension(:,:), pointer dqdx
real, parameter grav
GRAV Acc.
real, dimension(:,:), pointer bbpin