129 REAL,
PRIVATE,
PARAMETER:: TRNMIN = 0.95
236 INTEGER :: IX, IY, IXY0, IX2, IY2, IX0, IY0, &
237 ISEA, IK, ITH, ISP, ISP0, ISP2, NCENTC
239 INTEGER,
SAVE :: IENT = 0
242 INTEGER :: MAPTXY(NY,NX), I, IXY
243 INTEGER :: MAPTST(NK+2,NTH)
249 CALL strace (ient,
'W3MAP3')
252 IF (
gtype .LT. 3)
THEN
265 IF (
mapsta(iy,ix).EQ.1 .AND.
mapsta(iy,ix2).EQ.1 )
THEN
269 maptxy(iy,ix) = maptxy(iy,ix) + 1
282 IF (
mapsta(iy,ix).EQ.1 .AND.
mapsta(iy,ix2).NE.1 )
THEN
286 maptxy(iy,ix) = maptxy(iy,ix) + 2
299 IF (
mapsta(iy,ix).NE.1 .AND.
mapsta(iy,ix2).EQ.1 )
THEN
303 maptxy(iy,ix) = maptxy(iy,ix) + 4
313 WRITE (
ndst,9001) (maptxy(iy,ix),ix=1, nx)
329 IF (
mapsta(iy,ix).EQ.1 .AND.
mapsta(iy2,ix).EQ.1 )
THEN
333 maptxy(iy,ix) = maptxy(iy,ix) + 1
346 IF (
mapsta(iy,ix).EQ.1 .AND.
mapsta(iy2,ix).NE.1 )
THEN
350 maptxy(iy,ix) = maptxy(iy,ix) + 2
363 IF (
mapsta(iy,ix).NE.1 .AND.
mapsta(iy2,ix).EQ.1 )
THEN
367 maptxy(iy,ix) = maptxy(iy,ix) + 4
377 WRITE (
ndst,9001) (maptxy(iy,ix),ix=1, nx)
387 IF (
mapsta(iy,ix).EQ.1 )
THEN
407 IF ( ix .EQ. nx ) ix2 = 1
408 IF ( ix .EQ. 1 ) ix0 = nx
412 ELSE IF (
mapsta(iy0,ix0).GE.1 .AND. &
413 mapsta(iy0,ix ).GE.1 .AND. &
414 mapsta(iy0,ix2).GE.1 .AND. &
415 mapsta(iy ,ix0).GE.1 .AND. &
416 mapsta(iy ,ix2).GE.1 .AND. &
417 mapsta(iy2,ix0).GE.1 .AND. &
418 mapsta(iy2,ix ).GE.1 .AND. &
419 mapsta(iy2,ix2).GE.1 )
THEN
431 IF (
mapth2(1) .NE. 0 )
RETURN
441 isp = ith + (ik-1)*nth
442 isp2 = (ik+1) + (ith-1)*(nk+2)
445 maptst(ik+1,ith) = maptst(ik+1,ith) + 1
451 WRITE (
ndst,9000)
'MAPTH2', isp, 0, 0, isp
453 WRITE (
ndst,9001) (maptst(ik,ith),ith=1, nth)
464 isp2 = (ik+1) + (ith-1)*(nk+2)
467 maptst(ik+1,ith) = maptst(ik+1,ith) + 1
474 isp2 = nk+1 + (ith-1)*(nk+2)
477 maptst(nk+1,ith) = maptst(nk+1,ith) + 2
483 isp2 = 1 + (ith-1)*(nk+2)
486 maptst(1,ith) = maptst(1,ith) + 4
493 WRITE (
ndst,9001) (maptst(ik,ith),ith=1, nth)
502 9000
FORMAT (/
' TEST W3MAP3 : TEST MAP FOR PROPAGATION'/ &
508 9001
FORMAT (1x,130i1)
509 9010
FORMAT (
' TEST W3MAP3 : COMPOSITE MAPS TH2, WN2 AND BTK')
510 9011
FORMAT (2x,60i2)
590 INTEGER,
SAVE :: IENT = 0
596 CALL strace (ient,
'W3MAPT')
638 SUBROUTINE w3xyp3 ( ISP, DTG, MAPSTA, MAPFS, VQ, VGX, VGY )
818 INTEGER,
INTENT(IN) :: ISP, MAPSTA(NY*NX), MAPFS(NY*NX)
819 REAL,
INTENT(IN) :: DTG, VGX, VGY
820 REAL,
INTENT(INOUT) :: VQ(1-NY:NY*(NX+2))
825 INTEGER :: ITH, IK, NTLOC, ITLOC, ISEA, IXY, IP
826 INTEGER :: IX, IY, IXC, IYC, IBI
827 INTEGER :: IIXY1(NSEA), IIXY2(NSEA), &
828 IIXY3(NSEA), IIXY4(NSEA)
829 INTEGER :: TTEST(2),DTTST
831 INTEGER,
SAVE :: IENT = 0
833 REAL :: CG0, CGA, CGN, CGX, CGY, CXC, CYC, &
834 CXMIN, CXMAX, CYMIN, CYMAX
835 REAL :: CGC, FGSE = 1.
836 REAL :: FTH, FTHX, FTHY, FCG, FCGX, FCGY
837 REAL :: DTLOC, DTRAD, &
838 DXCGN, DYCGN, DXCGS, DYCGS, DXCGC, &
840 REAL :: RDI1(NSEA), RDI2(NSEA), &
841 RDI3(NSEA), RDI4(NSEA)
842 REAL :: TMPX, TMPY, RD1, RD2, RD3, RD4
849 INTEGER :: MAPSTX(1-2*NY:NY*(NX+2))
850 REAL :: VLCFLX((NX+1)*NY), VLCFLY((NX+1)*NY),&
852 REAL :: CXTOT((NX+1)*NY), CYTOT(NX*NY)
857 CALL strace (ient,
'W3XYP3')
865 WRITE(
ndse,*)
'SUBROUTINE W3XYP3 IS NOT YET ADAPTED FOR '// &
866 'TRIPOLE GRIDS. STOPPING NOW.'
873 ith = 1 + mod(isp-1,
nth)
878 cgx = cga *
ecos(ith)
879 cgy = cga *
esin(ith)
884 cgc = sqrt( cgx**2 + cgy**2 )
886 fgse = ( cga / max(0.001*cga,cgc) )**
pfmove
890 cxmin = minval(
cx(1:nsea) )
891 cxmax = maxval(
cx(1:nsea) )
892 cymin = minval(
cy(1:nsea) )
893 cymax = maxval(
cy(1:nsea) )
894 IF ( abs(cgx+cxmin) .GT. abs(cgx+cxmax) )
THEN
899 IF ( abs(cgy+cymin) .GT. abs(cgy+cymax) )
THEN
904 cxc = max( abs(cxmin) , abs(cxmax) )
905 cyc = max( abs(cymin) , abs(cymax) )
907 cxc = max( abs(cxmin-vgx) , abs(cxmax-vgx) )
908 cyc = max( abs(cymin-vgy) , abs(cymax-vgy) )
915 cgn = max( abs(cgx) , abs(cgy) , cxc, cyc, 0.001*cg0 )
917 ntloc = 1 + int(dtg/(
dtcfl*cg0/cgn))
918 dtloc = dtg / real(ntloc)
925 yfirst = mod(nint(dttst/dtg),2) .EQ. 0
928 WRITE (
ndst,9000) yfirst
943 mapstx(1:nx*ny) = mapsta(1:nx*ny)
946 mapstx(1-2*ny:0) = mapsta((nx-2)*ny+1:nx*ny)
947 mapstx(nx*ny+1:nx*ny+2*ny) = mapsta(1:2*ny)
950 mapstx(nx*ny+1:nx*ny+2*ny) = 0
955 fth = fgse *
wdth *
dth * dtloc
956 fcg = fgse *
wdcg * 0.5 * (
xfr-1./
xfr) * dtloc
961 fcg = fcg / real(ntloc)
962 fthx = - fth *
esin(ith)
963 fthy = fth *
ecos(ith)
964 fcgx = fcg *
ecos(ith)
965 fcgy = fcg *
esin(ith)
984 tmpx = fthx /
clats(isea)
986 dxcgn =
dpdx(iy,ix)*tmpx +
dpdy(iy,ix)*tmpy
987 dycgn =
dqdx(iy,ix)*tmpx +
dqdy(iy,ix)*tmpy
988 tmpx = fcgx /
clats(isea)
990 dxcgs =
dpdx(iy,ix)*tmpx +
dpdy(iy,ix)*tmpy
991 dycgs =
dqdx(iy,ix)*tmpx +
dqdy(iy,ix)*tmpy
995 dxcgc = dxcgn + dxcgs
996 dycgc = dycgn + dycgs
999 IF ( dxcgc .LT. 0. ) ixc = - ixc
1001 IF ( dycgc .LT. 0. ) iyc = - iyc
1003 iixy1(isea) = ixc + iyc
1004 IF ( abs(dxcgc) .GT. abs(dycgc) )
THEN
1006 rdi1(isea) = abs(dycgc/dxcgc)
1007 rdi2(isea) = abs(dxcgc)
1010 IF ( abs(dycgc) .GT. 1.e-5 )
THEN
1011 rdi1(isea) = abs(dxcgc/dycgc)
1015 rdi2(isea) = abs(dycgc)
1019 WRITE (
ndst,9012) isea, ith, iixy1(isea), iixy2(isea), &
1020 rdi1(isea), rdi2(isea)*
cg(ik,1)
1025 dxcgc = dxcgn - dxcgs
1026 dycgc = dycgn - dycgs
1029 IF ( dxcgc .LT. 0. ) ixc = - ixc
1031 IF ( dycgc .LT. 0. ) iyc = - iyc
1033 iixy3(isea) = ixc + iyc
1034 IF ( abs(dxcgc) .GT. abs(dycgc) )
THEN
1036 rdi3(isea) = abs(dycgc/dxcgc)
1037 rdi4(isea) = abs(dxcgc)
1040 IF ( abs(dycgc) .GT. 1.e-5 )
THEN
1041 rdi3(isea) = abs(dxcgc/dycgc)
1045 rdi4(isea) = abs(dycgc)
1049 WRITE (
ndst,9013) iixy3(isea), iixy4(isea), rdi3(isea), &
1067 WRITE (
ndst,9020) nsea
1076 vq(ixy) = vq(ixy) /
cg(ik,isea) *
clats(isea)
1077 cxtot(ixy) =
ecos(ith) *
cg(ik,isea) /
clats(isea)
1078 cytot(ixy) =
esin(ith) *
cg(ik,isea)
1080 cxtot(ixy) = cxtot(ixy) - vgx/
clats(isea)
1081 cytot(ixy) = cytot(ixy) - vgy
1084 IF ( .NOT.
flcur ) &
1086 vq(ixy), cxtot(ixy), cytot(ixy)
1105 cxtot(ixy) = cxtot(ixy) +
cx(isea)/
clats(isea)
1106 cytot(ixy) = cytot(ixy) +
cy(isea)
1109 vq(ixy), cxtot(ixy), cytot(ixy)
1127 cp = cxtot(ixy)*
dpdx(iy,ix) + cytot(ixy)*
dpdy(iy,ix)
1128 cq = cxtot(ixy)*
dqdx(iy,ix) + cytot(ixy)*
dqdy(iy,ix)
1129 vlcflx(ixy) = cp*dtrad
1130 vlcfly(ixy) = cq*dtrad
1155 rd2 = min( 1. , rdi2(isea) *
cg(ik,isea) )
1157 rd4 = min( 1. , rdi4(isea) *
cg(ik,isea) )
1158 vq(ixy ) = vq(ixy ) &
1159 + aq(ixy) * (3.-rd2-rd4)/3.
1160 vq(ixy+iixy1(isea)) = vq(ixy+iixy1(isea)) &
1161 + aq(ixy) * rd2*rd1/6.
1162 vq(ixy+iixy2(isea)) = vq(ixy+iixy2(isea)) &
1163 + aq(ixy) * (1.-rd1)*rd2/6.
1164 vq(ixy+iixy3(isea)) = vq(ixy+iixy3(isea)) &
1165 + aq(ixy) * rd4*rd3/6.
1166 vq(ixy+iixy4(isea)) = vq(ixy+iixy4(isea)) &
1167 + aq(ixy) * (1.-rd3)*rd4/6.
1168 vq(ixy-iixy1(isea)) = vq(ixy-iixy1(isea)) &
1169 + aq(ixy) * rd2*rd1/6.
1170 vq(ixy-iixy2(isea)) = vq(ixy-iixy2(isea)) &
1171 + aq(ixy) * (1.-rd1)*rd2/6.
1172 vq(ixy-iixy3(isea)) = vq(ixy-iixy3(isea)) &
1173 + aq(ixy) * rd4*rd3/6.
1174 vq(ixy-iixy4(isea)) = vq(ixy-iixy4(isea)) &
1175 + aq(ixy) * (1.-rd3)*rd4/6.
1185 IF ( mapsta(ixy) .LE. 0 ) cycle
1191 rd2 = min( 1. , rdi2(isea) *
cg(ik,isea) )
1192 rd4 = min( 1. , rdi4(isea) *
cg(ik,isea) )
1193 vq(ixy ) = vq(ixy ) &
1194 + aq(ixy) * (3.-rd2-rd4)/3.
1196 ixc = sign(ny,iixy1(isea))
1197 iyc = iixy1(isea) - ixc
1198 IF ( mapstx(ixy+iixy1(isea)) .GE. 1 .AND. &
1199 .NOT. ( mapstx(ixy+ixc).LE.0 .AND. &
1200 mapstx(ixy+iyc).LE.0 ) )
THEN
1201 vq(ixy+iixy1(isea)) = vq(ixy+iixy1(isea)) &
1202 + aq(ixy) * rd2*rd1/6.
1204 vq(ixy ) = vq(ixy ) &
1205 + aq(ixy) * rd2*rd1/6.
1207 IF ( mapstx(ixy-iixy1(isea)) .GE. 1 .AND. &
1208 .NOT. ( mapstx(ixy-ixc).LE.0 .AND. &
1209 mapstx(ixy-iyc).LE.0 ) )
THEN
1210 vq(ixy-iixy1(isea)) = vq(ixy-iixy1(isea)) &
1211 + aq(ixy) * rd2*rd1/6.
1213 vq(ixy ) = vq(ixy ) &
1214 + aq(ixy) * rd2*rd1/6.
1217 IF ( mapstx(ixy+iixy2(isea)) .GE. 1 )
THEN
1218 vq(ixy+iixy2(isea)) = vq(ixy+iixy2(isea)) &
1219 + aq(ixy) * (1.-rd1)*rd2/6.
1221 vq(ixy ) = vq(ixy ) &
1222 + aq(ixy) * (1.-rd1)*rd2/6.
1224 IF ( mapstx(ixy-iixy2(isea)) .GE. 1 )
THEN
1225 vq(ixy-iixy2(isea)) = vq(ixy-iixy2(isea)) &
1226 + aq(ixy) * (1.-rd1)*rd2/6.
1228 vq(ixy ) = vq(ixy ) &
1229 + aq(ixy) * (1.-rd1)*rd2/6.
1232 ixc = sign(ny,iixy3(isea))
1233 iyc = iixy3(isea) - ixc
1234 IF ( mapstx(ixy+iixy3(isea)) .GE. 1 .AND. &
1235 .NOT. ( mapstx(ixy+ixc).LE.0 .AND. &
1236 mapstx(ixy+iyc).LE.0 ) )
THEN
1237 vq(ixy+iixy3(isea)) = vq(ixy+iixy3(isea)) &
1238 + aq(ixy) * rd4*rd3/6.
1240 vq(ixy ) = vq(ixy ) &
1241 + aq(ixy) * rd4*rd3/6.
1243 IF ( mapstx(ixy-iixy3(isea)) .GE. 1 .AND. &
1244 .NOT. ( mapstx(ixy-ixc).LE.0 .AND. &
1245 mapstx(ixy-iyc).LE.0 ) )
THEN
1246 vq(ixy-iixy3(isea)) = vq(ixy-iixy3(isea)) &
1247 + aq(ixy) * rd4*rd3/6.
1249 vq(ixy ) = vq(ixy ) &
1250 + aq(ixy) * rd4*rd3/6.
1253 IF ( mapstx(ixy+iixy4(isea)) .GE. 1 )
THEN
1254 vq(ixy+iixy4(isea)) = vq(ixy+iixy4(isea)) &
1255 + aq(ixy) * (1.-rd3)*rd4/6.
1257 vq(ixy ) = vq(ixy ) &
1258 + aq(ixy) * (1.-rd3)*rd4/6.
1260 IF ( mapstx(ixy-iixy4(isea)) .GE. 1 )
THEN
1261 vq(ixy-iixy4(isea)) = vq(ixy-iixy4(isea)) &
1262 + aq(ixy) * (1.-rd3)*rd4/6.
1264 vq(ixy ) = vq(ixy ) &
1265 + aq(ixy) * (1.-rd3)*rd4/6.
1275 IF ( mapsta(ixy).EQ.2 ) vq(ixy) = aq(ixy)
1282 vq(iy ) = vq(iy ) + vq(nx*ny+iy)
1283 vq((nx-1)*ny+iy) = vq((nx-1)*ny+iy) + vq(iy-ny)
1299 vq(ixy)= vq(ixy) *
gsqrt(iy,ix)
1310 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1314 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1321 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1325 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1334 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1338 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1345 (nx, ny, nx, ny, vlcflx,
atrnx, vq, &
1349 (nx, ny, nx, ny, vlcfly,
atrny, vq, &
1366 vq(ixy)= vq(ixy) /
gsqrt(iy,ix)
1376 WRITE (
ndst,9030) nsea
1382 IF ( mapsta(ixy) .GT. 0 )
THEN
1384 vq(ixy) = max( 0. ,
cg(ik,isea)/
clats(isea)*vq(ixy) )
1391 REAL(NTLOC-ITLOC)/
REAL(NTLOC)
1393 IF ( rd2 .GT. 0.001 )
THEN
1394 rd2 = min(1.,max(0.,rd1/rd2))
1402 vq(ixy) = ( rd1*
bbpi0(isp,ibi) + rd2*
bbpin(isp,ibi) ) &
1407 yfirst = .NOT. yfirst
1413 WRITE (
ndst,9040) nsea
1422 IF ( mapsta(ixy) .GT. 0 )
THEN
1426 vq(ixy) = max( 0. ,
cg(ik,isea)/
clats(isea)*vq(ixy) )
1439 9000
FORMAT (
' TEST W3XYP3 : YFIRST :',l2)
1440 9001
FORMAT (
' TEST W3XYP3 : ISP, ITH, IK, COS-SIN :',i8,2i4,2f7.3)
1441 9010
FORMAT (
' TEST W3XYP3 : INITIALIZE ARRAYS')
1442 9020
FORMAT (
' TEST W3XYP3 : CALCULATING VCFL0X/Y (NSEA=',i6,
')')
1443 9022
FORMAT (
' TEST W3XYP3 : CALCULATING VCFLUX/Y')
1444 9030
FORMAT (
' TEST W3XYP3 : FIELD BEFORE BPI. (NSEA=',i6,
')')
1445 9040
FORMAT (
' TEST W3XYP3 : FIELD AFTER PROP. (NSEA=',i6,
')')
1448 9011
FORMAT (
' TEST W3XYP3 : PREPARE AVERAGING')
1449 9012
FORMAT (
' ',4i4,2f7.3)
1450 9013
FORMAT (
' ',8x,2i4,2f7.3)
1454 9021
FORMAT (1x,i6,2i5,e12.4,2f7.3)
1458 9031
FORMAT (1x,i6,2i5,e12.4)
1462 9041
FORMAT (1x,i6,2i5,e12.4)
1509 SUBROUTINE w3ktp3 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DW, &
1510 DDDX, DDDY, CX, CY, DCXDX, DCXDY, &
1511 DCYDX, DCYDY, DCDX, DCDY, VA, CFLTHMAX, CFLKMAX )
1646 INTEGER,
INTENT(IN) :: ISEA
1647 REAL,
INTENT(IN) :: FACTH, FACK, CTHG0, CG(0:NK+1), &
1648 WN(0:NK+1), DW, DDDX, DDDY, &
1649 CX, CY, DCXDX, DCXDY, DCYDX, DCYDY
1650 REAL,
INTENT(IN) :: DCDX(0:NK+1), DCDY(0:NK+1)
1651 REAL,
INTENT(INOUT) :: VA(NSPEC)
1652 REAL,
INTENT(OUT) :: CFLTHMAX, CFLKMAX
1657 INTEGER :: ITH, IK, ISP
1659 INTEGER,
SAVE :: IENT = 0
1661 REAL :: FDDMAX, FDG, FKD, FKD0, DCYX, &
1662 DCXXYY, DCXY, DCXX, DCXYYX, DCYY, &
1663 VELNOFILT, VELFAC, DEPTH
1664 REAL :: DSDD(0:NK+1), FRK(NK), FRG(NK), &
1665 FKC(NTH), VQ(-NK-1:NK2*(NTH+2)), &
1666 DB(NK2,NTH+1), DM(NK2,0:NTH+1), &
1667 VCFLT(NK2*(NTH+1)), CFLK(NK2,NTH)
1672 CALL strace (ient,
'W3KTP3')
1678 depth = max(
dmin, dw )
1680 IF (
flcth ) vcflt = 0.
1681 IF (
flck ) cflk = 0.
1687 WRITE (
ndst,9010) isea, depth, cx, cy, dddx, dddy, &
1688 dcxdx, dcxdy, dcydx, dcydy
1695 IF ( depth*wn(ik) .LT. 5. )
THEN
1696 dsdd(ik) = max( 0. , &
1697 cg(ik)*wn(ik)-0.5*
sig(ik) ) / depth
1714 vq(
mapth2(isp)) = va(isp)
1730 fddmax = max(fddmax,abs(
esin(ith)*dddx-
ecos(ith)*dddy))
1734 frk(ik) = facth * dsdd(ik) / wn(ik)
1739 frg(ik) = fdg * cg(ik)
1746 dcyx = facth * dcydx
1747 dcxxyy = facth * ( dcxdx - dcydy )
1748 dcxy = facth * dcxdy
1752 esc(isp)*dcxxyy -
ec2(isp)*dcxy
1767 fddmax = max( fddmax , abs( &
1771 frk(ik) = facth * cg(ik) * wn(ik) /
sig(ik)
1776 velnofilt = vcflt(
mapth2(isp)) &
1782 velnofilt = vcflt(
mapth2(isp)) &
1787 cflthmax = max(cflthmax, abs(velnofilt))
1793 vcflt(
mapth2(isp))=sign(min(abs(velnofilt),
ctmax),velnofilt)
1806 dcxyyx = - ( dcxdy + dcydx )
1808 fkd = ( cx*dddx + cy*dddy )
1811 fkc(ith) =
ec2(ith)*dcxx + &
1812 esc(ith)*dcxyyx +
es2(ith)*dcyy
1818 db(ik+1,1) =
dsip(ik) / cg(ik)
1819 dm(ik+1,1) = wn(ik+1) - wn(ik)
1821 db(nk+2,1) =
dsip(nk+1) / cg(nk+1)
1826 db(ik,ith) = db(ik,1)
1827 dm(ik,ith) = dm(ik,1)
1834 fkd0 = fkd / cg(ik) * dsdd(ik)
1835 velfac = fack/db(ik+1,1)
1840 velnofilt = ( fkd0 + wn(ik)*fkc(ith) ) * velfac
1841 cflkmax = max(cflkmax, abs(velnofilt))
1842 cflk(ik+1,ith) = sign(min(abs(velnofilt),
ctmax),velnofilt)/velfac
1851 IF ( mod(
itime,2) .EQ. 0 )
THEN
1854 vq(nk+2+(ith-1)*nk2) =
fachfa * vq(nk+1+(ith-1)*nk2)
1858 CALL w3qck2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1859 vq, .false., 1,
mapth2, nspec, &
1860 mapwn2, nspec-nth, nspec, nspec+nth, &
1865 CALL w3uno2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1866 vq, .false., 1,
mapth2, nspec, &
1867 mapwn2, nspec-nth, nspec, nspec+nth, &
1875 CALL w3qck1 ( nth, nk2, nth, nk2, vcflt, vq, .true., &
1881 CALL w3uno2r( nth, nk2, nth, nk2, vcflt, vq, .true., &
1891 CALL w3qck1 ( nth, nk2, nth, nk2, vcflt, vq, .true., &
1897 CALL w3uno2r( nth, nk2, nth, nk2, vcflt, vq, .true., &
1905 vq(nk+2+(ith-1)*nk2) =
fachfa * vq(nk+1+(ith-1)*nk2)
1909 CALL w3qck2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1910 vq, .false., 1,
mapth2, nspec, &
1911 mapwn2, nspec-nth, nspec, nspec+nth, &
1916 CALL w3uno2 ( nth, nk2, nth, nk2, cflk, fack, db, dm, &
1917 vq, .false., 1,
mapth2, nspec, &
1918 mapwn2, nspec-nth, nspec, nspec+nth, &
1928 va(isp) = vq(
mapth2(isp))
1936 9000
FORMAT (
' TEST W3KTP3 : FLCTH-K, FACTH-K, CTMAX :', &
1938 9010
FORMAT (
' TEST W3KTP3 : LOCAL DATA :',i7,f7.1,2f6.2,1x,6e10.2)
1939 9020
FORMAT (
' TEST W3KTP3 : IK, T, L, CG, DSDD : ')
1940 9021
FORMAT (
' ',i3,f7.2,f7.1,f7.2,e11.3)
1944 9040
FORMAT (/
' TEST W3KTP3 : NORMALIZED ',a/)
1945 9041
FORMAT (1x,60(1x,i2))
1946 9042
FORMAT (1x,60i3)
1970 SUBROUTINE w3cflxy ( ISEA, DTG, MAPSTA, MAPFS, CFLXYMAX, VGX, VGY )
2073 INTEGER,
INTENT(IN) :: ISEA, MAPSTA(NY*NX), MAPFS(NY*NX)
2074 REAL,
INTENT(IN) :: DTG, VGX, VGY
2075 REAL,
INTENT(INOUT) :: CFLXYMAX
2080 INTEGER :: ITH, IK, IXY, IP
2081 INTEGER :: IX, IY, IXC, IYC, IBI
2083 INTEGER,
SAVE :: IENT = 0
2085 REAL :: CG0, CGA, CGN, CGX, CGY, CXC, CYC, &
2086 CXMIN, CXMAX, CYMIN, CYMAX
2087 REAL :: CGC, FGSE = 1.
2088 REAL :: FTH, FTHX, FTHY, FCG, FCGX, FCGY
2093 REAL :: VLCFLX, VLCFLY
2094 REAL :: CXTOT, CYTOT
2099 CALL strace (ient,
'W3XYCFL')
2113 cytot =
esin(ith) *
cg(ik,isea)
2115 cxtot = cxtot - vgx/
clats(isea)
2121 cxtot = cxtot +
cx(isea)/
clats(isea)
2122 cytot = cytot +
cy(isea)
2125 cp = cxtot*
dpdx(iy,ix) + cytot*
dpdy(iy,ix)
2126 cq = cxtot*
dqdx(iy,ix) + cytot*
dqdy(iy,ix)
2129 cflxymax = max(vlcflx,vlcfly,cflxymax)