incorporating random projections based inversion using Poisson Voronoi cells

This commit is contained in:
Hongjian
2020-04-16 20:47:03 -04:00
parent 82ebf4283d
commit 9aead30bf2
19 changed files with 3883 additions and 42 deletions

View File

@@ -8,10 +8,11 @@ import numpy as np
#start
nx=18
ny=18
nz=8
minvel=0.8
velgrad=0.5
dep1=np.array([0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5])
#dep1=np.array([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.3,1.5,1.8,2.1,2.5])
nz=len(dep1)
#end
vs1=np.zeros(nz)
mod=np.zeros((nz*ny,nx))
@@ -29,4 +30,4 @@ with open('MOD','w') as fp:
fp.write('%7.3f' % mod[k*ny+j,i])
fp.write('\n')
for i in range(nz):
print dep1[i],
print (dep1[i]),

69
scripts/plotcross.gmt Normal file
View File

@@ -0,0 +1,69 @@
#!/bin/csh
#-----------------------------------------------------------
# 2015-06-08 Hongjian Fang
# step 1: get velicoty along the track from each depth-layer
# step 2: combine tracks into 2D profile
#-----------------------------------------------------------
# change the following parameters according to your case
# start
set inp3D = DSurfTomo.inMeasure.dat
set pstart = 121.4/25.1 #start point for 2D profile
set pend = 121.55/25.1 #end point for 2D profile
set pstart2 = 121.5/25.0 #start point for 2D profile
set pend2 = 121.5/25.14 #end point for 2D profile
set ddint = 0.017/0.015 #grid interval
# over
set diInt = 0.5 #distance interval (km)
set J = -JX6.0i/-1.5i #size for plot
set cpt = slice.cpt
set ps = figcross.ps
gmt makecpt -Cjet -I -T0.5/2.5/0.1 > $cpt #velocity boundary
# start
set pro2d = tmp.profile.xzv
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
rm -fr $pro2d
foreach layer(`awk '{print $3}' $inp3D| uniq`)
set llayer = `echo $layer | awk '{printf "%04d",$1*1000}'`
awk '{if($3==j) print $1,$2,$4}' j=$layer $inp3D |gmt surface -Gtmp.grd $RMAP -I$ddint -T0
# be careful -I: grid spacing for x/y
gmt project -C$pstart -E$pend -G$diInt -Q > track.dat
gmt grdtrack track.dat -Gtmp.grd | awk '{print $3,j,$4}' j=$layer > tmp.D$llayer
cat tmp.D$llayer >> $pro2d
end
#
set RMAP = `gmt gmtinfo -C $pro2d | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt surface $pro2d -Gtmp.grd $RMAP -I$ddint -T0
#gmt grdfilter tmp.grd -D0 -Fg4 -Gtmpf.grd
gmt grdimage tmp.grd $J $RMAP -Bf2.5a5:'Distance (km)':/f0.5a1:'Depth (km)':SenW -C$cpt -K -Y5.2i> $ps
#gmt psscale -Cslice.cpt -Ba0.5f0.25:'Vs': -D2.5i/-0.7i/6.00/0.2h -O -K -P >> $ps
rm -fr tmp.D* tmp.grd tmp.profile.xzv track.dat
# start
set pro2d = tmp.profile.xzv
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
rm -fr $pro2d
foreach layer(`awk '{print $3}' $inp3D| uniq`)
set llayer = `echo $layer | awk '{printf "%04d",$1*1000}'`
awk '{if($3==j) print $1,$2,$4}' j=$layer $inp3D |gmt surface -Gtmp.grd $RMAP -I$ddint -T0
# be careful -I: grid spacing for x/y
gmt project -C$pstart2 -E$pend2 -G$diInt -Q > track.dat
gmt grdtrack track.dat -Gtmp.grd | awk '{print $3,j,$4}' j=$layer > tmp.D$llayer
cat tmp.D$llayer >> $pro2d
end
#
set RMAP = `gmt gmtinfo -C $pro2d | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt surface $pro2d -Gtmp.grd $RMAP -I$ddint -T0
#gmt grdfilter tmp.grd -D0 -Fg4 -Gtmpf.grd
gmt grdimage tmp.grd $J $RMAP -Bf2.5a5:'Distance (km)':/f0.5a1:'Depth (km)':SenW -C$cpt -K -O -Y-2.0i>> $ps
gmt psscale -Cslice.cpt -Ba0.5f0.25:'Vs': -D2.5i/-0.7i/6.00/0.2h -O -P >> $ps
rm -fr tmp.D* tmp.grd tmp.profile.xzv track.dat
p
ps2pdf $ps

48
scripts/plotslice_std.gmt Normal file
View File

@@ -0,0 +1,48 @@
#!/bin/csh
#-----------------------------------------------------------
# 2015-06-08 Hongjian Fang
# how to run:
# ./plotslice.gmt ModelFile depth1 depth2 depth3 depth4, e.g.
# csh plotslice.gmt SurfTomo.in.tvMeasure.dat 0.2 0.4 0.8 1.4
#-----------------------------------------------------------
gmt set FONT_ANNOT_PRIMARY 12
gmt set FONT_LABEL 12
#gmt set FRAME_WIDTH=0.1c
#gmt set LABEL_OFFSET=0.1c
#gmt set LABEL_FONT_SIZE=5p
#gmt set TICK_LENGTH=0.1c
#gmt set TICK_PEN=0.3p
set inp3D = $1
set ps = horizVsnew.inv_std.ps
set J = -JM2i #size for plot
set cpt = slice.cpt
# start
gmt makecpt -Cgray -D -I -T0.0/0.5/0.05 > $cpt #velocity boundary
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt psbasemap $RMAP $J -Ba0.1f0.05Wsen -P -K -Y5i >$ps
awk '{if($3==depth1) print $1,$2,$4}' depth1=$2 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
rm -rf tmp.grd
#gmt psscale -Cslice.cpt -Ba0.1f0.05:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T0.8/1.8/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05nwse -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$3 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
#gmt psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T1.1/2.0/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05WneS -P -K -O -Y-2.3i -X-2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$4 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
#gmt psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T1.3/2.4/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05Swne -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$5 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
gmt psscale -Cslice.cpt -Ba0.2f0.1:'Vs std (km/s)': -D1.0i/-0.35i/3.00/0.2h -O -P >> $ps