1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| open(3,file='VP/rayden'//depth//'.xyz') ! open outputfile
dx=sei_xp(1)-sei_xp(2)
dy=sei_yp(1)-sei_yp(2)
do iy=1,sei_ny
do ix=1,sei_nx
c now determine 4 clases for ray distribution
qual=0
if ((ev(k,2)/ev(k,3)).gt.rtio1.and.(ev(k,1)/ev(k,3)).gt.rtio1) then
qual=1
goto 90
endif
if ((ev(k,2)/ev(k,3)).gt.rtio1.and.(ev(k,1)/ev(k,3)).lt.rtio1) then
qual=2
goto 90
endif
if ((ev(k,2)/ev(k,3)).gt.rtio2.and.(ev(k,1)/ev(k,3)).lt.rtio1) then
qual=3
goto 90
endif
if ((ev(k,2)/ev(k,3)).lt.rtio2.and.(ev(k,1)/ev(k,3)).lt.rtio2) then
qual=4
endif
90 continue
c calculate projection of vector onto xy-plane
if (qual.eq.2) then
do l=2,3 ! two main directions, print both on output
projx=sei_xp(ix)+(vec(l,k,1)*dx/2)
projy=sei_yp(iy)+(vec(l,k,2)*dy/2)
call km2deg(sei_xp(ix),sei_yp(iy),lat,lon)
call km2deg(projx,projy,projlat,projlon)
write(3,1050)qual,k,blwray(k),lon,lat,projlon,projlat,
& sei_xp(ix),sei_yp(iy),projx,projy
enddo
else
projx=sei_xp(ix)+(vec(3,k,1)*dx/2)
projy=sei_yp(iy)+(vec(3,k,2)*dy/2)
call km2deg(sei_xp(ix),sei_yp(iy),lat,lon)
call km2deg(projx,projy,projlat,projlon)
write(3,1050)qual,k,blwray(k),lon,lat,projlon,projlat,
& sei_xp(ix),sei_yp(iy),projx,projy
endif !qual.eq.2
do m=1,invlay ! if first block of layer skip nex
if (k.eq.inv_bloc(m).and.iy.eq.1) ix=ix+1
enddo
k=k+1 ! next block
1050 format(i2,1x,i4,1x,f8.2,1x,2(f8.4,1x),2(f8.4,1x),4(f7.2,1x))
enddo !ix
enddo !iy
close(3) |