diff --git a/marchenko/demo/invisible/README b/marchenko/demo/invisible/README new file mode 100644 index 0000000000000000000000000000000000000000..c07026ae3ed3a12c3b0ffd4c3757929c75076c8d --- /dev/null +++ b/marchenko/demo/invisible/README @@ -0,0 +1,22 @@ +This is a special model with only (carefully selected) density contrasts. + +Description of files: +1) model.scr computes the model and the 'basis' shot of R => shot_rp.su +2) p4all.scr create from basis shot full Reflection response matrix => shotsdx4_rp.su (2.3 GB) +3) primaries.scr perform the Marchenko scheme to remove multiples from a shot record => pred_inv.su + +==> run model.scr to generate the data .su files: this will take 3-4 minutes. The files generate are: + - hom_cp.su, hom_ro.su + - invisible_cp.su invisible_ro.su + - shot_fd_rp.su + - shot_hom_fd_rp.su + - shot_rp.su + - wavefw.su + +- Compare the invisible_ro.su with the number of refectors that are visible in shot_fd_rp.su +The multiples overlap with the primary reflections is such a way that most primaries dissapear. + +The primaries.scr computes the primaries only from a selected shot record. => pred_inv.su + +suximage < pred_inv.su clip=1 + diff --git a/marchenko/demo/invisible/clean b/marchenko/demo/invisible/clean new file mode 100755 index 0000000000000000000000000000000000000000..3890128152ba3f4b11471dfdb5ddd1399840bc08 --- /dev/null +++ b/marchenko/demo/invisible/clean @@ -0,0 +1,4 @@ +#!/bin/bash + +rm *.su *.bin *.eps nep line* *.asci + diff --git a/marchenko/demo/invisible/marchenko.scr b/marchenko/demo/invisible/marchenko.scr new file mode 100755 index 0000000000000000000000000000000000000000..04e495d53dcb305750132b3fa55dc4606d444b46 --- /dev/null +++ b/marchenko/demo/invisible/marchenko.scr @@ -0,0 +1,42 @@ +#!/bin/bash -x + +export PATH=$HOME/src/OpenSource/bin:$PATH: +export OMP_NUM_THREADS=1 + +#mute all events below the first arrival to get the intial focusing field +fmute file_shot=iniFocus_rp.su file_out=p0plus.su above=-1 shift=-8 verbose=1 check=0 hw=8 + +#apply the Marchenko algorithm +marchenko file_shot=shotsdx5_rp.su file_tinv=p0plus.su nshots=901 verbose=2 \ + tap=0 niter=8 hw=8 shift=12 smooth=3 \ + file_green=pgreen.su file_gplus=Gplus0.su file_gmin=Gmin0.su \ + file_f1plus=f1plus0.su file_f1min=f1min0.su file_f2=f2.su + +exit + +#compare Green's funtions on Marhcenko and reference result +suwind key=gx min=0 max=0 itmax=511 < pgreen.su | sumax mode=abs outpar=nepmg +suwind key=gx min=0 max=0 itmax=511 < referenceP_rp.su | sumax mode=abs outpar=neprf +mg=`cat nepmg | awk '{print $1}'` +rf=`cat neprf | awk '{print $1}'` +value=${value/[eE][+][0]/*10^} +mg=${mg/[eE][+][0]/*10^} +rf=${rf/[eE][+][0]/*10^} +rm nep* +scale=$(echo "scale=3; ($rf)/($mg)" | bc -l) +echo $scale + +(suwind key=gx min=0 max=0 itmax=511 < pgreen.su | sugain scale=$scale; \ + suwind key=gx min=0 max=0 < referenceP_rp.su) | suxgraph + +#suwind itmax=511 < pgreen.su > pgreen512.su +#suop2 pgreen512.su referenceP_rp.su op=diff w2=1 w1=$scale > diffref.su + +# plot for convergence rate, the values in conv.txt are collected from the output of the marhenko program with verbose=2 +# marchenko: - iSyn 0: Ni at iteration 0 has energy 6.234892e+02; relative to N0 1.000000e+00 +#a2b < conv.txt | \ +#psgraph n=16 style=normal hbox=2 wbox=6 labelsize=10 \ +#label2='convergence rate' label1='iteration number' > convergence.eps + +# If guplot is installed: the same plot can also be produced by gnuplot this figure is used in the paper +#gnuplot conv.gnp diff --git a/marchenko/demo/invisible/model.scr b/marchenko/demo/invisible/model.scr new file mode 100755 index 0000000000000000000000000000000000000000..cbd96ebdb49565f710ebc13bbfdf7ac1a0befbf2 --- /dev/null +++ b/marchenko/demo/invisible/model.scr @@ -0,0 +1,83 @@ +#!/bin/bash + +#adjust this PATH to where the code is installed +export PATH=$HOME/src/OpenSource/bin:$PATH: + +dx=2.0 +dt=0.0005 + +#define gridded model for FD computations +makemod sizex=6000 sizez=1500 dx=$dx dz=$dx cp0=1000 ro0=1000 \ + orig=-3000,0 file_base=invisible.su verbose=2 \ + intt=def x=-3000,3000 z=100,100 poly=0 cp=1000 ro=2000 \ + intt=def x=-3000,3000 z=200,200 poly=0 cp=1000 ro=300 \ + intt=def x=-3000,3000 z=300,300 poly=0 cp=1000 ro=702.34 \ + intt=def x=-3000,3000 z=400,400 poly=0 cp=1000 ro=412.57 \ + intt=def x=-3000,3000 z=500,500 poly=0 cp=1000 ro=594.32 \ + intt=def x=-3000,3000 z=600,600 poly=0 cp=1000 ro=457.94 \ + intt=def x=-3000,3000 z=700,700 poly=0 cp=1000 ro=553.64 \ + intt=def x=-3000,3000 z=800,800 poly=0 cp=1000 ro=481.49 \ + intt=def x=-3000,3000 z=900,900 poly=0 cp=1000 ro=533.88 \ + intt=def x=-3000,3000 z=1000,1000 poly=0 cp=1000 ro=494.5 \ + intt=def x=-3000,3000 z=1100,1100 poly=0 cp=1000 ro=523.51 \ + intt=def x=-3000,3000 z=1200,1200 poly=0 cp=1000 ro=501.77 \ + +#define wavelet for modeling R +makewave w=fw fmin=0 flef=5 frig=80 fmax=100 dt=$dt file_out=wavefw.su nt=4096 t0=0.3 scale=0 scfft=1 + +export OMP_NUM_THREADS=8 + +#Model shot record in middle of model +fdelmodc \ + file_cp=invisible_cp.su ischeme=1 iorder=4 \ + file_den=invisible_ro.su \ + file_src=wavefw.su \ + file_rcv=shot_fd.su \ + src_type=7 \ + src_orient=1 \ + src_injectionrate=1 \ + rec_type_vz=0 \ + rec_type_p=1 \ + rec_int_vz=2 \ + dtrcv=0.004 \ + rec_delay=0.3 \ + verbose=2 \ + tmod=4.392 \ + dxrcv=4.0 \ + xrcv1=-3000 xrcv2=3000 \ + zrcv1=0 zrcv2=0 \ + xsrc=0 zsrc=0 \ + npml=101 \ + left=2 right=2 top=2 bottom=2 + +#define homogenoeus model to compute direct wave only +makemod sizex=6000 sizez=1200 dx=$dx dz=$dx cp0=1000 ro0=1000 \ + orig=-3000,0 file_base=hom.su verbose=2 + +#Model direct wave only in middle of model +fdelmodc \ + file_cp=hom_cp.su ischeme=1 iorder=4 \ + file_den=hom_ro.su \ + file_src=wavefw.su \ + file_rcv=shot_hom_fd.su \ + src_type=7 \ + src_orient=1 \ + src_injectionrate=1 \ + rec_type_vz=0 \ + rec_type_p=1 \ + rec_int_vz=2 \ + dtrcv=0.004 \ + rec_delay=0.3 \ + verbose=2 \ + tmod=4.392 \ + dxrcv=4.0 \ + xrcv1=-3000 xrcv2=3000 \ + zrcv1=0 zrcv2=0 \ + xsrc=0 zsrc=0 \ + npml=101 \ + left=2 right=2 top=2 bottom=2 + +#subtract direct wave from full model shot record: this defines R +sudiff shot_fd_rp.su shot_hom_fd_rp.su > shot_rp.su + + diff --git a/marchenko/demo/invisible/p4all.scr b/marchenko/demo/invisible/p4all.scr new file mode 100755 index 0000000000000000000000000000000000000000..8b1ecc310548c429d399ca277aec65f6a0e1a34d --- /dev/null +++ b/marchenko/demo/invisible/p4all.scr @@ -0,0 +1,31 @@ +#!/bin/bash -x + +export PATH=$HOME/src/OpenSource/bin:$PATH: + +# Generate the full R matrix for a fixed spread geometry. + +dxshot=4000 # with scalco factor of 1000 +ishot=0 +nshots=751 + +echo $1 + +rm shotsdx4_rp.su + +while (( ishot < nshots )) +do + + (( xsrc = -1500000 + ${ishot}*${dxshot} )) + (( tr1 = 751 - ${ishot} )) + (( tr2 = ${tr1} + 750 )) + echo xsrc=$xsrc tr1=$tr1 tr2=$tr2 + + (( ishot = $ishot + 1)) + + suwind < shot_rp.su key=tracl min=$tr1 max=$tr2 | \ + sushw key=sx,gx,fldr,trwf \ + a=$xsrc,-1500000,$ishot,751 b=0,$dxshot,0,0 j=0,751,0,0 | \ + suchw key1=offset key2=gx key3=sx c=-1 d=1000 >> shotsdx4_rp.su + +done + diff --git a/marchenko/demo/invisible/primaries.scr b/marchenko/demo/invisible/primaries.scr new file mode 100755 index 0000000000000000000000000000000000000000..26d4483628eadaaa521a6691576c7bcdb0f29344 --- /dev/null +++ b/marchenko/demo/invisible/primaries.scr @@ -0,0 +1,24 @@ +#!/bin/bash -x +#SBATCH -J marchenko_primaries +#SBATCH --cpus-per-task=40 +#SBATCH --ntasks=1 +#SBATCH --time=0:40:00 + +#cd $SLURM_SUBMIT_DIR + +export PATH=$HOME/src/OpenSource/bin:$PATH: +export OMP_NUM_THREADS=20 + +#shot record to remove internal multiples +select=376 + +makewave fp=25 dt=0.004 file_out=wave.su nt=1024 t0=0.0 scale=0 scfft=1 +suwind key=fldr min=$select max=$select < shotsdx4_rp.su > shot${select}.su +fconv file_in1=shot${select}.su file_in2=wave.su file_out=shotw.su + +marchenko_primaries file_shot=shotsdx4_rp.su ishot=$select \ + file_src=wave.su file_rr=pred_inv.su \ + verbose=2 istart=21 iend=751 fmax=90 \ + niterskip=1024 niter=21 shift=20 + + diff --git a/marchenko/demo/twoD/primaries.scr b/marchenko/demo/twoD/primaries.scr index f874ca3f566617f23927d4a8eac3c3cf5558118e..df8d79f795d9be175bbc633fa0477068958babe3 100755 --- a/marchenko/demo/twoD/primaries.scr +++ b/marchenko/demo/twoD/primaries.scr @@ -11,16 +11,20 @@ export PATH=$HOME/src/OpenSource/bin:$PATH: export OMP_NUM_THREADS=40 #export OMP_NUM_THREADS=1 +#shot record to remove internal multiples +select=301 + makewave fp=20 dt=0.004 file_out=wave.su nt=1024 t0=0.0 scale=0 scfft=1 -suwind key=sx min=0 max=0 < shots/refl_rp.su > shotsx0.su +suwind key=fldr min=$select max=$select < shots/refl_rp.su > shotsx0.su fconv file_in1=shotsx0.su file_in2=wave.su file_out=shotw.su -marchenko_primaries file_shot=shots/refl_rp.su ishot=301 file_src=wave.su \ +marchenko_primaries file_shot=shots/refl_rp.su ishot=$select file_src=wave.su \ nshots=601 verbose=2 istart=40 iend=1024 fmax=90 \ niter=22 niterskip=50 shift=20 file_rr=pred_rr.su T=0 #alternative use shotw as input, must first be multiplied by -1 (see theory) #sugain scale=-1 < shotw.su > pplus.su +# #marchenko_primaries file_shot=shots/refl_rp.su file_tinv=pplus.su \ # nshots=601 verbose=2 istart=40 iend=1024 fmax=90 \ # niter=22 niterskip=50 shift=20 file_rr=pred_rr.su T=0