From 2ecb1b4a95a29556a613db783710b5b39c8eed09 Mon Sep 17 00:00:00 2001
From: "joeri.brackenhoff" <joeri.brackenhoff@login0.ogun.local>
Date: Mon, 11 Feb 2019 10:28:13 -0300
Subject: [PATCH] all

---
 marchenko3D/Makefile                |   2 +-
 marchenko3D/demo/oneD/marchenko.scr |   8 +-
 marchenko3D/demo/oneD/p5all.scr     |  13 +-
 marchenko3D/marchenko3D.c           | 112 ++--
 marchenko3D/readTinvData3D.c        |  17 +-
 marchenko3D/synthesis3D.c           |  19 +-
 utils/Makefile                      |  25 +-
 utils/getrecpos3D.c                 | 135 +++++
 utils/green3D                       | Bin 0 -> 140784 bytes
 utils/green3D.c                     | 761 ++++++++++++++++++++++++++++
 10 files changed, 1013 insertions(+), 79 deletions(-)
 create mode 100644 utils/getrecpos3D.c
 create mode 100755 utils/green3D
 create mode 100644 utils/green3D.c

diff --git a/marchenko3D/Makefile b/marchenko3D/Makefile
index 491a1c0..6a8acbd 100644
--- a/marchenko3D/Makefile
+++ b/marchenko3D/Makefile
@@ -87,7 +87,7 @@ OBJJ3	= $(SRCJ3:%.c=%.o)
 fmute3D:	$(OBJJ3) 
 	$(CC) $(LDFLAGS) $(OPTC) $(CFLAGS) -o fmute3D $(OBJJ3) $(LIBS)
 
-install: fmute marchenko test fmute3D
+install: fmute marchenko marchenko3D fmute3D
 	cp fmute $B
 	cp marchenko $B
 	cp marchenko3D $B
diff --git a/marchenko3D/demo/oneD/marchenko.scr b/marchenko3D/demo/oneD/marchenko.scr
index 6fd6cac..8538681 100755
--- a/marchenko3D/demo/oneD/marchenko.scr
+++ b/marchenko3D/demo/oneD/marchenko.scr
@@ -7,10 +7,10 @@ export OMP_NUM_THREADS=1
 fmute file_shot=iniFocus_rp.su file_out=p0plus.su above=-1 shift=-8 verbose=1 check=0 hw=8
 
 #apply the Marchenko algorithm
-~/OpenSource/marchenko3D/test file_shot=shotsy.su file_tinv=p0y.su nshots=901 verbose=10 \
-	tap=0 niter=8 hw=8 shift=12 smooth=3 \
-	file_green=pgreen2.su file_gplus=Gplus02.su file_gmin=Gmin02.su  \
-	file_f1plus=f1plus02.su file_f1min=f1min02.su file_f2=f22.su 
+marchenko file_shot=shotsdx5_rp.su file_tinv=p0plus.su nshots=901 verbose=2 \
+	tap=0 niter=8 hw=8 shift=12 smooth=3 scale=4 \
+	file_green=pgreen3.su file_gplus=Gplus03.su file_gmin=Gmin03.su  \
+	file_f1plus=f1plus03.su file_f1min=f1min03.su file_f2=f23.su 
 
 exit
 
diff --git a/marchenko3D/demo/oneD/p5all.scr b/marchenko3D/demo/oneD/p5all.scr
index 333be55..c749523 100755
--- a/marchenko3D/demo/oneD/p5all.scr
+++ b/marchenko3D/demo/oneD/p5all.scr
@@ -4,9 +4,9 @@ export PATH=$HOME/src/OpenSource/bin:$PATH:
 
 # Generate the full R matrix for a fixed spread geometry.
 
-dxshot=5000 # with scalco factor of 1000
+dxshot=10000 # with scalco factor of 1000
 ishot=0
-nshots=901
+nshots=451
 
 echo $1
 
@@ -16,16 +16,15 @@ while (( ishot < nshots ))
 do
 
 	(( xsrc = -2250000 + ${ishot}*${dxshot} ))
-	(( tr1 = 901 - ${ishot} ))
-	(( tr2 = ${tr1} + 900 ))
+	(( tr1 = $nshots - ${ishot} ))
+	(( tr2 = ${tr1} + $nshots - 1 ))
 	echo xsrc=$xsrc tr1=$tr1 tr2=$tr2
 
 	(( ishot = $ishot + 1))
 
-	suwind < shot5_rp.su key=tracl min=$tr1 max=$tr2 | \
+	suwind < shot_kxky.su key=tracl min=$tr1 max=$tr2 | \
 	sushw key=sx,gx,fldr,trwf \
-	a=$xsrc,-2250000,$ishot,901 b=0,5000,0,0 j=0,901,0,0 | \
+	a=$xsrc,-2250000,$ishot,$nshots b=0,$dxshot,0,0 j=0,$nshots,0,0 | \
 	suchw key1=offset key2=gx key3=sx c=-1 d=1000 >> shotsdx5_rp.su
 
 done
-
diff --git a/marchenko3D/marchenko3D.c b/marchenko3D/marchenko3D.c
index 7323516..983aa15 100644
--- a/marchenko3D/marchenko3D.c
+++ b/marchenko3D/marchenko3D.c
@@ -24,7 +24,7 @@ void omp_set_num_threads(int num_threads);
 #ifndef MIN
 #define MIN(x,y) ((x) < (y) ? (x) : (y))
 #endif
-#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))
+#define NINT(x) ((long)((x)>0.0?(x)+0.5:(x)-0.5))
 
 
 
@@ -34,36 +34,42 @@ typedef struct _complexStruct { /* complex number */
 } complex;
 #endif/* complex */
 
-int readShotData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float *ysrc, float *zsrc, int *xnx, complex *cdata, int nw, int nw_low, int nshots, int nx, int ny, int ntfft, int mode, float scale, int verbose);
-int readTinvData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float *ysrc, float *zsrc, int *xnx, int Nfoc, int nx, int ny, int ntfft, int mode, int *maxval, float *tinv, int hw, int verbose);
-int writeDataIter(char *file_iter, float *data, segy *hdrs, int n1, int n2, float d2, float f2, int n2out, int Nfoc, float *xsyn,
-float *zsyn, int *ixpos, int npos, int iter);
-int unique_elements(float *arr, int len);
+long readShotData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float *ysrc, float *zsrc, long *xnx, complex *cdata,
+    long nw, long nw_low, long nshots, long nx, long ny, long ntfft, long mode, float scale, long verbose);
+long readTinvData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float *ysrc, float *zsrc,
+    long *xnx, long Nfoc, long nx, long ny, long ntfft, long mode, long *maxval, float *tinv, long hw, long verbose);
+// int writeDataIter(char *file_iter, float *data, segy *hdrs, int n1, int n2, float d2, float f2, int n2out, int Nfoc, float *xsyn,
+//     float *zsyn, int *ixpos, int npos, int iter);
+long unique_elements(float *arr, long len);
 
 void name_ext(char *filename, char *extension);
 
-void applyMute(float *data, int *mute, int smooth, int above, int Nfoc, int nxs, int nt, int *xrcvsyn, int npos, int shift);
+void applyMute3D(float *data, long *mute, long smooth, long above, long Nfoc, long nxs, long nt, long *xrcvsyn, long npos, long shift);
 
-int getFileInfo3D(char *filename, int *n1, int *n2, int *n3, int *ngath, float *d1, float *d2, float *d3, float *f1, float *f2, float *f3, float *sclsxgxsygy, int *nxm);
-int readData(FILE *fp, float *data, segy *hdrs, int n1);
-int writeData(FILE *fp, float *data, segy *hdrs, int n1, int n2);
-int disp_fileinfo3D(char *file, int n1, int n2, int n3, float f1, float f2, float f3, float d1, float d2, float d3, segy *hdrs);
+long getFileInfo3D(char *filename, long *n1, long *n2, long *n3, long *ngath, float *d1, float *d2, float *d3, float *f1, float *f2, float *f3,
+    float *sclsxgxsygy, long *nxm);
+long readData3D(FILE *fp, float *data, segy *hdrs, long n1);
+long writeData3D(FILE *fp, float *data, segy *hdrs, long n1, long n2);
+long disp_fileinfo3D(char *file, long n1, long n2, long n3, float f1, float f2, float f3, float d1, float d2, float d3, segy *hdrs);
 double wallclock_time(void);
 
-void synthesisPositions3D(int nx, int ny, int nxs, int nys, int Nfoc, float *xrcv, float *yrcv, float *xsrc, float *ysrc, int *xnx, float fxse, float fyse, float fxsb, float fysb, float dxs, float dys, int nshots, int nxsrc, int nysrc, int *ixpos, int *npos, int reci, int verbose);
-void synthesis3D(complex *Refl, complex *Fop, float *Top, float *iRN, int nx, int ny, int nt, int nxs, int nys, int nts, float dt, float *xsyn, float *ysyn, 
-int Nfoc, float *xrcv, float *yrcv, float *xsrc, float *ysrc, int *xnx, float fxse, float fxsb, float fyse, float fysb, float dxs, float dys, float dxsrc, 
-float dysrc, float dx, float dy, int ntfft, int nw, int nw_low, int nw_high,  int mode, int reci, int nshots, int nxsrc, int nysrc, 
-int *ixpos, int npos, double *tfft, int *isxcount, int *reci_xsrc,  int *reci_xrcv, float *ixmask, int verbose);
+void synthesisPositions3D(long nx, long ny, long nxs, long nys, long Nfoc, float *xrcv, float *yrcv, float *xsrc, float *ysrc,
+    long *xnx, float fxse, float fyse, float fxsb, float fysb, float dxs, float dys, long nshots, long nxsrc, long nysrc,
+    long *ixpos, long *npos, long reci, long verbose);
+void synthesis3D(complex *Refl, complex *Fop, float *Top, float *iRN, long nx, long ny, long nt, long nxs, long nys, long nts, float dt,
+    float *xsyn, float *ysyn, long Nfoc, float *xrcv, float *yrcv, float *xsrc, float *ysrc, long *xnx,
+    float fxse, float fxsb, float fyse, float fysb, float dxs, float dys, float dxsrc, float dysrc, 
+    float dx, float dy, long ntfft, long nw, long nw_low, long nw_high,  long mode, long reci, long nshots, long nxsrc, long nysrc, 
+    long *ixpos, long npos, double *tfft, long *isxcount, long *reci_xsrc,  long *reci_xrcv, float *ixmask, long verbose);
 
-int linearsearch(int *array, size_t N, int value);
+long linearsearch(long *array, size_t N, long value);
 
 /*********************** self documentation **********************/
 char *sdoc[] = {
 " ",
-" MARCHENKO - Iterative Green's function and focusing functions retrieval",
+" MARCHENKO3D - Iterative Green's function and focusing functions retrieval in 3D",
 " ",
-" marchenko file_tinv= file_shot= [optional parameters]",
+" marchenko3D file_tinv= file_shot= [optional parameters]",
 " ",
 " Required parameters: ",
 " ",
@@ -102,7 +108,8 @@ char *sdoc[] = {
 "   verbose=0 ................ silent option; >0 displays info",
 " ",
 " ",
-" author  : Jan Thorbecke : 2016 (j.w.thorbecke@tudelft.nl)",
+" author  : Jan Thorbecke     : 2016 (j.w.thorbecke@tudelft.nl)",
+" author  : Joeri Brackenhoff : 2019 (j.a.brackenhoff@tudelft.nl)",
 " ",
 NULL};
 /**************** end self doc ***********************************/
@@ -111,13 +118,13 @@ int main (int argc, char **argv)
 {
     FILE    *fp_out, *fp_f1plus, *fp_f1min;
     FILE    *fp_gmin, *fp_gplus, *fp_f2, *fp_pmin;
-    int     i, j, l, k, ret, nshots, nxshot, nyshot, Nfoc, nt, nx, ny, nts, nxs, nys, ngath;
-    int     size, n1, n2, n3, ntap, tap, dxi, dyi, ntraces, pad;
-    int     nw, nw_low, nw_high, nfreq, *xnx, *xnxsyn;
-    int     reci, countmin, mode, n2out, n3out, verbose, ntfft;
-    int     iter, niter, tracf, *muteW;
-    int     hw, smooth, above, shift, *ixpos, npos, ix;
-    int     nshots_r, *isxcount, *reci_xsrc, *reci_xrcv;
+    long    i, j, l, k, ret, nshots, nxshot, nyshot, Nfoc, nt, nx, ny, nts, nxs, nys, ngath;
+    long    size, n1, n2, n3, ntap, tap, dxi, dyi, ntraces, pad;
+    long    nw, nw_low, nw_high, nfreq, *xnx, *xnxsyn;
+    long    reci, countmin, mode, n2out, n3out, verbose, ntfft;
+    long    iter, niter, tracf, *muteW;
+    long    hw, smooth, above, shift, *ixpos, npos, ix;
+    long    nshots_r, *isxcount, *reci_xsrc, *reci_xrcv;
     float   fmin, fmax, *tapersh, *tapersy, fxf, fyf, dxf, dyf, *xsrc, *ysrc, *xrcv, *yrcv, *zsyn, *zsrc, *xrcvsyn, *yrcvsyn;
     double  t0, t1, t2, t3, tsyn, tread, tfft, tcopy, energyNi, energyN0;
     float   d1, d2, d3, f1, f2, f3, fxsb, fxse, fysb, fyse, ft, fx, fy, *xsyn, *ysyn, dxsrc, dysrc;
@@ -146,7 +153,7 @@ int main (int argc, char **argv)
     if (!getparstring("file_f2", &file_f2)) file_f2 = NULL;
     if (!getparstring("file_pmin", &file_pmin)) file_pmin = NULL;
     if (!getparstring("file_iter", &file_iter)) file_iter = NULL;
-    if (!getparint("verbose", &verbose)) verbose = 0;
+    if (!getparlong("verbose", &verbose)) verbose = 0;
     if (file_tinv == NULL && file_shot == NULL) 
         verr("file_tinv and file_shot cannot be both input pipe");
     if (!getparstring("file_green", &file_green)) {
@@ -155,20 +162,20 @@ int main (int argc, char **argv)
     }
     if (!getparfloat("fmin", &fmin)) fmin = 0.0;
     if (!getparfloat("fmax", &fmax)) fmax = 70.0;
-    if (!getparint("reci", &reci)) reci = 0;
+    if (!getparlong("reci", &reci)) reci = 0;
     if (!getparfloat("scale", &scale)) scale = 2.0;
     if (!getparfloat("tsq", &tsq)) tsq = 0.0;
     if (!getparfloat("Q", &Q)) Q = 0.0;
     if (!getparfloat("f0", &f0)) f0 = 0.0;
-    if (!getparint("tap", &tap)) tap = 0;
-    if (!getparint("ntap", &ntap)) ntap = 0;
-    if (!getparint("pad", &pad)) pad = 0;
+    if (!getparlong("tap", &tap)) tap = 0;
+    if (!getparlong("ntap", &ntap)) ntap = 0;
+    if (!getparlong("pad", &pad)) pad = 0;
 
-    if(!getparint("niter", &niter)) niter = 10;
-    if(!getparint("hw", &hw)) hw = 15;
-    if(!getparint("smooth", &smooth)) smooth = 5;
-    if(!getparint("above", &above)) above = 0;
-    if(!getparint("shift", &shift)) shift=12;
+    if(!getparlong("niter", &niter)) niter = 10;
+    if(!getparlong("hw", &hw)) hw = 15;
+    if(!getparlong("smooth", &smooth)) smooth = 5;
+    if(!getparlong("above", &above)) above = 0;
+    if(!getparlong("shift", &shift)) shift=12;
 
     if (reci && ntap) vwarn("tapering influences the reciprocal result");
 
@@ -194,12 +201,12 @@ int main (int argc, char **argv)
 
     ntfft = optncr(MAX(nt+pad, nts+pad)); 
     nfreq = ntfft/2+1;
-    nw_low = (int)MIN((fmin*ntfft*dt), nfreq-1);
+    nw_low = (long)MIN((fmin*ntfft*dt), nfreq-1);
     nw_low = MAX(nw_low, 1);
-    nw_high = MIN((int)(fmax*ntfft*dt), nfreq-1);
+    nw_high = MIN((long)(fmax*ntfft*dt), nfreq-1);
     nw  = nw_high - nw_low + 1;
     scl   = 1.0/((float)ntfft);
-    if (!getparint("countmin", &countmin)) countmin = 0.3*nx*ny;
+    if (!getparlong("countmin", &countmin)) countmin = 0.3*nx*ny;
     
 /*================ Allocating all data arrays ================*/
 
@@ -212,7 +219,7 @@ int main (int argc, char **argv)
     iRN     = (float *)calloc(Nfoc*nys*nxs*ntfft,sizeof(float));
     Ni      = (float *)calloc(Nfoc*nys*nxs*ntfft,sizeof(float));
     G_d     = (float *)calloc(Nfoc*nys*nxs*ntfft,sizeof(float));
-    muteW   = (int *)calloc(Nfoc*nys*nxs,sizeof(int));
+    muteW   = (long *)calloc(Nfoc*nys*nxs,sizeof(long));
     trace   = (float *)malloc(ntfft*sizeof(float));
     tapersy = (float *)malloc(nxs*sizeof(float));
     xrcvsyn = (float *)calloc(Nfoc*nys*nxs,sizeof(float)); // x-rcv postions of focal points
@@ -220,8 +227,8 @@ int main (int argc, char **argv)
     xsyn    = (float *)malloc(Nfoc*sizeof(float)); // x-src position of focal points
     ysyn    = (float *)malloc(Nfoc*sizeof(float)); // x-src position of focal points
     zsyn    = (float *)malloc(Nfoc*sizeof(float)); // z-src position of focal points
-    xnxsyn  = (int *)calloc(Nfoc,sizeof(int)); // number of traces per focal point
-    ixpos   = (int *)calloc(nys*nxs,sizeof(int)); // x-position of source of shot in G_d domain (nxs*nys with dxs, dys)
+    xnxsyn  = (long *)calloc(Nfoc,sizeof(long)); // number of traces per focal point
+    ixpos   = (long *)calloc(nys*nxs,sizeof(long)); // x-position of source of shot in G_d domain (nxs*nys with dxs, dys)
 
     Refl    = (complex *)malloc(nw*ny*nx*nshots*sizeof(complex));
     tapersh = (float *)malloc(nx*sizeof(float));
@@ -230,12 +237,12 @@ int main (int argc, char **argv)
     xsrc    = (float *)calloc(nshots,sizeof(float)); //x-src position of shots
     ysrc    = (float *)calloc(nshots,sizeof(float)); //x-src position of shots
     zsrc    = (float *)calloc(nshots,sizeof(float)); // z-src position of shots
-    xnx     = (int *)calloc(nshots,sizeof(int)); // number of traces per shot
+    xnx     = (long *)calloc(nshots,sizeof(long)); // number of traces per shot
 
 	if (reci!=0) {
-        reci_xsrc = (int *)malloc((nxs*nxs*nys*nys)*sizeof(int));
-        reci_xrcv = (int *)malloc((nxs*nxs*nys*nys)*sizeof(int));
-        isxcount  = (int *)calloc(nxs*nys,sizeof(int));
+        reci_xsrc = (long *)malloc((nxs*nxs*nys*nys)*sizeof(long));
+        reci_xrcv = (long *)malloc((nxs*nxs*nys*nys)*sizeof(long));
+        isxcount  = (long *)calloc(nxs*nys,sizeof(long));
         ixmask  = (float *)calloc(nxs*nys,sizeof(float));
     }
 
@@ -518,9 +525,9 @@ int main (int argc, char **argv)
         t3 = wallclock_time();
         tsyn +=  t3 - t2;
 
-        if (file_iter != NULL) {
-            writeDataIter(file_iter, iRN, hdrs_out, ntfft, nxs*nys, d2, f2, n2out*n3out, Nfoc, xsyn, zsyn, ixpos, npos, iter);
-        }
+        // if (file_iter != NULL) {
+        //     writeDataIter(file_iter, iRN, hdrs_out, ntfft, nxs*nys, d2, f2, n2out*n3out, Nfoc, xsyn, zsyn, ixpos, npos, iter);
+        // }
         /* N_k(x,t) = -N_(k-1)(x,-t) */
         /* p0^-(x,t) += iRN = (R * T_d^inv)(t) */
         for (l = 0; l < Nfoc; l++) {
@@ -604,6 +611,7 @@ int main (int argc, char **argv)
             }
         }
     }
+    applyMute(green, muteW, smooth, 4, Nfoc, nxs*nys, nts, ixpos, npos, shift);
 
     /* compute upgoing Green's function G^+,- */
     if (file_gmin != NULL) {
@@ -629,7 +637,7 @@ int main (int argc, char **argv)
             }
         }
         /* Apply mute with window for Gmin */
-        applyMute(Gmin, muteW, smooth, 1, Nfoc, nxs*nys, nts, ixpos, npos, shift);
+        applyMute(Gmin, muteW, smooth, 4, Nfoc, nxs*nys, nts, ixpos, npos, shift);
     } /* end if Gmin */
 
     /* compute downgoing Green's function G^+,+ */
@@ -655,6 +663,8 @@ int main (int argc, char **argv)
                 }
             }
         }
+        /* Apply mute with window for Gplus */
+        applyMute(Gplus, muteW, smooth, 4, Nfoc, nxs*nys, nts, ixpos, npos, shift);
     } /* end if Gplus */
 
     t2 = wallclock_time();
diff --git a/marchenko3D/readTinvData3D.c b/marchenko3D/readTinvData3D.c
index c6a9e45..845d080 100644
--- a/marchenko3D/readTinvData3D.c
+++ b/marchenko3D/readTinvData3D.c
@@ -122,25 +122,28 @@ int readTinvData3D(char *filename, float *xrcv, float *yrcv, float *xsrc, float
 		xnx[isyn]=itrace;
 
         /* alternative find maximum at source position */
-        dxrcv = (gx1 - gx0)*scl/(float)(nx1-1);
-        dyrcv = (gy1 - gy0)*scl/(float)(ny1-1);
-        //imax = NINT(((sx_shot-gx0)*scl)/dxrcv);
+		if (nx1>1) dxrcv = (gx1 - gx0)*scl/(float)(nx1-1);
+        else dxrcv = (gx1 - gx0)*scl/(float)(1);
+		if (dxrcv==0.0) dxrcv=1.0;
         ixmax = NINT(((sx_shot-gx0)*scl)/dxrcv);
+        if (ny1>1) dyrcv = (gy1 - gy0)*scl/(float)(ny1-1);
+		else dyrcv = (gy1 - gy0)*scl/(float)(1);
+		if (dyrcv==0.0) dyrcv=1.0;
         iymax = NINT(((sy_shot-gy0)*scl)/dyrcv);
 		if (iymax > ny1-1) {
-            vmess("source of y is past array, snapping to nearest y");
+            vmess("source of y (%d) is past array, snapping to nearest y (%d)",iymax,ny1-1);
             iymax = ny1-1;
         }
         if (iymax < 0) {
-            vmess("source of y is before array, snapping to nearest y");
+            vmess("source of y (%d) is before array, snapping to nearest y (%d)",iymax,0);
             iymax = 0;
         }
         if (ixmax > nx1-1) {
-            vmess("source of x is past array, snapping to nearest x");
+            vmess("source of x (%d) is past array, snapping to nearest x (%d)",ixmax,nx1-1);
             ixmax = nx1-1;
         }
         if (ixmax < 0) {
-            vmess("source of x is before array, snapping to nearest x");
+            vmess("source of x (%d) is before array, snapping to nearest x (%d)",ixmax,nx1-1);
             ixmax = 0;
         }
         tmax=0.0;
diff --git a/marchenko3D/synthesis3D.c b/marchenko3D/synthesis3D.c
index 8ab12a9..19d4c80 100644
--- a/marchenko3D/synthesis3D.c
+++ b/marchenko3D/synthesis3D.c
@@ -136,12 +136,21 @@ int *ixpos, int npos, double *tfft, int *isxcount, int *reci_xsrc,  int *reci_xr
     int     nfreq, size, inx;
     float   scl;
     int     i, j, l, m, iw, ix, k, isrc, il, ik, nxy, nxys;
-    float   *rtrace, idxs, idys;
+    float   *rtrace, idxs, idys, fxb, fyb, fxe, fye;
     complex *sum, *ctrace;
     int     npe;
     static int first=1, *ircv;
     static double t0, t1, t;
 
+    if (fxsb < 0) fxb = 1.001*fxsb;
+    else          fxb = 0.999*fxsb;
+    if (fysb < 0) fyb = 1.001*fysb;
+    else          fyb = 0.999*fysb;
+    if (fxse > 0) fxe = 1.001*fxse;
+    else          fxe = 0.999*fxse;
+    if (fyse > 0) fye = 1.001*fyse;
+    else          fye = 0.999*fyse;
+
     nxy     = nx*ny;
     nxys    = nxs*nys;
 
@@ -149,7 +158,7 @@ int *ixpos, int npos, double *tfft, int *isxcount, int *reci_xsrc,  int *reci_xr
     nfreq = ntfft/2+1;
     /* scale factor 1/N for backward FFT,
      * scale dt for correlation/convolution along time, 
-     * scale dx (or dxsrc) for integration over receiver (or shot) coordinates */
+     * scale dx*dy (or dxsrc*dysrc) for integration over receiver (or shot) coordinates */
     scl   = 1.0*dt/((float)ntfft);
 
 #ifdef _OPENMP
@@ -212,7 +221,7 @@ int *ixpos, int npos, double *tfft, int *isxcount, int *reci_xsrc,  int *reci_xr
 /* Loop over total number of shots */
     if (reci == 0 || reci == 1) {
         for (k=0; k<nshots; k++) {
-            if ((xsrc[k] < 0.999*fxsb) || (xsrc[k] > 1.001*fxse) || (ysrc[k] < 0.999*fysb) || (ysrc[k] > 1.001*fyse)) continue;
+            if ((xsrc[k] < fxb) || (xsrc[k] > fxe) || (ysrc[k] < fyb) || (ysrc[k] > fye)) continue;
             isrc = NINT((ysrc[k] - fysb)/dys)*nxs+NINT((xsrc[k] - fxsb)/dxs);
             inx = xnx[k]; /* number of traces per shot */
 
@@ -234,8 +243,8 @@ int *ixpos, int npos, double *tfft, int *isxcount, int *reci_xsrc,  int *reci_xr
 		        /* compute integral over receiver positions */
                 /* multiply R with Fop and sum over nx */
                 memset(&sum[0].r,0,nfreq*2*sizeof(float));
-                for (j = nw_low, m = 0; j <= nw_high; j++, m++) {
-                    for (i = 0; i < inx; i++) {
+                for (i = 0; i < inx; i++) {
+                    for (j = nw_low, m = 0; j <= nw_high; j++, m++) {
                         ix = ircv[k*nxy+i];
                         sum[j].r += Refl[k*nw*nxy+m*nxy+i].r*Fop[l*nw*nxys+m*nxys+ix].r -
                                     Refl[k*nw*nxy+m*nxy+i].i*Fop[l*nw*nxys+m*nxys+ix].i;
diff --git a/utils/Makefile b/utils/Makefile
index 3b59b4f..9d47ece 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -6,7 +6,7 @@ LIBS    += -L$L -lgenfft -lm $(LIBSM)
 #OPTC += -openmp 
 #OPTC += -g -O0
 
-ALL: makemod makewave extendModel fconv correigen green basop syn2d mat2su ftr1d
+ALL: makemod makewave extendModel fconv correigen green green3D basop syn2d mat2su ftr1d
 
 SRCM	= \
 		makemod.c  \
@@ -84,6 +84,17 @@ SRCG	= green.c \
 		docpkge.c \
 		getpars.c
 
+SRCG3	= green3D.c \
+		getFileInfo.c  \
+		getrecpos3D.c  \
+		readData.c \
+		writeData.c \
+		wallclock_time.c \
+		verbosepkg.c  \
+		atopkge.c \
+		docpkge.c \
+		getpars.c
+
 SRCB	= basop.c \
 		getFileInfo.c  \
 		kxwfilter.c  \
@@ -152,6 +163,11 @@ OBJG	= $(SRCG:%.c=%.o)
 green:	$(OBJG) 
 	$(CC) $(LDFLAGS) $(OPTC) $(CFLAGS) -o green $(OBJG) $(LIBS)
 
+OBJG3	= $(SRCG3:%.c=%.o)
+
+green3D:	$(OBJG3) 
+	$(CC) $(LDFLAGS) $(OPTC) $(CFLAGS) -o green3D $(OBJG3) $(LIBS)
+
 OBJB	= $(SRCB:%.c=%.o)
 
 basop:	$(OBJB) 
@@ -172,23 +188,24 @@ OBJT	= $(SRCT:%.c=%.o)
 ftr1d:	$(OBJT) 
 	$(CC) $(LDFLAGS) $(OPTC) $(CFLAGS) -o ftr1d $(OBJT) $(LIBS)
 
-install: makemod makewave extendModel fconv correigen green basop syn2d mat2su ftr1d
+install: makemod makewave extendModel fconv correigen green green3D basop syn2d mat2su ftr1d
 	cp makemod $B
 	cp makewave $B
 	cp extendModel $B
 	cp fconv $B
 	cp correigen $B
 	cp green $B
+	cp green3D $B
 	cp basop $B
 	cp syn2d $B
 	cp mat2su $B
 	cp ftr1d $B
 
 clean:
-		rm -f core $(OBJM) makemod $(OBJW) makewave $(OBJE) extendModel $(OBJF) fconv $(OBJG) $(OBJC) correigen green $(OBJB) basop $(OBJJ) syn2d $(OBJS) mat2su $(OBJA) ftr1d $(OBJT)
+		rm -f core $(OBJM) makemod $(OBJW) makewave $(OBJE) extendModel $(OBJF) fconv $(OBJG) $(OBJC) correigen green $(OBJG3) green3D $(OBJB) basop $(OBJJ) syn2d $(OBJS) mat2su $(OBJA) ftr1d $(OBJT)
 
 realclean: clean
-		rm -f $B/makemod $B/makewave $B/extendModel $B/fconv $B/correigen $B/green $B/basop $B/syn2d $B/mat2su $B/ftr1d
+		rm -f $B/makemod $B/makewave $B/extendModel $B/fconv $B/correigen $B/green $B/green3D $B/basop $B/syn2d $B/mat2su $B/ftr1d
 
 
 
diff --git a/utils/getrecpos3D.c b/utils/getrecpos3D.c
new file mode 100644
index 0000000..85e9623
--- /dev/null
+++ b/utils/getrecpos3D.c
@@ -0,0 +1,135 @@
+#include "par.h"
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <assert.h>
+
+/**
+* read receiver positions used in green
+*
+*   AUTHOR:
+*           Jan Thorbecke (janth@xs4all.nl)
+*           The Netherlands 
+**/
+
+#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))
+#ifndef MAX
+#define	MAX(x,y) ((x) > (y) ? (x) : (y))
+#endif
+#ifndef MIN
+#define	MIN(x,y) ((x) < (y) ? (x) : (y))
+#endif
+#define SGN(x) ((x) < 0 ? -1.0 : 1.0)
+#ifndef ABS
+#define ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+
+void getrecpos3D(float *xi, float *yi, float *zi, int nx, int ny, float *xrcv, float *yrcv, float *zrcv, int verbose)
+{
+	int		nrx, nry, i, j, l, ndeltx, ndelty, np, lint, seed;
+	long    idum;
+	float	xprev, yprev, zprev, deltx, delty, deltz, dxrcv, dyrcv, dzrcv, var, irr, maxirr;
+    float   rrcv, dphi, oxrcv, oyrcv, ozrcv;
+
+	nrx = countparval("xrcv");
+    nry = countparval("yrcv");
+	if(!getparfloat("dxrcv",&dxrcv)) dxrcv = 15;
+    if(!getparfloat("dyrcv",&dyrcv)) dyrcv = 15;
+	if(!getparfloat("var", &var)) var=0;
+	if(!getparint("lint", &lint)) lint=1;
+	if(!getparint("seed", &seed)) seed=0;
+    
+    /* check if receiver positions on a circle are defined */
+	if (getparfloat("rrcv", &rrcv)) {
+		if (!getparfloat("dphi",&dphi)) dphi=2.0;
+		if (!getparfloat("oxrcv",&oxrcv)) oxrcv=0.0;
+		if (!getparfloat("oyrcv",&oyrcv)) oyrcv=0.0;
+		if (!getparfloat("ozrcv",&ozrcv)) ozrcv=0.0;
+		
+        np = 0;
+		for (i=0; i<ny; i++) {
+            for (j=0; j<ny; j++) {
+			    xi[np]   = oxrcv+rrcv*cos(((i*dphi)/360.0)*(2.0*M_PI));
+                yi[np]   = oyrcv+rrcv*cos(((i*dphi)/360.0)*(2.0*M_PI));
+			    zi[np++] = ozrcv+rrcv*sin(((i*dphi)/360.0)*(2.0*M_PI));
+			    if (verbose>4) fprintf(stderr,"Receiver Circle: xrcv[%d]=%f yrcv=%f zrcv=%f\n", i, xi[i], yi[i], zi[i]);
+			}
+		}
+		return;
+	}
+
+
+	if (var <= 0) {
+		if (lint == 1) {
+			xprev = xrcv[0];
+            yprev = yrcv[0];
+			zprev = zrcv[0];
+			np = 0;
+			for (i = 1; i < nry; i++) {
+                for (l = 1; l < nrx; l++) {
+                    deltx = xrcv[i] - xprev;
+                    delty = yrcv[i] - yprev;
+                    deltz = zrcv[i] - zprev;
+                    ndeltx = NINT(ABS(deltx/dxrcv));
+                    ndelty = NINT(ABS(delty/dyrcv));
+                    dzrcv = deltz/ndeltx;
+                    for (j = 0; j < ndeltx; j++) {
+                        zi[np]   = zprev + j*dzrcv;
+                        yi[np]   = yprev + i*dyrcv;
+                        xi[np++] = xprev + j*dxrcv;
+                    }
+                    xprev = xrcv[i*nx+l];
+                    yprev = yrcv[i*nx+l];
+                    zprev = zrcv[i*nx+l];
+                }
+                xi[i*nx+nx-1] = xrcv[nrx-1];
+                yi[i*nx+nx-1] = yrcv[nrx-1];
+			    zi[i*nx+nx-1] = zrcv[nrx-1];
+			}
+		}
+		else {
+			for (i = 0; i < nry; i++) {
+                for (l = 0; l < nrx; l++) {
+				    xi[i*nx+l] = xrcv[l];
+                    yi[i*nx+l] = yrcv[i];
+				    zi[i*nx+l] = zrcv[l];
+                }
+			}
+		}
+	}
+	else {
+		xprev = xrcv[0];
+		yprev = yrcv[0];
+		zprev = zrcv[0];
+		np = 0;
+		maxirr = 0;
+		idum = (long) seed;
+		srand48(idum);
+		for (i = 1; i < nrx; i++) {
+			deltx = xrcv[i] - xprev;
+			deltz = zrcv[i] - zprev;
+			ndeltx = NINT(ABS(deltx/dxrcv));
+			dzrcv = deltz/ndeltx;
+			for (j = 0; j < ndeltx; j++) {
+				irr = var*((float)drand48());
+				if (fabs(irr) > maxirr) maxirr = fabs(irr);
+				zi[np]   = zprev + j*dzrcv;
+				xi[np++] = xprev + j*dxrcv + irr;
+				if (verbose==13)vmess("xrcv %d = %f (%f)",np-1,xi[np-1], irr);
+			}
+			xprev = xrcv[i];
+			zprev = zrcv[i];
+		}
+		irr = var*((float)drand48());
+		if (fabs(irr) > maxirr) maxirr = fabs(irr);
+		xi[nx-1] = xrcv[nrx-1] + irr;
+		zi[nx-1] = zrcv[nrx-1];
+		if (verbose) vmess("maximum error in receiver position %f", maxirr);
+		if (verbose==13) vmess("xrcv %d = %f (%f)", nx-1, xi[nx-1], irr);
+	}
+
+	if (verbose) vmess("getrecpos number of receivers = %d", np+1);
+
+	return;
+}
diff --git a/utils/green3D b/utils/green3D
new file mode 100755
index 0000000000000000000000000000000000000000..cc36382df2db967794d33a3b4afe6e4bb4e56e07
GIT binary patch
literal 140784
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
F|39>XvTgtX

literal 0
HcmV?d00001

diff --git a/utils/green3D.c b/utils/green3D.c
new file mode 100644
index 0000000..69daa8e
--- /dev/null
+++ b/utils/green3D.c
@@ -0,0 +1,761 @@
+#include <genfft.h>
+#include "par.h"
+#include "segy.h"
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <assert.h>
+
+#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))
+#ifndef MAX
+#define	MAX(x,y) ((x) > (y) ? (x) : (y))
+#endif
+#ifndef MIN
+#define	MIN(x,y) ((x) < (y) ? (x) : (y))
+#endif
+#define SGN(x) ((x) < 0 ? -1.0 : 1.0)
+
+
+#ifndef COMPLEX
+typedef struct _complexStruct { /* complex number */
+    float r,i;
+} complex;
+#endif/* complex */
+
+int disp_fileinfo(char *file, int n1, int n2, float f1, float f2, float d1, float d2, segy *hdrs);
+int getFileInfo(char *filename, int *n1, int *n2, int *ngath, float *d1, float *d2, float *f1, float *f2, float *xmin, float *xmax, float *sclsxgx, int *nxm);
+int readData(FILE *fp, float *data, segy *hdrs, int n1);
+
+void xwgreen3D(float *data, int nt, int nx, int ny, float dt, float fmin, float fmax, float *xi, float xsrc,
+			float dx, float *yi, float ysrc, float dy, float *zi, float zsrc, float c, float cs, float rho,
+			float *wavelet, float dipx, float maxdip, int far, int p_vz, int dip, int verbose);
+
+
+/*********************** self documentation **********************/
+char *sdoc[] = {
+" 								",
+" green - calculation of 2D Greens function in homogenoeus medium based one exact expressions",
+" 								",
+" green c= zsrc1= [optional parameters]",
+" 							        ",
+" Required parameters:",
+" ",
+"   c= ....................... P-wave velocity",
+"   cs=0.7*c ................. S-wave velocity",
+"   zsrc1= ................... depth of source",
+" 							        ",
+" Optional parameters:",
+" ",
+"   file_out= ................ output file (default SU-pipe)",
+" RECEIVER POSITIONS ",
+"   xrcv=-1500,1500 .......... x-position's of receivers (array)",
+"   yrcv=-1500,1500 .......... y-position's of receivers (array)",
+"   zrcv=0,0 ................. z-position's of receivers (array)",
+"   dxrcv=15 ................. step in receiver x-direction",
+"   dyrcv=15 ................. step in receiver y-direction",
+"   var=0 .................... variance for irregular sampling (dxrcv +- var)",
+"   seed=0 ................... seed for random generator",
+"   lint=1 ................... linear interpolate between the rcv points",
+"   rrcv= .................... radius for receivers on a circle ",
+"   oxrcv=0.0 ................ x-center position of circle",
+"   oyrcv=0.0 ................ y-center position of circle",
+"   ozrcv=0.0 ................ z-center position of circle",
+"   dphi=2 ................... angle between receivers on circle ",
+" SOURCE POSITIONS ",
+"   xsrc1=0.0 ................ x-position of first source",
+"   xsrc2=xsrc1 .............. x-position of last source",
+"   dxsrc=0.0 ................ step in source x-direction",
+"   ysrc1=0.0 ................ y-position of first source",
+"   ysrc2=ysrc1 .............. y-position of last source",
+"   dysrc=0.0 ................ step in source y-direction",
+"   zsrc2=zsrc1 .............. depth position (z) of last source",
+"   dzsrc=0.0 ................ step in source z-direction",
+" SAMPLING AND SOURCE DEFINITION ",
+"   file_src=spike ........... source wavelet (overrules dt)",
+"   nt=256 ................... number of samples",
+"   dt=0.004 ................. stepsize in time-direction ",
+"   fmin=0 ................... minimum frequency",
+"   fmax=70 .................. maximum frequency",
+"   dipx=0 ................... local dip of the dipole in x-direction",
+"   dipy=0 ................... local dip of the dipole in y-direction",
+"   dip=1 .................... 1; dipole 0; monopole source",
+"   rho=1000 ................. density",
+" FIELD DEFINITION ",
+"   far=0 .................... farfield approximation 0=off)",
+"   p_vz=0  .................. P or Vz field (0 = P field, 1 = Vz field)",
+"   Fz=0  .................... Force source in z with Vz receivers",
+"   Fx=0  .................... Force source in x with Vz receivers",
+"   maxdip=90 ................ maximum angle (degrees) to be computed ",
+"   sum=0 .................... sum all sources",
+"   verbose=0 ................ silent option; >0 display info",
+"",
+"  The P or Vz field of a dipole source at depth z below the receivers",
+"  in a homogeneous 2-D medium is calculated.",
+"   ",
+" author  : Jan Thorbecke : 23-03-1995 (janth@xs4all.nl)",
+"                         : revision 2010",
+" ",
+NULL};
+/**************** end self doc ***********************************/
+
+int main(int argc, char **argv)
+{
+	FILE	*fp_in, *fp_out;
+	int     n1, n2, n3, i, j, l, nrx, nry, nrz, dip;
+	int     far, p_vz, nt, nx, ny, Nsx, Nsy, is, isy, sum, lint, verbose;
+	int     size, ntraces, ngath, Fz, Fx;
+	float   scl, xmin, xmax, ymin, ymax;
+	float   dx, dy, dt, d1, d2, d3, fmin, fmax, f1, f2, f3, c, cs, rho;
+	float 	*data, *wavelet, *tmpdata, dipx, dipy, xsrc1, xsrc2, ysrc1, ysrc2;
+	float 	*xrcv, *yrcv, *zrcv, *xi, *yi, *zi, x0, y0, maxdip;
+    float   rrcv, dphi, oxrcv, ozrcv;
+	float	zsrc1, zsrc2, dxsrc, dysrc, dzsrc, xsrc, ysrc, zsrc, dxrcv, dyrcv;
+	char    *file_src, *file_out;
+	size_t  nwrite;
+	segy	*hdrs;
+
+/* ========================= Reading parameters ====================== */
+
+	initargs(argc, argv);
+	requestdoc(1);
+
+	if(!getparint("verbose", &verbose)) verbose = 0;
+	if(!getparstring("file_out", &file_out)){
+		if (verbose) vwarn("parameter file_out not found, assume pipe");
+		file_out = NULL;
+	}
+	if(!getparstring("file_src", &file_src)) file_src = NULL;
+	if(!getparfloat("c", &c)) verr("velocity must be specified.");
+    if(!getparfloat("cs", &cs)) cs=0.7*c;
+	if(!getparfloat("zsrc1", &zsrc1)) verr("zsrc1(depth) must be specified.");
+	if(!getparint("lint", &lint)) lint=1;
+	if(!getparfloat("maxdip", &maxdip)) maxdip=90.0;
+
+	nrx  = countparval("xrcv");
+    nry  = countparval("yrcv");
+	// nrz  = countparval("zrcv");
+	nrz = 0;
+	if(!getparfloat("dxrcv",&dxrcv)) dxrcv = 15;
+    if(!getparfloat("dyrcv",&dyrcv)) dyrcv = 15;
+
+	if (nrx != 0 && nry != 0 && nrz == 0) {
+		if (nrx != 2) verr("xrcv should have only two values");
+        if (nry != 2) verr("yrcv should have only two values");
+		xrcv = (float *)malloc(nrx*sizeof(float));
+        yrcv = (float *)malloc(nry*sizeof(float));
+		getparfloat("xrcv",xrcv);
+        getparfloat("yrcv",yrcv);
+		nx = NINT((xrcv[1] - xrcv[0])/dxrcv) + 1;
+        ny = NINT((yrcv[1] - yrcv[0])/dyrcv) + 1;
+		xi = (float *)malloc(nx*ny*sizeof(float));
+        yi = (float *)malloc(nx*ny*sizeof(float));
+		zi = (float *)malloc(nx*ny*sizeof(float));
+		x0 = xrcv[0];
+        y0 = yrcv[0];
+		for (i = 0; i < ny; i++) {
+            for (j = 0; j < nx; j++) {
+                xi[i*nx+j] = x0 + j*dxrcv;
+                yi[i*nx+j] = y0 + i*dyrcv;
+			    zi[i*nx+j] = 0;
+            }
+		}
+	}
+	else if (nrx == 0 && nry == 0 && nrz == 0) {
+		nx = NINT((3000)/dxrcv) + 1;
+		ny = NINT((3000)/dyrcv) + 1;
+		xi = (float *)malloc(nx*ny*sizeof(float));
+		yi = (float *)malloc(nx*ny*sizeof(float));
+		zi = (float *)malloc(nx*ny*sizeof(float));
+		x0 = -1500;
+		y0 = -1500;
+		for (i = 0; i < ny; i++) {
+            for (j = 0; j < nx; j++) {
+                xi[i*nx+j] = x0 + j*dxrcv;
+                yi[i*nx+j] = y0 + i*dyrcv;
+			    zi[i*nx+j] = 0;
+            }
+		}
+	}
+	else verr("Number of xrcv and yrcv values are not equal");
+
+	if (verbose) vmess("number of receivers nx = %d, ny = %d total = %d", nx, ny, nx*ny);
+	if (verbose == 13) {
+		for (j = 0; j < ny; j++) {
+			for (i = 0; i < nx; i++) {
+				vmess("xi = %d yi = %d x = %f y=%f z = %f", i, j, xi[j*nx+i], yi[j*nx+i], zi[j*nx+i]);
+			}
+		}
+	}
+
+	if(!getparfloat("xsrc1", &xsrc1)) xsrc1=0;
+	if(!getparfloat("xsrc2", &xsrc2)) xsrc2=xsrc1;
+	if(!getparfloat("dxsrc", &dxsrc)) dxsrc=0.0;
+    if(!getparfloat("ysrc1", &ysrc1)) ysrc1=0;
+	if(!getparfloat("ysrc2", &ysrc2)) ysrc2=ysrc1;
+	if(!getparfloat("dysrc", &dysrc)) dysrc=0.0;
+	if(!getparfloat("zsrc2", &zsrc2)) zsrc2=zsrc1;
+	if(!getparfloat("dzsrc", &dzsrc)) dzsrc=0;
+	if(!getparint("nt", &nt)) nt = 256;
+	if(!getparfloat("fmin", &fmin)) fmin = 0.0;
+	if(!getparfloat("fmax", &fmax)) fmax = 70.0;
+	if(!getparfloat("dipx", &dipx)) dipx = 0.0;
+    if(!getparfloat("dipy", &dipy)) dipy = 0.0;
+	if(!getparfloat("rho", &rho)) rho = 1000.0;
+	if(!getparint("far", &far)) far = 0;
+	if(!getparint("p_vz", &p_vz)) p_vz = 0;
+    if(!getparint("Fz", &Fz)) Fz = 0;
+    if(!getparint("Fx", &Fx)) Fx = 0;
+	if(!getparint("dip", &dip)) dip = 1;
+	if(!getparint("sum", &sum)) sum = 0;
+    if(Fz) p_vz=2;
+    if(Fx) p_vz=3;
+
+/* ========================= Opening wavelet file ====================== */
+
+	if (file_src == NULL){
+		if(!getparfloat("dt", &dt)) dt = 0.004;
+		wavelet = (float *)calloc(nt,sizeof(float));
+		wavelet[0] = 1.0;
+	}
+	else {
+		if (verbose) vmess("Reading wavelet from file %s.", file_src);
+		ngath = 1;
+		getFileInfo(file_src, &n1, &n2, &ngath, &d1, &d2, &f1, &f2, &xmin, &xmax, &scl, &ntraces);
+		
+		fp_in = fopen(file_src, "r");
+		if (fp_in == NULL) verr("error on opening input file_src=%s", file_src);
+		
+		tmpdata = (float *)calloc(n1*n2,sizeof(float));
+		hdrs = (segy *) calloc(n2,sizeof(segy));
+		
+		n2 = readData(fp_in, tmpdata, hdrs, n1);
+		fclose(fp_in);
+		if (verbose) {
+			disp_fileinfo(file_src, n1, n2, f1,  f2,  d1,  d2, hdrs);
+		}
+		dt = d1;
+		wavelet = (float *)calloc(nt,sizeof(float));
+
+		if (n1 <= nt) {
+			for (i = 0; i < n1; i++) wavelet[i] = tmpdata[i];
+			for (i = n1; i < nt; i++) wavelet[i] = 0.0;
+		}
+		else {
+			vwarn("file_src has more samples than output");
+			for (i = 0; i < nt; i++) wavelet[i] = tmpdata[i];
+		}
+		if( tmpdata ) free(tmpdata);
+		if( hdrs ) free( (void *) hdrs);
+	}
+
+/* ============ INITIALIZE AND CHECK PARAMETERS =============== */
+
+	if (xsrc2==xsrc1) Nsx = 1;
+	else Nsx = NINT((xsrc2 - xsrc1)/dxsrc) + 1;
+	if (ysrc2==ysrc1) Nsy = 1;
+	else Nsy = NINT((ysrc2 - ysrc1)/dysrc) + 1;
+
+	if (verbose) vmess("Number of shot records to generate x = %d y = %d", Nsx, Nsy);
+	if (Nsx > 1 && Nsy > 1) {
+		dxsrc = (xsrc2-xsrc1)/(Nsx-1);
+		dysrc = (ysrc2-ysrc1)/(Nsy-1);
+		dzsrc = (zsrc2-zsrc1)/(Nsx-1);
+		if (verbose) {
+			vmess("dxsrc = %f", dxsrc);
+			vmess("dysrc = %f", dysrc);
+			vmess("dzsrc = %f", dzsrc);
+		}
+	}
+
+	size = nt * nx *ny;
+	dx   = dxrcv;
+	dy   = dyrcv;
+	tmpdata = (float *)calloc(size,sizeof(float));
+	data = (float *)calloc(size,sizeof(float));
+	hdrs = (segy *) calloc(nx*ny,sizeof(segy));
+	for (i = 0; i < ny; i++) {
+		for(j = 0; j < nx; j++) {
+			hdrs[i*nx+j].f1= 0.0;
+			hdrs[i*nx+j].f2= x0;
+			hdrs[i*nx+j].d1= dt;
+			hdrs[i*nx+j].d2= dx;
+			hdrs[i*nx+j].ns= nt;
+			hdrs[i*nx+j].dt= (int)1000000*dt;
+			hdrs[i*nx+j].trwf= nx*ny;
+			hdrs[i*nx+j].tracl= i*nx+j+1;
+			hdrs[i*nx+j].tracf= i*nx+j+1;
+			hdrs[i*nx+j].gx = (x0 + j*dx)*1000;
+			hdrs[i*nx+j].gy = (y0 + i*dy)*1000;
+			hdrs[i*nx+j].scalco = -1000;
+			hdrs[i*nx+j].trid = TREAL;
+		}
+	}
+	if (file_out==NULL) fp_out=stdout;
+	else fp_out = fopen(file_out,"w");
+	if (fp_out == NULL) verr("error in creating output file");
+
+	for (isy = 0; isy < Nsy; isy++) {
+		for (is = 0; is < Nsx; is++) {
+			xsrc = xsrc1 + is*dxsrc;
+			ysrc = ysrc1 + isy*dysrc;
+			zsrc = zsrc1 + is*dzsrc;
+			if (verbose) vmess("xsrc = %f ysrc=%f zsrc = %f", xsrc, ysrc, zsrc);
+
+			xwgreen3D(data,nt,nx,ny,dt,fmin,fmax,xi,xsrc,dx,yi,ysrc,dy,zi,zsrc,c,cs,rho,wavelet,
+				dipx, maxdip, far, p_vz, dip, verbose);
+
+			for (l = 0; l < ny; l++) {
+				for (i = 0; i < nx; i++) {
+					for (j = 0; j < nt; j++) tmpdata[l*nx*nt+i*nt+j] = data[l*nx*nt+i*nt+j];
+					hdrs[l*nx+i].sx = NINT(xsrc*1000);
+					hdrs[l*nx+i].sy = NINT(ysrc*1000);
+					hdrs[l*nx+i].scalco = -1000;
+					hdrs[l*nx+i].offset = xi[l*nx+i]-xsrc;
+					hdrs[l*nx+i].gx = NINT(xi[l*nx+i]*1000);
+					hdrs[l*nx+i].gy = NINT(yi[l*nx+i]*1000);
+					hdrs[l*nx+i].fldr = isy*Nsx+is+1;
+					hdrs[l*nx+i].trwf = nx*ny;
+					nwrite = fwrite( &hdrs[l*nx+i], 1, TRCBYTES, fp_out);
+					assert(nwrite == TRCBYTES);
+					nwrite = fwrite( &tmpdata[l*nx*nt+i*nt], sizeof(float), nt, fp_out);
+					assert(nwrite == nt);
+				}
+			}
+		}
+	}
+
+	if( xi ) free(xi);
+	if( yi ) free(yi);
+	if( zi ) free(zi);
+	if( wavelet ) free( wavelet );
+
+    fclose(fp_out);
+
+	if( data ) free(data);
+	if( tmpdata ) free(tmpdata);
+	if( hdrs ) free( hdrs);
+
+	exit ( 0 );
+}
+
+/***************************************************************************
+*  
+*   Calculation of pulse response in homogeneous medium
+*
+*
+***************************************************************************/
+
+void xwgreen3D(float *data, int nt, int nx, int ny, float dt, float fmin, float fmax, float *xi, float xsrc, float dx, float *yi, float ysrc, float dy, float *zi, float zsrc, float c, float cs, float rho, float *wavelet, float dipx, float maxdip, int far, int p_vz, int dip, int verbose)
+{
+	int    	iomin, iomax, iom, ix, iy, nfreq, i, sign, optn;
+	float  	df, deltom, om, k, r, x, y, invr, phi, phi2, cosphi;
+	float	*rwave, *rdata, cos2, scl, z, kp, ks, sclr;
+	complex	*cwave, *cdata, tmp, tmp2, sum;
+    complex H02p, H12p, H02s, H12s, Gp, Gs;
+
+	optn	= optncr(nt);
+	nfreq	= 1+(optn/2);
+	df		= 1.0/(dt*optn);
+	deltom	= 2.*M_PI*df;
+	iomin	= (int)MIN((fmin*dt*optn), (nfreq-1));
+	iomin	= MAX(iomin, 1);
+	iomax	= MIN((int)(fmax*dt*optn), (nfreq-1));
+
+	rdata = (float *)calloc(optn*nx*ny,sizeof(float));
+	cdata = (complex *)calloc(nfreq*nx*ny,sizeof(complex));
+	rwave = (float *)calloc(optn,sizeof(float));
+	cwave = (complex *)calloc(nfreq,sizeof(complex));
+
+	for (i = 0; i < nt; i++) rwave[i] = wavelet[i]*dt;
+	for (i = nt; i < optn; i++) rwave[i] = 0.0;
+	
+	sign = -1;
+	rc1fft(rwave, cwave, optn, sign);
+
+	for (iy = 0; iy < ny; iy++) {
+		for (ix = 0; ix < nx; ix++) {
+			for (iom = 0; iom < iomin; iom++) {
+				cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+				cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+			}
+		}
+	}
+	for (iy = 0; iy < ny; iy++) {
+		for (ix = 0; ix < nx; ix++) {
+			for (iom = iomax; iom < nfreq; iom++) {
+				cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+				cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+			}
+		}
+	}
+
+	if (p_vz == 0) {
+		if (far == 0 && dip == 1) {
+			if (verbose) vmess("near and far P field of dipole");
+			for (iy = 0; iy < ny; iy++) {
+				for (ix = 0; ix < nx; ix++) {
+					x      = xi[iy*nx+ix] - xsrc;
+					y      = yi[iy*nx+ix] - ysrc;
+					z      = fabs(zi[iy*nx+ix] - zsrc);
+					r      = sqrt(x*x + y*y + z*z);
+					if (r != 0) phi = acos(z/r);
+					else phi = M_PI/2;
+					phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+					cosphi = 0.25*cos(phi2)*rho;
+					if (fabs(phi) < maxdip*M_PI/180.0) {
+						for (iom = iomin; iom <= iomax; iom++) {
+							om = iom*deltom;
+							k = om/c;
+							tmp.r = -k*cosphi*y1(k*r);
+							tmp.i = -k*cosphi*j1(k*r);
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r - 
+											tmp.i*cwave[iom].i;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+											tmp.i*cwave[iom].r;
+						}
+					}
+					else {
+						for (iom = iomin; iom <= iomax; iom++) {
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+						}
+					}
+				}
+			}
+		}
+		else if (far == 1 && dip == 1){
+			if (verbose) vmess("far P field of dipole");
+			for (iy = 0; iy < ny; iy++) {
+				for (ix = 0; ix < nx; ix++) {
+					x = xi[ix] - xsrc;
+					y = yi[iy*nx+ix] - ysrc;
+					z = fabs(zi[iy*nx+ix] - zsrc);
+					r = sqrt(x*x + y*y + z*z);
+					if (r != 0) phi = acos(z/r);
+					else phi = M_PI/2;
+					phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+					cosphi = 0.5*cos(phi2)*rho/sqrt(r);
+					if (fabs(phi) < maxdip*M_PI/180.0) {
+						for (iom = iomin; iom <= iomax; iom++) {
+							om = iom*deltom;
+							k = om/c;
+							tmp.r = sqrt(k/(2.0*M_PI))*cosphi*cos(k*r-M_PI/4.0);
+							tmp.i = -sqrt(k/(2.0*M_PI))*cosphi*sin(k*r-M_PI/4.0);
+
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r -
+											tmp.i*cwave[iom].i;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+											tmp.i*cwave[iom].r;
+						}
+					}
+					else {
+						for (iom = iomin; iom <= iomax; iom++) {
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+						}
+					}
+				}
+			}
+		}
+		else if (far == 0 && dip == 0){
+			if (verbose) vmess("near and far P field of monopole");
+			for (iy = 0; iy < ny; iy++) {
+				for (ix = 0; ix < nx; ix++) {
+					x = xi[iy*nx+ix] - xsrc;
+					y = yi[iy*nx+ix] - ysrc;
+					z = fabs(zi[iy*nx+ix] - zsrc);
+					r = sqrt(x*x + y*y + z*z);
+					if (r != 0) phi = acos(z/r);
+					else phi = M_PI/2;
+					scl = 0.25*rho;
+					if (fabs(phi) < maxdip*M_PI/180.0) {
+						for (iom = iomin; iom <= iomax; iom++) {
+							om = iom*deltom;
+							k  = om/c;
+							tmp.r = -scl*y0(k*r);
+							tmp.i = -scl*j0(k*r);
+
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r - 
+											tmp.i*cwave[iom].i;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+											tmp.i*cwave[iom].r;
+						}
+					}
+					else {
+						for (iom = iomin; iom <= iomax; iom++) {
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+						}
+					}
+				}
+			}
+		}
+		else if (far == 1 && dip == 0){
+			if (verbose) vmess("far P field of monopole");
+			for (iy = 0; iy < ny; iy++) {
+				for (ix = 0; ix < nx; ix++) {
+					x = xi[iy*nx+ix] - xsrc;
+					y = yi[iy*nx+ix] - ysrc;
+					z = fabs(zi[iy*nx+ix] - zsrc);
+					r = sqrt(x*x + y*y + z*z);
+					if (r != 0) phi = acos(z/r);
+					else phi = M_PI*0.5;
+					scl = 0.5*rho/sqrt(r);
+					if (fabs(phi) <= M_PI*(maxdip/180.0)) {
+						for (iom = iomin; iom <= iomax; iom++) {
+							om = iom*deltom;
+							k = om/c;
+							tmp.r = -sqrt(1.0/(2.0*M_PI*k))*scl*sin(k*r-M_PI/4.0);
+							tmp.i = -sqrt(1.0/(2.0*M_PI*k))*scl*cos(k*r-M_PI/4.0);
+
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r -
+											tmp.i*cwave[iom].i;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+											tmp.i*cwave[iom].r;
+						}
+					}
+					else {
+						for (iom = iomin; iom <= iomax; iom++) {
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+						}
+					}
+				}
+			}
+		}
+	}
+	else if (p_vz == 1) {
+		if (dip == 1) {
+	    	if (far == 0) {
+	    		if (verbose) vmess("near and far Vz field of dipole");
+				for (iy = 0; iy < ny; iy++) {
+					for (ix = 0; ix < nx; ix++) {
+						x = xi[iy*nx+ix] - xsrc;
+						y = yi[iy*nx+ix] - ysrc;
+						z = fabs(zi[iy*nx+ix] - zsrc);
+						r = sqrt(x*x + y*y + z*z);
+						invr   = -0.25/(c);
+						if (r != 0) phi = acos(z/r);
+						else phi = M_PI/2;
+						phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+						cosphi = cos(phi2);
+						cos2 = cosphi*cosphi;
+						if (fabs(phi) < maxdip*M_PI/180.0) {
+							for (iom = iomin; iom <= iomax; iom++) {
+								om = iom*deltom;
+								k = om/c;
+								tmp.r = k*cos2*invr*j0(k*r);
+								tmp.i = -k*cos2*invr*y0(k*r);
+								tmp2.r = k*(1-2*cos2)*invr*j1(k*r)/(k*r);
+								tmp2.i = -k*(1-2*cos2)*invr*y1(k*r)/(k*r);
+								sum.r = tmp.r + tmp2.r;
+								sum.i = tmp.i + tmp2.i;
+
+								cdata[iy*nx*nfreq+ix*nfreq+iom].r = sum.r*cwave[iom].r -
+												sum.i*cwave[iom].i;
+								cdata[iy*nx*nfreq+ix*nfreq+iom].i = sum.r*cwave[iom].i +
+												sum.i*cwave[iom].r;
+							}
+						}
+						else {
+							for (iom = iomin; iom <= iomax; iom++) {
+								cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+								cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+							}
+						}
+					}
+				}
+	    	}
+	    	else {
+	    		if (verbose) vmess("far Vz field of dipole");
+				for (iy = 0; iy < ny; iy++) {
+					for (ix = 0; ix < nx; ix++) {
+						x = xi[iy*nx+ix] - xsrc;
+						y = yi[iy*nx+ix] - ysrc;
+						z = fabs(zi[iy*nx+ix] - zsrc);
+						r = sqrt(x*x + y*y + z*z);
+						invr   = -0.5/(c*sqrt(r));
+						if (r != 0) phi = acos(z/r);
+						else phi = M_PI/2;
+						phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+						cosphi = cos(phi2);
+						cos2 = cosphi*cosphi;
+						if (fabs(phi) < maxdip*M_PI/180.0) {
+							for (iom = iomin; iom <= iomax; iom++) {
+								om = iom*deltom;
+								k = om/c;
+								tmp.r = sqrt(k/(2.0*M_PI))*invr*cos2*cos(k*r-M_PI/4.0);
+								tmp.i = -sqrt(k/(2.0*M_PI))*invr*cos2*sin(k*r-M_PI/4.0);
+
+								cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r -
+												tmp.i*cwave[iom].i;
+								cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+												tmp.i*cwave[iom].r;
+							}
+						}
+						else {
+							for (iom = iomin; iom <= iomax; iom++) {
+								cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+								cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+							}
+						}
+					}
+				}
+	    	}
+		}
+		else {
+	    	if (verbose) vmess("near and far Vz field of monopole");
+
+			for (iy = 0; iy < ny; iy++) {
+				for (ix = 0; ix < nx; ix++) {
+					x = xi[iy*nx+ix] - xsrc;
+					y = yi[iy*nx+ix] - ysrc;
+					z = fabs(zi[iy*nx+ix] - zsrc);
+					r = sqrt(x*x + y*y + z*z);
+					if (r != 0) phi = acos(z/r);
+					else phi = M_PI/2;
+					phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+					cosphi = cos(phi2);
+					if (fabs(phi) < maxdip*M_PI/180.0) {
+						for (iom = iomin; iom <= iomax; iom++) {
+							om = iom*deltom;
+							k = om/c;
+							tmp.i = -cosphi*y1(k*r)/(4.0*c);
+							tmp.r = cosphi*j1(k*r)/(4.0*c);
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r - 
+											tmp.i*cwave[iom].i;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+											tmp.i*cwave[iom].r;
+						}
+					}
+					else {
+						for (iom = iomin; iom <= iomax; iom++) {
+							cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+							cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+						}
+					}
+				}
+			}
+		}
+	}
+    else if (p_vz == 2) { /* Fz source with Vz receivers Fz=1 == p_vz=2 */
+        for (iy = 0; iy < ny; iy++) {
+			for (ix = 0; ix < nx; ix++) {
+				x = xi[iy*nx+ix] - xsrc;
+				y = yi[iy*nx+ix] - ysrc;
+				z = fabs(zi[iy*nx+ix] - zsrc);
+				r = sqrt(x*x + y*y + z*z);
+
+				if (r != 0) phi = acos(z/r);
+				else phi = M_PI/2;
+				phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+				cosphi = cos(phi2);
+				sclr = (z*z-x*x-y*y)/(r);
+				if (fabs(phi) < maxdip*M_PI/180.0) {
+					for (iom = iomin; iom <= iomax; iom++) {
+						om = iom*deltom;
+						kp = om/c;
+						ks = om/cs;
+						H02p.r = j0(kp*r);
+						H02p.i = -y0(kp*r);
+						H12p.r = j1(kp*r);
+						H12p.i = -y1(kp*r);
+						
+						H02s.r = j0(ks*r);
+						H02s.i = -y0(ks*r);
+						H12s.r = j1(ks*r);
+						H12s.i = -y1(ks*r);
+
+						Gp.r = kp/(4*om*rho*r*r)*(-z*z*kp*H02p.r + sclr*H12p.r);
+						Gp.i = kp/(4*om*rho*r*r)*(-z*z*kp*H02p.i + sclr*H12p.i);
+
+						Gs.r = ks/(4*om*rho*r*r)*(-z*z*ks*H02s.r + sclr*H12s.r);
+						Gs.i = ks/(4*om*rho*r*r)*(-z*z*ks*H02s.i + sclr*H12s.i);
+
+						tmp.i = (-1.0/om)*((om/(4*rho*cs*cs))*(H02s.r) - Gp.r + Gs.r);
+						tmp.r = ( 1.0/om)*((om/(4*rho*cs*cs))*(H02s.i) - Gp.i + Gs.i);
+
+						cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r - 
+						tmp.i*cwave[iom].i;
+						cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+						tmp.i*cwave[iom].r;
+					}
+				}
+				else {
+					for (iom = iomin; iom <= iomax; iom++) {
+						cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+						cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+					}
+				}
+			}
+        }
+
+    }
+    else if (p_vz == 3) { /* Fx source with Vz receivers Fx=1 == p_vz=3 */
+        for (iy = 0; iy < ny; iy++) {
+			for (ix = 0; ix < nx; ix++) {
+				x = xi[iy*nx+ix] - xsrc;
+				y = yi[iy*nx+ix] - ysrc;
+				z = fabs(zi[iy*nx+ix] - zsrc);
+				r = sqrt(x*x + y*y + z*z);
+
+				if (r != 0) phi = acos(z/r);
+				else phi = M_PI/2;
+				phi2   = SGN(x)*phi - (dipx*M_PI/180.0);
+				cosphi = cos(phi2);
+				scl = (z*x*y)/(4.0*r*r*rho);
+				if (fabs(phi) < maxdip*M_PI/180.0) {
+					for (iom = iomin; iom <= iomax; iom++) {
+						om = iom*deltom;
+						kp = om/c;
+						ks = om/cs;
+						H02p.r = kp*kp*j0(kp*r);
+						H02p.i = -kp*kp*y0(kp*r);
+						H12p.r = 2.0*kp*j1(kp*r)/r;
+						H12p.i = -2.0*kp*y1(kp*r)/r;
+						
+						H02s.r = ks*ks*j0(ks*r);
+						H02s.i = -ks*ks*y0(ks*r);
+						H12s.r = 2.0*ks*j1(ks*r)/r;
+						H12s.i = -2.0*ks*y1(ks*r)/r;
+						
+						tmp.i = (scl/(om*om))*((H02p.r-H12p.r) - (H02s.r-H12s.r));
+						tmp.r = -(scl/(om*om))*((H02p.i-H12p.i) - (H02s.i-H12s.i));
+						
+						cdata[iy*nx*nfreq+ix*nfreq+iom].r = tmp.r*cwave[iom].r - 
+						tmp.i*cwave[iom].i;
+						cdata[iy*nx*nfreq+ix*nfreq+iom].i = tmp.r*cwave[iom].i +
+						tmp.i*cwave[iom].r;
+					}
+				}
+				else {
+					for (iom = iomin; iom <= iomax; iom++) {
+						cdata[iy*nx*nfreq+ix*nfreq+iom].r = 0.0;
+						cdata[iy*nx*nfreq+ix*nfreq+iom].i = 0.0;
+					}
+				}
+			}
+        }
+
+    }
+
+
+	scl  = df;
+	sign = 1;
+	crmfft(&cdata[0], &rdata[0], optn, nx*ny, nfreq, optn, sign);
+	for (iy = 0; iy < ny; iy++) {
+		for (ix = 0; ix < nx; ix++) {
+			for (i = 0; i < nt; i++) {
+				data[iy*nx*nt+ix*nt+i] = scl*rdata[iy*nx*optn+ix*optn+i];
+			}
+		}
+	}
+
+	free(cdata);
+	free(cwave);
+	free(rdata);
+	free(rwave);
+
+	return;
+}
-- 
GitLab