107 SUBROUTINE w3map1 ( MAPSTA )
183 INTEGER,
INTENT(IN) :: MAPSTA(NY*NX)
188 INTEGER :: IX, IY, IXY, ISP, IXNEXT
190 INTEGER,
SAVE :: IENT = 0
196 CALL strace (ient,
'W3MAP1')
211 IF ( mapsta( ixy ) .NE. 0 )
facvy(ixy) =
facvy(ixy) + 1.
213 IF ( mapsta(ixy+1) .NE. 0 )
facvy(ixy) =
facvy(ixy) + 1.
222 IF ( mapsta( ixy ) .NE. 0 )
facvy(ixy) =
facvy(ixy) + 1.
225 ixy = iy +(ixnext-1)*ny
226 IF ( mapsta( ixy ) .NE. 0 )
facvy(ixy) =
facvy(ixy) + 1.
234 IF ( mapsta( ixy ) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
235 IF ( mapsta(ixy+ny) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
244 IF ( mapsta( ixy ) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
246 IF ( mapsta(ixy+ny) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
254 IF ( mapsta(ixy) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
257 IF ( mapsta(iy ) .NE. 0 )
facvx(ixy) =
facvx(ixy) + 1.
302 SUBROUTINE w3xyp1 ( ISP, DTG, MAPSTA, FIELD, VGX, VGY )
450 INTEGER,
INTENT(IN) :: ISP, MAPSTA(NY*NX)
451 REAL,
INTENT(IN) :: DTG, VGX, VGY
452 REAL,
INTENT(INOUT) :: FIELD(1-NY:NY*(NX+2))
457 INTEGER :: IK, ITH, NTLOC, ITLOC, ISEA, IXY, &
458 IY0, IX, IY, JXN, JXP, JYN, JYP, &
464 INTEGER,
SAVE :: IENT = 0
466 REAL :: CG0, CGL, CGA, CC, CGN
467 REAL :: DTLOC,DTRAD, VCB
476 REAL :: CXTOT2D(NY,NX)
477 REAL :: CYTOT2D(NY,NX)
478 REAL :: FLD2D(NY+1,NX+1)
479 REAL :: VCX2D(NY,NX+1)
480 REAL :: VCY2D(NY+1,NX)
481 REAL :: VFLX2D(1:NY,0:NX)
482 REAL :: VFLY2D(NY,NX)
488 CALL strace (ient,
'W3XYP1')
495 ith = 1 + mod(isp-1,
nth)
502 cga = sqrt(maxval((cgl*
ecos(ith)+
cx(1:
nsea))**2 &
506 cga = sqrt(maxval((cgl*
ecos(ith)+
cx(1:
nsea)-vgx)**2 &
508 cc = sqrt(maxval((
cx(1:
nsea)-vgx)**2+(
cy(1:
nsea)-vgy)**2))
513 cga = sqrt((cgl*
ecos(ith)-vgx)**2+(cgl*
esin(ith)-vgy)**2)
518 cgn = 0.9999 * max( cga, cc, 0.001*cg0 )
520 ntloc = 1 + int(dtg/(
dtcfl*cg0/cgn))
521 dtloc = dtg / real(ntloc)
527 WRITE (
ndst,9000) ntloc
528 WRITE (
ndst,9001) isp, ith, ik
538 WRITE (
ndst,9010) itloc
568 fld2d(iy,ix) = field(ixy) /
cg(ik,isea) *
clats(isea)
570 cxtot2d(iy,ix) =
ecos(ith) *
cg(ik,isea) /
clats(isea)
571 cytot2d(iy,ix) =
esin(ith) *
cg(ik,isea)
573 cxtot2d(iy,ix) = cxtot2d(iy,ix) - vgx/
clats(isea)
574 cytot2d(iy,ix) = cytot2d(iy,ix) - vgy
578 WRITE (
ndst,9021) isea, ixy, fld2d(iy,ix), &
579 cxtot2d(iy,ix), cytot2d(iy,ix)
592 cxtot2d(iy,ix) = cxtot2d(iy,ix) +
cx(isea)/
clats(isea)
593 cytot2d(iy,ix) = cytot2d(iy,ix) +
cy(isea)
602 cp=cxtot2d(iy,ix)*
dpdx(iy,ix)+cytot2d(iy,ix)*
dpdy(iy,ix)
603 vcx2d(iy,ix) = cp*dtrad
613 cq=cxtot2d(iy,ix)*
dqdx(iy,ix)+cytot2d(iy,ix)*
dqdy(iy,ix)
614 vcy2d(iy,ix) = cq*dtrad
624 fld2d(1:ny,1:nx)=fld2d(1:ny,1:nx)*
gsqrt(1:ny,1:nx)
634 fld2d(iy,nx+1)=fld2d(iy,1)
635 vcx2d(iy,nx+1)=vcx2d(iy,1)
637 WRITE (
ndst,9025) iy, fld2d(iy,nx+1), vcx2d(iy,nx+1)
647 fld2d(ny+1,ix)=fld2d(ny,nx-ix+1)
648 vcy2d(ny+1,ix)=vcy2d(ny,nx-ix+1)
665 vcb =
facvx(ixy) * ( vcx2d(iy,ix) + vcx2d(iy,ix+1) )
666 vflx2d(iy,ix) = max( vcb , 0. ) * fld2d(iy,ix) &
667 + min( vcb , 0. ) * fld2d(iy,ix+1)
684 vflx2d(iy,0) = vflx2d(iy,nx)
686 WRITE (
ndst,9033) iy, vflx2d(iy,0)
698 vcb =
facvy(ixy) * ( vcy2d(iy,ix) + vcy2d(iy+1,ix) )
699 vfly2d(iy,ix) = max( vcb , 0. ) * fld2d(iy,ix) &
700 + min( vcb , 0. ) * fld2d(iy+1,ix)
720 vcb =
facvy(ixy) * ( vcy2d(iy,ix) - vcy2d(iy+1,ix) )
721 vfly2d(iy,ix) = max( vcb , 0. ) * fld2d(iy,ix) &
722 + min( vcb , 0. ) * fld2d(iy+1,ix)
748 aold = fld2d(iy,ix) *
cg(ik,isea) /
clats(isea)
751 IF (mapsta(ixy).EQ.1)
THEN
753 IF ( vflx2d(iy,ix-1) .GT. 0. )
THEN
758 IF ( vflx2d(iy,ix) .LT. 0. )
THEN
763 IF ( vfly2d(iy-1,ix) .GT. 0. )
THEN
768 IF ( vfly2d(iy,ix) .LT. 0. )
THEN
774 fld2d(iy,ix) = fld2d(iy,ix) &
775 +
atrnx(ixy,jxn) * vflx2d(iy,ix-1) &
776 -
atrnx(ixy,jxp) * vflx2d(iy,ix) &
777 +
atrny(ixy,jyn) * vfly2d(iy-1,ix) &
778 -
atrny(ixy,jyp) * vfly2d(iy,ix)
781 WRITE (
ndst,9041) isea, ixy, ixy-ny, ixy-1, &
782 vflx2d(iy,ix-1), vflx2d(iy,ix), vfly2d(iy-1,ix), &
783 vfly2d(iy,ix) ,
cg(ik,isea)/
clats(isea),aold, &
789 WRITE (
ndst,9042) isea, mapsta(ixy), aold,fld2d(iy,ix)
794 fld2d(iy,ix) =
cg(ik,isea) /
clats(isea) * fld2d(iy,ix)
804 fld2d(1:ny,1:nx)=fld2d(1:ny,1:nx)/
gsqrt(1:ny,1:nx)
810 REAL(NTLOC-ITLOC)/
REAL(NTLOC)
812 IF ( rd2 .GT. 0.001 )
THEN
813 rd2 = min(1.,max(0.,rd1/rd2))
822 fld2d(iy,ix) = rd1*
bbpi0(isp,ibi) + rd2*
bbpin(isp,ibi)
832 field(ixy) = fld2d(iy,ix)
844 9000
FORMAT (
' TEST W3XYP1 : NTLOC :',i4)
845 9001
FORMAT (
' TEST W3XYP1 : ISP, ITH, IK :',i8,2i4)
849 9010
FORMAT (
' TEST W3XYP1 : INIT. VFX-YL, ITLOC =',i3)
850 9020
FORMAT (
' TEST W3XYP1 : ISEA, IXY, FIELD, VCX, VCY')
851 9021
FORMAT (
' ',2i8,3e12.4)
852 9024
FORMAT (
' TEST W3XYP1 : GLOBAL CLOSURE: IY, FIELD, VCX ')
853 9025
FORMAT (
' ',i4,2e12.4)
857 9032
FORMAT (
' TEST W3XYP1 : CLOSE. : IY, VFLX')
858 9033
FORMAT (
' ',i4,e12.4)
862 9040
FORMAT (
' TEST W3XYP1 : PROPAGATION '/ &
863 ' ISEA, IXY(3), , FLX(2), FLY(2), FAC, A(2)')
864 9041
FORMAT (2x,4i5,1x,4e10.3,1x,e10.3,1x,2e10.3)
865 9042
FORMAT (2x,i5,
'( MAP = ',i2,
' )',56x,2e10.3)
897 SUBROUTINE w3ktp1 ( ISEA, FACTH, FACK, CTHG0, CG, WN, DEPTH, &
898 DDDX, DDDY, CX, CY, DCXDX, DCXDY, DCYDX, &
899 DCYDY, DCDX, DCDY, VA )
1012 INTEGER,
INTENT(IN) :: ISEA
1013 REAL,
INTENT(IN) :: FACTH, FACK, CTHG0, CG(0:NK+1), &
1014 WN(0:NK+1), DEPTH, DDDX, DDDY, &
1015 CX, CY, DCXDX, DCXDY, DCYDX, DCYDY
1016 REAL,
INTENT(IN) :: DCDX(0:NK+1), DCDY(0:NK+1)
1017 REAL,
INTENT(INOUT) :: VA(NSPEC)
1022 INTEGER :: ITH, IK, ISP, ITH0
1023 REAL :: FDDMAX, FDG, DCYX, DCXXYY, DCXY, &
1024 DCXX, DCXYYX, DCYY, FKD, FKD0, CTHB, &
1026 REAL :: VCTH(NSPEC), VCWN(1-NTH:NSPEC+NTH), &
1027 VAA(1-NTH:NSPEC+NTH), VFLTH(NSPEC), &
1028 VFLWN(1-NTH:NSPEC), DSDD(0:NK+1), &
1029 FRK(NK), FRG(NK), FKC(NTH), DWNI(NK)
1031 INTEGER,
SAVE :: IENT = 0
1032 CALL strace (ient,
'W3KTP1')
1039 WRITE (ndst,9001) isea, depth, cx, cy, &
1040 dddx, dddy, dcxdx, dcxdy, dcydx, dcydy
1047 IF ( depth*wn(ik) .LT. 5. )
THEN
1048 dsdd(ik) = max( 0. , &
1049 cg(ik)*wn(ik)-0.5*
sig(ik) ) / depth
1058 WRITE (ndst,9011) ik,
tpi/
sig(ik),
tpi/wn(ik), &
1079 fddmax = max( fddmax , abs( &
1080 esin(ith)*dddx -
ecos(ith)*dddy ) )
1084 frk(ik) = facth * dsdd(ik) / wn(ik)
1085 frk(ik) = frk(ik) / max( 1. , frk(ik)*fddmax/
ctmax )
1086 frg(ik) = fdg * cg(ik)
1092 vcth(isp) = frg(
mapwn(isp)) *
ecos(isp) &
1103 fddmax = max( fddmax , abs( &
1108 frk(ik) = facth * cg(ik) * wn(ik) /
sig(ik)
1109 frk(ik) = frk(ik) / max( 1. , frk(ik)*fddmax/
ctmax )
1110 frg(ik) = fdg * cg(ik)
1113 vcth(isp) = frg(
mapwn(isp)) *
ecos(isp) &
1123 dcyx = facth * dcydx
1124 dcxxyy = facth * ( dcxdx - dcydy )
1125 dcxy = facth * dcxdy
1128 vcth(isp) = vcth(isp) +
es2(isp)*dcyx &
1129 +
esc(isp)*dcxxyy -
ec2(isp)*dcxy
1140 dcxx = - fack * dcxdx
1141 dcxyyx = - fack * ( dcxdy + dcydx )
1142 dcyy = - fack * dcydy
1143 fkd = fack * ( cx*dddx + cy*dddy )
1146 fkc(ith) =
ec2(ith)*dcxx + &
1147 esc(ith)*dcxyyx +
es2(ith)*dcyy
1152 fkd0 = fkd / cg(ik) * dsdd(ik)
1155 vcwn(isp) = fkd0 + wn(ik)*fkc(ith)
1161 vaa(ith+nspec) =
fachfa * vaa(ith+ith0)
1166 dwni(ik) = cg(ik) /
dsip(ik)
1178 cthb = 0.5 * ( vcth(isp) + vcth(
is2(isp)) )
1179 vflth(isp) = max( cthb , 0. ) * vaa(isp) &
1180 + min( cthb , 0. ) * vaa(
is2(isp))
1186 va(isp) = va(isp) + vflth(
is0(isp)) - vflth(isp )
1198 cwnb = 0.5 * ( vcwn(isp) + vcwn(isp+nth) )
1199 vflwn(isp) = max( cwnb , 0. ) * vaa( isp ) &
1200 + min( cwnb , 0. ) * vaa(isp+nth)
1206 va(isp) = va(isp) + dwni(
mapwn(isp)) * &
1207 ( vflwn(isp-nth) - vflwn(isp) )
1217 9000
FORMAT (
' TEST W3KTP1 : FLCTH-K, FACTH-K, CTMAX :', &
1219 9001
FORMAT (
' TEST W3KTP1 : LOCAL DATA :',i7,f7.1,2f6.2,1x, &
1221 9010
FORMAT (
' TEST W3KTP1 : IK, T, L, CG, DSDD : ')
1222 9011
FORMAT (
' ',i3,f7.2,f7.1,f7.2,e11.3)