From e1577b31420ead34d72008ed874f1b17579abf1d Mon Sep 17 00:00:00 2001
From: Jan Thorbecke <janth@xs4all.nl>
Date: Thu, 2 Feb 2017 08:12:42 +0100
Subject: [PATCH] fine tuning

---
 marchenko/demo/oneD/epsBackprop.scr      | 16 ++++++++++++
 marchenko/demo/oneD/epsMarchenkoIter.scr | 31 +++++++++++++++---------
 marchenko/demo/oneD/epsModel.scr         |  2 +-
 marchenko/demo/oneD/marchenko.scr        |  4 +--
 marchenko/marchenko.c                    |  8 ++++--
 5 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/marchenko/demo/oneD/epsBackprop.scr b/marchenko/demo/oneD/epsBackprop.scr
index a4b4f17..dff9ca0 100755
--- a/marchenko/demo/oneD/epsBackprop.scr
+++ b/marchenko/demo/oneD/epsBackprop.scr
@@ -2,6 +2,22 @@
 
 export PATH=$HOME/src/OpenSource/bin/:$PATH:
 
+# Add interface line to postscript file of model 
+cat << EOF1 > line1
+400 -2500
+400 2500
+EOF1
+
+cat << EOF2 > line2
+700 -2500
+700 2500
+EOF2
+
+cat << EOF3 > line3
+1100 -2500
+1100 2500
+EOF3
+
 dx=2.5
 dt=0.0005
 
diff --git a/marchenko/demo/oneD/epsMarchenkoIter.scr b/marchenko/demo/oneD/epsMarchenkoIter.scr
index 0c795ed..919d883 100755
--- a/marchenko/demo/oneD/epsMarchenkoIter.scr
+++ b/marchenko/demo/oneD/epsMarchenkoIter.scr
@@ -34,7 +34,13 @@ fmute file_shot=iniFocus_rp.su file_out=nep.su above=0 shift=8 verbose=1 check=1
 #set same clip factor for iteration updates
 file=iter_001.su
 sumax < $file mode=abs outpar=nep
-clipiter=`cat nep | awk '{print $1/6}'`
+clipiter=`cat nep | awk '{print $1/8}'`
+
+#set same clip factor for Green;s function updates
+file=pgreen_004.su
+file_base=${file%.su}
+sumax < $file mode=abs outpar=nep
+clipgreen=`cat nep | awk '{print $1/4}'`
 
 #iterations
 for (( iter=1; iter<=4; iter+=1 ))
@@ -57,7 +63,7 @@ supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 < $file \
 file=f1min_$piter.su
 file_base=${file%.su}
 sumax < $file mode=abs outpar=nep
-clipref=`cat nep | awk '{print $1/4}'`
+clipref=`cat nep | awk '{print $1/5}'`
 supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 < $file\
     n1tic=2 d2=5 x1beg=-1.504 x1end=1.5 d1num=0.4 \
     f2=-2250 f2num=-2000 d2num=1000 clip=$clipref > $file_base.eps
@@ -65,7 +71,7 @@ supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 < $file\
 file=f1plus_$piter.su
 file_base=${file%.su}
 sumax < $file mode=abs outpar=nep
-clipref=`cat nep | awk '{print $1/4}'`
+clipref=`cat nep | awk '{print $1/5}'`
 supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 < $file\
     n1tic=2 d2=5 x1beg=-1.504 x1end=1.5 d1num=0.4 \
     f2=-2250 f2num=-2000 d2num=1000 clip=$clipref > $file_base.eps
@@ -73,28 +79,29 @@ supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 < $file\
 file=pgreen_$piter.su
 file_base=${file%.su}
 sumax < $file mode=abs outpar=nep
-clipref=`cat nep | awk '{print $1/3}'`
+clipref=`cat nep | awk '{print $1/4}'`
 suwind key=gx min=-2250000 max=2250000 < $file | \
 	supsimage hbox=6 wbox=4 labelsize=10 linewidth=0.0 \
 	n1tic=2 d2=5 f1=0.0 x1beg=0 x1end=2.004 d1num=0.4 \
-	f2=-2250 f2num=-2000 d2num=1000 clip=$clipref > $file_base.eps
+	f2=-2250 f2num=-2000 d2num=1000 clip=$clipgreen > $file_base.eps
 
 #compare Green's funtions on Marhcenko and reference result
 suwind key=gx min=0 max=0 itmax=511 < pgreen_$piter.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}'`
+mg1=`cat nepmg | awk '{print $1}'`
+rf1=`cat neprf | awk '{print $1}'`
 value=${value/[eE][+][0]/*10^}
-mg=${mg/[eE][+][0]/*10^}
-rf=${rf/[eE][+][0]/*10^}
+mg=${mg1/[eE][+][0]/*10^}
+rf=${rf1/[eE][+][0]/*10^}
 rm nep*
 scale=$(echo "scale=3; ($rf)/($mg)" | bc -l)
-#echo $scale
+scale=2.0
+echo $scale
 
 (suwind key=gx min=0 max=0 itmax=511 < pgreen_$piter.su | sugain scale=$scale;  \
 	suwind key=gx min=0 max=0 < referenceP_rp.su) | \
-	supsgraph hbox=6 wbox=1 labelsize=10 linegray=0.3,0.0 style=seismic \
-	lineon=3.5,1.0 lineoff=1.3,0.0 > compare_$piter.eps 
+	supsgraph hbox=6 wbox=2 labelsize=10 linegray=0.3,0.0 style=seismic \
+	lineon=3.5,1.0 x2beg=-$rf1 x2end=$rf1 lineoff=1.3,0.0 > compare_$piter.eps 
 
 done
  
diff --git a/marchenko/demo/oneD/epsModel.scr b/marchenko/demo/oneD/epsModel.scr
index 6a31b12..dbe3040 100755
--- a/marchenko/demo/oneD/epsModel.scr
+++ b/marchenko/demo/oneD/epsModel.scr
@@ -2,7 +2,7 @@
 
 export PATH=$HOME/src/OpenSource/bin/:$PATH:
 
-#Postscript file of model and shot record at xsrc=0 
+# Add interface line to postscript file of model 
 cat << EOF1 > line1
 400 -2500
 400 2500
diff --git a/marchenko/demo/oneD/marchenko.scr b/marchenko/demo/oneD/marchenko.scr
index 16502d5..d17b5f4 100755
--- a/marchenko/demo/oneD/marchenko.scr
+++ b/marchenko/demo/oneD/marchenko.scr
@@ -4,11 +4,11 @@ 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=4
+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=1 \
-	tap=0 ntap=41 niter=8 hw=12 shift=8 smooth=5 \
+	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 
 
diff --git a/marchenko/marchenko.c b/marchenko/marchenko.c
index dc31009..bc36df9 100644
--- a/marchenko/marchenko.c
+++ b/marchenko/marchenko.c
@@ -100,7 +100,7 @@ int main (int argc, char **argv)
     int     iter, niter, tracf, *muteW;
     int     hw, smooth, above, shift, *ixpossyn, npossyn, ix;
     float   fmin, fmax, *tapersh, *tapersy, fxf, dxf, fxs2, *xsrc, *xrcv, *zsyn, *zsrc, *xrcvsyn;
-    double  t0, t1, t2, t3, tsyn, tread, tfft, tcopy;
+    double  t0, t1, t2, t3, tsyn, tread, tfft, tcopy, energyNi;
     float   d1, d2, f1, f2, fxs, ft, fx, *xsyn, dxsrc;
     float   *green, *f2p, *pmin, *G_d, dt, dx, dxs, scl, mem;
     float   *f1plus, *f1min, *iRN, *Ni, *trace, *Gmin, *Gplus;
@@ -279,7 +279,7 @@ int main (int argc, char **argv)
 
     /* check consistency of header values */
     fxf = xsrc[0];
-    if (nx > 1) dxf = (xrcv[0] - xrcv[nx-1])/(float)(nx-1);
+    if (nx > 1) dxf = (xrcv[nx-1] - xrcv[0])/(float)(nx-1);
     else dxf = d2;
     if (NINT(dx*1e3) != NINT(fabs(dxf)*1e3)) {
         vmess("dx in hdr.d1 (%.3f) and hdr.gx (%.3f) not equal",dx, dxf);
@@ -405,11 +405,15 @@ int main (int argc, char **argv)
                 j = 0;
                 Ni[l*nxs*nts+i*nts+j]    = -iRN[l*nxs*nts+i*nts+j];
                 pmin[l*nxs*nts+i*nts+j] += iRN[l*nxs*nts+i*nts+j];
+                energyNi = sqrt(iRN[l*nxs*nts+i*nts+j]*iRN[l*nxs*nts+i*nts+j]);
                 for (j = 1; j < nts; j++) {
                     Ni[l*nxs*nts+i*nts+j]    = -iRN[l*nxs*nts+i*nts+nts-j];
                     pmin[l*nxs*nts+i*nts+j] += iRN[l*nxs*nts+i*nts+j];
+                    energyNi = sqrt(iRN[l*nxs*nts+i*nts+j]*iRN[l*nxs*nts+i*nts+j]);
                 }
             }
+            if (verbose >=2) vmess("    - operator %d at iteration %d has energy %e", l, iter, energyNi);
+
         }
 
         /* apply mute window based on times of direct arrival (in muteW) */
-- 
GitLab