From aced96cd509cf79cff0e95ad2384a421608b6f80 Mon Sep 17 00:00:00 2001
From: Jan at TU-Delft <J.W.Thorbecke@tudelft.nl>
Date: Thu, 28 Feb 2019 15:54:04 +0100
Subject: [PATCH] added MDD application

---
 MDD/Makefile               |  56 +++
 MDD/atopkge.c              |   1 +
 MDD/computeMatrixInverse.c | 524 +++++++++++++++++++++++
 MDD/deconvolve.c           | 192 +++++++++
 MDD/docpkge.c              |   1 +
 MDD/getFileInfo.c          |   1 +
 MDD/getpars.c              |   1 +
 MDD/mdd.c                  | 593 ++++++++++++++++++++++++++
 MDD/name_ext.c             |   1 +
 MDD/par.h                  |   1 +
 MDD/readShotData.c         | 142 +++++++
 MDD/segy.h                 | 849 +++++++++++++++++++++++++++++++++++++
 MDD/verbosepkg.c           |   1 +
 MDD/wallclock_time.c       |   1 +
 MDD/writeEigen.c           |  55 +++
 Makefile                   |   3 +
 utils/getFileInfo.c        |   3 -
 utils/green3D              | Bin 147424 -> 0 bytes
 18 files changed, 2422 insertions(+), 3 deletions(-)
 create mode 100644 MDD/Makefile
 create mode 120000 MDD/atopkge.c
 create mode 100644 MDD/computeMatrixInverse.c
 create mode 100644 MDD/deconvolve.c
 create mode 120000 MDD/docpkge.c
 create mode 120000 MDD/getFileInfo.c
 create mode 120000 MDD/getpars.c
 create mode 100644 MDD/mdd.c
 create mode 120000 MDD/name_ext.c
 create mode 120000 MDD/par.h
 create mode 100644 MDD/readShotData.c
 create mode 100644 MDD/segy.h
 create mode 120000 MDD/verbosepkg.c
 create mode 120000 MDD/wallclock_time.c
 create mode 100644 MDD/writeEigen.c
 delete mode 100755 utils/green3D

diff --git a/MDD/Makefile b/MDD/Makefile
new file mode 100644
index 0000000..7cb5f2d
--- /dev/null
+++ b/MDD/Makefile
@@ -0,0 +1,56 @@
+# Makefile
+
+include ../Make_include
+
+########################################################################
+# define general include and system library
+ALLINC  = -I.
+LIBS += -mkl -L$L -lgenfft $(LIBSM)
+CFLAGS += -I$(MKLROOT)/include  
+
+#LIBS += -lblas -llapack -L$L -lgenfft $(LIBSM) -lc -lm
+
+all: mdd 
+
+PRG = mdd
+
+SRCC =  $(PRG).c \
+	atopkge.c \
+	docpkge.c \
+	getpars.c \
+	readShotData.c \
+	writeEigen.c \
+	deconvolve.c \
+	computeMatrixInverse.c \
+	getFileInfo.c \
+	verbosepkg.c \
+	name_ext.c \
+	wallclock_time.c
+
+OBJC	= $(SRCC:%.c=%.o)
+
+$(PRG):	$(OBJC) 
+	$(CC) $(LDFLAGS) $(CFLAGS) $(OPTC) -o $(PRG) $(OBJC) $(LIBS)
+
+install: $(PRG) 
+	cp $(PRG) $B
+
+clean:
+		rm -f core $(OBJC) $(OBJM) $(PRG) 
+
+realclean:
+		rm -f core $(OBJC) $(OBJM) $(PRG) $B/$(PRG) 
+
+
+print:	Makefile $(SRC)
+	$(PRINT) $?
+	@touch print
+
+count:
+	@wc $(SRC)
+
+tar:
+	@tar cf $(PRG).tar Makefile $(SRC) && compress $(PRG).tar
+
+
+
diff --git a/MDD/atopkge.c b/MDD/atopkge.c
new file mode 120000
index 0000000..5107e2b
--- /dev/null
+++ b/MDD/atopkge.c
@@ -0,0 +1 @@
+../utils/atopkge.c
\ No newline at end of file
diff --git a/MDD/computeMatrixInverse.c b/MDD/computeMatrixInverse.c
new file mode 100644
index 0000000..a4ba57f
--- /dev/null
+++ b/MDD/computeMatrixInverse.c
@@ -0,0 +1,524 @@
+#include<math.h>
+#include<stdlib.h>
+#include<stdio.h>
+#include <assert.h>
+
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+
+/* Cholesky based inverse */
+void cpotrf_(char *uplo, int *N, float *A, int *lda, int *info);
+void cpotri_(char *uplo, int *N, float *A, int *lda, int *info);
+				
+/* LU based inverse */
+void cgetrf_(int *M, int *N, float *A, int *lda, int *ipvt, int *info);
+void cgetri_(int *N, float *A, int *lda, int *ipvt, float *work, int *lwork, int *info);
+void zgetrf_(int *M, int *N, double *A, int *lda, int *ipvt, int *info);
+void zgetri_(int *N, double *A, int *lda, int *ipvt, double *work, int *lwork, int *info);
+int ilaenv_(int *ispec, char *name, char *opts, int *n1, int *n2, int *n3, int *n4);
+
+/* SVD based inverse */
+void cgesvd_(char *jobu, char *jobvt, int *M, int *N, float *A, int *lda, float *S, float *U, int *ldu, float *vt, int *ldvt, float *work, int *lwork, float *rwork, int *info);
+void zgesvd_(char *jobu, char *jobvt, int *M, int *N, double *A, int *lda, double *S, double *U, int *ldu, double *vt, int *ldvt, double *work, int *lwork, double *rwork, int *info);
+void cgesdd_(char *jobz, int *M, int *N, float *A, int *lda, float *S, float *U, int *ldu, float *vt, int *ldvt, float *work, int *lwork, float *rwork, int *iwork, int *info);
+
+/* Eigenvalues */
+void zgeev_(char *jobvl, char *jobvr, int *N, double *A, int *lda, double *S, double *vl, int *ldvl, double *vr, int *ldvr, 
+			double *work, int *lwork, double *rwork, int *info);
+
+typedef struct { /* complex number */
+	float r,i;
+} complex;
+
+void computeMatrixInverse(complex *matrix, int nxm, int rthm, float eps_a, float eps_r, float numacc, int eigenvalues, float *eigen, int iw, int verbose)
+{
+	int i,j,k,N,lda,info,lwork,*ipvt;
+	float energy;
+	complex tmp, one, *work;
+	char *uplo;
+
+	uplo = "U";
+	lda = N = nxm;
+	one.r = 1.0;
+	one.i = 0.0;
+
+	if (rthm==0) {
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+//		fprintf(stderr,"i=%d energy=%e\n", i, energy);
+			}
+		}
+		if (verbose>1) fprintf(stderr,"energy=%e eps_r=%e eps_a=%e\n", energy, eps_r*energy, eps_a);
+		/* add small value at diagonal */
+#pragma ivdep
+		for (i=0; i<nxm; i++) {
+			tmp.r = eps_r*energy+eps_a;
+			matrix[i*nxm+i].r+=tmp.r;
+		}
+		/* Cholesky based matrix inversion */
+		cpotrf_(uplo, &N, &matrix[0].r, &lda, &info);
+		assert (info == 0);
+		cpotri_(uplo, &N, &matrix[0].r, &lda, &info);
+		assert (info == 0);
+		/* fill lower part of inverse matrix */
+		for (i=0; i<nxm; i++) {
+#pragma ivdep
+			for (j=i+1; j<nxm; j++) {
+					matrix[i*nxm+j].r=matrix[j*nxm+i].r;
+					matrix[i*nxm+j].i=-1.0*matrix[j*nxm+i].i;
+			}
+		}
+
+	}
+	else if (rthm==1) {
+		int ispec, n1, nb;
+		char *name , *opts;
+
+		ispec = 1;
+		name = "CGETRI";
+		n1 = nxm;
+		nb = ilaenv_(&ispec, name, opts, &n1, &n1, &n1, &n1);
+		nb = MAX(1,nb);
+		lwork = nb*nxm;
+		ipvt = (int *)malloc(nxm*sizeof(int));
+		work = (complex *)malloc(lwork*sizeof(complex));
+
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+			}
+		}
+		if (verbose>1) fprintf(stderr,"eps_r=%e eps_a=%e\n", eps_r*energy, eps_a);
+		/* add small value at diagonal */
+		for (i=0; i<nxm; i++) {
+			tmp.r = eps_r*energy+eps_a;
+			matrix[i*nxm+i].r+=tmp.r;
+		}
+		/* LU based matrix inversion */
+		cgetrf_(&nxm, &nxm, &matrix[0].r, &nxm, ipvt, &info);
+		assert (info == 0);
+		cgetri_(&nxm, &matrix[0].r, &nxm, ipvt, &work[0].r, &lwork, &info);
+		assert (info == 0);
+
+		free(ipvt);
+		free(work);
+	}
+	else if (rthm==2) { /* SVD general algorithm most accurate */
+		float *rwork, *S;
+		double S0,Si;
+		complex *U, *VT, a, b;
+		char *jobu, *jobvt;
+		int neig;
+
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+			}
+			fprintf(stderr,"energy = %e\n", energy);
+		}
+		if (verbose>1) fprintf(stderr,"eps_r=%e eps_a=%e\n", eps_r*energy, eps_a);
+		/* add small value at diagonal */
+		for (i=0; i<nxm; i++) {
+			tmp.r = eps_r*energy+eps_a;
+			matrix[i*nxm+i].r+=tmp.r;
+		}
+
+		jobu = "A";
+		jobvt = "A";
+		lda = N = nxm;
+		lwork = N*8;
+		S = (float *)malloc(N*sizeof(float));
+		U = (complex *)malloc(N*N*sizeof(complex));
+		VT = (complex *)malloc(N*N*sizeof(complex));
+		work = (complex *)malloc(lwork*sizeof(complex));
+		rwork = (float *)malloc(5*N*sizeof(float));
+
+		/* Compute SVD */
+		cgesvd_(jobu, jobvt, &N, &N, &matrix[0].r, &lda, S, &U[0].r, &lda, &VT[0].r, 
+			&lda, &work[0].r, &lwork, rwork, &info);
+		assert (info == 0);
+
+		if (eigenvalues) {
+			for (i=0; i<N; i++) {
+					eigen[i] = S[i];
+			}
+		}
+
+		/* Compute inverse */
+		S0 = S[0];
+		neig = 0;
+		for (i=0; i<N; i++) {
+/*			fprintf(stderr,"S[%d] = %e ",i,S[i]);*/
+			Si = S[i];
+			if ((Si/S0) > numacc) { S[i]=1.0/S[i]; neig++; }
+			else S[i] = 0.0;
+			/*S[i]=1.0/(S[i]+eps_r*S[0]);*/
+/*			fprintf(stderr,"S^-1[%d] = %e\n",i,S[i]);*/
+		}
+		if(verbose) fprintf(stderr,"fraction of eigenvalues used = %.3f\n",(float)(neig/((float)N)));
+
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				U[j*N+i].r=S[j]*U[j*N+i].r;
+				U[j*N+i].i=-1.0*S[j]*U[j*N+i].i;
+			}
+		}
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				tmp.r = tmp.i = 0.0;
+				for (k=0; k<N; k++) {
+					a = U[k*N+j];
+					b.r = VT[i*N+k].r;
+					b.i = -1.0*VT[i*N+k].i;
+					tmp.r += (a.r*b.r-a.i*b.i);
+					tmp.i += (a.r*b.i+a.i*b.r);
+				}
+				matrix[j*nxm+i] = tmp;
+			}
+		}
+
+		free(U);
+		free(VT);
+		free(S);
+		free(work);
+		free(rwork);
+	}
+	else if (rthm==3) { /* SVD algorithm Divide and Conquerer less accurate */
+		/* CGESDD*/
+		int *iwork;
+		int neig;
+		float *rwork, *S;
+		double S0,Si;
+		complex *U, *VT, a, b;
+		char *jobz;
+
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+			}
+		}
+		if (verbose>1) fprintf(stderr,"eps_r=%e eps_a=%e\n", eps_r*energy, eps_a);
+		/* add small value at diagonal */
+		for (i=0; i<nxm; i++) {
+			tmp.r = eps_r*energy+eps_a;
+			matrix[i*nxm+i].r+=tmp.r;
+		}
+
+		jobz = "A";
+		lda = N = nxm;
+		lwork = N*N+4*N;
+		S = (float *)malloc(N*sizeof(float));
+		U = (complex *)malloc(N*N*sizeof(complex));
+		VT = (complex *)malloc(N*N*sizeof(complex));
+		work = (complex *)malloc(lwork*sizeof(complex));
+		rwork = (float *)malloc(5*(N*N+N)*sizeof(float));
+		iwork = (int *)malloc(8*N*sizeof(int));
+
+		/* Compute SVD */
+		cgesdd_(jobz, &N, &N, &matrix[0].r, &lda, S, &U[0].r, &lda, &VT[0].r, 
+			&lda, &work[0].r, &lwork, rwork, iwork, &info);
+		assert (info == 0);
+
+		if (eigenvalues) {
+			for (i=0; i<N; i++) {
+					eigen[i] = S[i];
+			}
+		}
+
+		/* Compute inverse */
+		S0 = S[0];
+		neig = 0;
+		for (i=0; i<N; i++) {
+/*			fprintf(stderr,"S[%d] = %e S0 = %e\n ",i,S[i], S0);*/
+			Si = S[i];
+			if ((Si/S0) > numacc) { S[i]=1.0/S[i]; neig++; }
+			else S[i] = 0.0;
+/*			fprintf(stderr,"S^-1[%d] = %e\n",i,S[i]);*/
+		}
+		if(verbose) fprintf(stderr,"fraction of eigenvalues used = %.3f\n",(float)(neig/((float)N)));
+
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				U[j*N+i].r=S[j]*U[j*N+i].r;
+				U[j*N+i].i=-1.0*S[j]*U[j*N+i].i;
+			}
+		}
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				tmp.r = tmp.i = 0.0;
+				for (k=0; k<N; k++) {
+					a = U[k*N+j];
+					b.r = VT[i*N+k].r;
+					b.i = -1.0*VT[i*N+k].i;
+					tmp.r += (a.r*b.r-a.i*b.i);
+					tmp.i += (a.r*b.i+a.i*b.r);
+				}
+				matrix[j*nxm+i] = tmp;
+			}
+		}
+
+		free(U);
+		free(VT);
+		free(S);
+		free(work);
+		free(rwork);
+		free(iwork);
+	}
+	else if (rthm==4) { /* SVD general algorithm double precission most accurate */
+		double *rwork, *S, *U, *VT, ar, ai, br, bi, tmpr, tmpi;
+		double S0,Si,*Mat,*dwork;
+		int neig;
+		char *jobu, *jobvt;
+
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+			}
+		}
+		if (verbose>1) fprintf(stderr,"eps_r=%e eps_a=%e\n", eps_r*energy, eps_a);
+		/* add small value at diagonal */
+		for (i=0; i<nxm; i++) {
+			tmp.r = eps_r*energy+eps_a;
+			matrix[i*nxm+i].r+=tmp.r;
+		}
+
+		Mat = (double *)malloc(2*N*N*sizeof(double));
+		/* convert to doubles */
+		for (i=0; i<nxm; i++) {
+			for (j=0; j<nxm; j++) {
+				Mat[i*2*nxm+j*2] = (double)matrix[i*nxm+j].r;
+				Mat[i*2*nxm+j*2+1] = (double)matrix[i*nxm+j].i;
+			}
+		}
+		jobu = "A";
+		jobvt = "A";
+		lda = N = nxm;
+		lwork = N*8;
+		S = (double *)malloc(N*sizeof(double));
+		U = (double *)malloc(2*N*N*sizeof(double));
+		VT = (double *)malloc(2*N*N*sizeof(double));
+		dwork = (double *)malloc(2*lwork*sizeof(double));
+		rwork = (double *)malloc(5*N*sizeof(double));
+
+		/* Compute SVD */
+		zgesvd_(jobu, jobvt, &N, &N, &Mat[0], &lda, S, &U[0], &lda, &VT[0], 
+			&lda, &dwork[0], &lwork, rwork, &info);
+		assert (info == 0);
+
+		if (eigenvalues) {
+			for (i=0; i<N; i++) {
+					eigen[i] = (float)S[i];
+			}
+		}
+
+		/* Compute inverse */
+		S0 = S[0];
+		neig = 0;
+		for (i=0; i<N; i++) {
+			if (verbose=4) fprintf(stderr,"S[%d] = %e ",i,S[i]);
+			Si = S[i];
+			if ((Si/S0) > numacc) { S[i]=1.0/S[i]; neig++; }
+			else S[i] = 0.0;
+			/*S[i]=1.0/(S[i]+eps_r*S[0]);*/
+/*			fprintf(stderr,"S^-1[%d] = %e\n",i,S[i]);*/
+		}
+		if(verbose) fprintf(stderr,"fraction of eigenvalues used = %.3f\n",(float)(neig/((float)N)));
+
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				U[j*2*N+2*i]=S[j]*U[j*2*N+2*i];
+				U[j*2*N+2*i+1]=-1.0*S[j]*U[j*2*N+2*i+1];
+			}
+		}
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				tmpr = tmpi = 0.0;
+				for (k=0; k<N; k++) {
+					ar = U[k*2*N+2*j];
+					ai = U[k*2*N+2*j+1];
+					br = VT[i*2*N+2*k];
+					bi = -1.0*VT[i*2*N+2*k+1];
+					tmpr += (ar*br-ai*bi);
+					tmpi += (ar*bi+ai*br);
+				}
+				matrix[j*nxm+i].r = (float)tmpr;
+				matrix[j*nxm+i].i = (float)tmpi;
+			}
+		}
+
+		free(U);
+		free(VT);
+		free(S);
+		free(dwork);
+		free(rwork);
+		free(Mat);
+	}
+	else if (rthm==5) { /* double precission LU decomposition */
+		int ispec, n1, nb;
+		char *name , *opts;
+		double *Mat, *dwork;
+
+		ispec = 1;
+		name = "ZGETRI";
+		n1 = nxm;
+		nb = ilaenv_(&ispec, name, opts, &n1, &n1, &n1, &n1);
+		nb = MAX(1,nb);
+		lwork = nb*nxm;
+		ipvt = (int *)malloc(nxm*sizeof(int));
+		dwork = (double *)malloc(2*lwork*sizeof(double));
+		Mat = (double *)malloc(2*N*N*sizeof(double));
+
+		energy=0.0;
+		if (eps_r != 0.0) {
+			for (i=0; i<nxm; i++) {
+				for (j=0; j<nxm; j++) {
+					tmp = matrix[i*nxm+j];
+					energy += sqrt(tmp.r*tmp.r+tmp.i*tmp.i);
+				}
+			}
+		}
+		if (verbose>1) fprintf(stderr,"eps_r=%e eps_a=%e\n", eps_r*energy, eps_a);
+		/* convert to doubles */
+		for (i=0; i<nxm; i++) {
+			for (j=0; j<nxm; j++) {
+				Mat[i*2*nxm+j*2] = (double)matrix[i*nxm+j].r;
+				Mat[i*2*nxm+j*2+1] = (double)matrix[i*nxm+j].i;
+			}
+		}
+
+		/* add small value at diagonal */
+		for (i=0; i<nxm; i++) {
+			Mat[i*2*nxm+i*2]  +=eps_r*energy+eps_a;
+//			Mat[i*2*nxm+i*2+1]+=eps_r*energy+eps_a;
+		}
+
+		/* LU based matrix inversion */
+		zgetrf_(&nxm, &nxm, &Mat[0], &nxm, ipvt, &info);
+		if (info != 0) fprintf(stderr,"error in zgetrf %d at frequency %d\n", info, iw);
+		assert (info == 0);
+		zgetri_(&nxm, &Mat[0], &nxm, ipvt, &dwork[0], &lwork, &info);
+		if (info != 0) fprintf(stderr,"error in zgetri %d at frequency %d\n", info, iw);
+		assert (info == 0);
+
+		/* convert back to floats */
+		for (i=0; i<nxm; i++) {
+			for (j=0; j<nxm; j++) {
+				matrix[i*nxm+j].r = (float)Mat[i*2*nxm+j*2];
+				matrix[i*nxm+j].i = (float)Mat[i*2*nxm+j*2+1];
+			}
+		}
+
+		free(ipvt);
+		free(dwork);
+		free(Mat);
+	}
+	else if (rthm==6) { /* eigenvalue decomposition */
+		int *iwork;
+		int neig;
+		double *work, *vr, *vl;
+		double *rwork, *S, *U, *VT, ar, ai, br, bi, tmpr, tmpi;
+		double S0,Si,nxi,*Mat;
+		char *jobvl, *jobvr;
+
+		jobvl = "V";
+		jobvr = "V";
+		lwork = N*N+2*N;
+		work  = (double *)malloc(2*lwork*sizeof(double));
+		rwork = (double *)malloc(N*2*sizeof(double));
+		vr    = (double *)malloc(2*N*N*sizeof(double));
+		vl    = (double *)malloc(2*N*N*sizeof(double));
+		S = (double *)malloc(2*N*sizeof(double));
+		U = (double *)malloc(2*N*N*sizeof(double));
+
+		Mat = (double *)malloc(2*N*N*sizeof(double));
+		/* convert to doubles */
+		for (i=0; i<nxm; i++) {
+			for (j=0; j<nxm; j++) {
+				Mat[i*2*nxm+j*2] = (double)matrix[i*nxm+j].r;
+				Mat[i*2*nxm+j*2+1] = (double)matrix[i*nxm+j].i;
+			}
+		}
+
+		zgeev_(jobvl, jobvr, &N, Mat, &N, S, vl, &N, vr, &N, 
+			work, &lwork, rwork, &info);
+		assert (info == 0);
+
+		nxi = 1.0/N;
+		for (i=0; i<N; i++) {
+			S[2*i] = (float)S[2*i]*nxi;
+			S[2*i+1] = (float)S[2*i+1]*nxi;
+		}
+		
+		for (i=0; i<N; i++) {
+			for (j=0; j<N; j++) {
+				U[i*2*N+2*j]  = (float)vr[(j)*2*N+2*i];
+				U[i*2*N+2*j+1]  = (float)vr[(i)*2*N+2*j+1];
+			}
+		}
+
+		/* Compute inverse */
+		S0 = S[0];
+		neig = 0;
+		for (i=0; i<N; i++) {
+/*			fprintf(stderr,"S[%d] = %e ",i,S[i]);*/
+			Si = S[i];
+			if ((Si/S0) > numacc) { S[i]=1.0/S[i]; neig++; }
+			else S[i] = 0.0;
+/*			fprintf(stderr,"S^-1[%d] = %e\n",i,S[i]);*/
+		}
+		if(verbose) fprintf(stderr,"fraction of eigenvalues used = %.3f\n",(float)(neig/((float)N)));
+
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				U[j*2*N+2*i]=S[j]*U[j*2*N+2*i];
+				U[j*2*N+2*i+1]=-1.0*S[j]*U[j*2*N+2*i+1];
+			}
+		}
+		for (j=0; j<N; j++) {
+			for (i=0; i<N; i++) {
+				tmpr = tmpi = 0.0;
+				for (k=0; k<N; k++) {
+					ar = U[k*2*N+2*j];
+					ai = U[k*2*N+2*j+1];
+					br = U[i*2*N+2*k];
+					bi = U[i*2*N+2*k+1];
+					tmpr += (ar*br-ai*bi);
+					tmpi += (ar*bi+ai*br);
+				}
+				matrix[j*nxm+i].r = (float)tmpr;
+				matrix[j*nxm+i].i = (float)tmpi;
+			}
+		}
+
+
+		free(work);
+		free(rwork);
+		free(vr);
+		free(Mat);
+		free(S);
+		free(U);
+	}
+
+	return;
+}
+
diff --git a/MDD/deconvolve.c b/MDD/deconvolve.c
new file mode 100644
index 0000000..2ef6d49
--- /dev/null
+++ b/MDD/deconvolve.c
@@ -0,0 +1,192 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include <string.h>
+#include<mkl_cblas.h>
+
+typedef struct { /* complex number */
+	float r,i;
+} complex;
+
+/*
+cblas interface
+void cgemm(const char *transa, const char *transb, const MKL_INT *m, const MKL_INT *n, const MKL_INT *k,
+           const MKL_Complex8 *alpha, const MKL_Complex8 *a, const MKL_INT *lda,
+           const MKL_Complex8 *b, const MKL_INT *ldb, const MKL_Complex8 *beta,
+           MKL_Complex8 *c, const MKL_INT *ldc);
+*/
+
+void cgemm_(char *transA, char *transb, int *M, int *N, int *K, float *alpha, float *A, int *lda, float *B, int *ldb, float *beta, float *C, int *ldc);
+/*
+CGEMM - perform one of the matrix-matrix operations C := alpha*op( A )*op( B ) + beta*C,
+
+Synopsis
+
+SUBROUTINE CGEMM ( TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC )
+
+CHARACTER*1 TRANSA, TRANSB
+
+INTEGER M, N, K, LDA, LDB, LDC
+
+COMPLEX ALPHA, BETA
+
+COMPLEX A( LDA, * ), B( LDB, * ), C( LDC, * )
+
+TRANSA - CHARACTER*1. On entry, TRANSA specifies the form of op( A ) to be used in the matrix multiplication as follows:
+
+TRANSA = 'N' or 'n', op( A ) = A.
+
+TRANSA = 'T' or 't', op( A ) = A'.
+
+TRANSA = 'C' or 'c', op( A ) = conjg( A' ).
+
+Unchanged on exit.
+
+TRANSB - CHARACTER*1. On entry, TRANSB specifies the form of op( B ) to be used in the matrix multiplication as follows:
+
+TRANSB = 'N' or 'n', op( B ) = B.
+
+TRANSB = 'T' or 't', op( B ) = B'.
+
+TRANSB = 'C' or 'c', op( B ) = conjg( B' ).
+
+Unchanged on exit.
+
+M - INTEGER.
+On entry, M specifies the number of rows of the matrix op( A ) and of the matrix C. M must be at least zero. Unchanged on exit.
+
+N - INTEGER.
+On entry, N specifies the number of columns of the matrix op( B ) and the number of columns of the matrix C. N must be at least zero. Unchanged on exit.
+
+K - INTEGER.
+On entry, K specifies the number of columns of the matrix op( A ) and the number of rows of the matrix op( B ). K must be at least zero. Unchanged on exit.
+
+ALPHA - COMPLEX .
+On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
+
+A - COMPLEX array of DIMENSION ( LDA, ka ), where ka is k when TRANSA = 'N' or 'n', and is m otherwise. Before entry with TRANSA = 'N' or 'n', the leading m by k part of the array A must contain the matrix A, otherwise the leading k by m part of the array A must contain the matrix A. Unchanged on exit.
+
+LDA - INTEGER.
+On entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When TRANSA = 'N' or 'n' then LDA must be at least max( 1, m ), otherwise LDA must be at least max( 1, k ). Unchanged on exit.
+
+B - COMPLEX array of DIMENSION ( LDB, kb ), where kb is n when TRANSB = 'N' or 'n', and is k otherwise. Before entry with TRANSB = 'N' or 'n', the leading k by n part of the array B must contain the matrix B, otherwise the leading n by k part of the array B must contain the matrix B. Unchanged on exit.
+
+LDB - INTEGER.
+On entry, LDB specifies the first dimension of B as declared in the calling (sub) program. When TRANSB = 'N' or 'n' then LDB must be at least max( 1, k ), otherwise LDB must be at least max( 1, n ). Unchanged on exit.
+
+BETA - COMPLEX .
+On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. Unchanged on exit.
+
+C - COMPLEX array of DIMENSION ( LDC, n ).
+Before entry, the leading m by n part of the array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. On exit, the array C is overwritten by the m by n matrix ( alpha*op( A )*op( B ) + beta*C ).
+
+LDC - INTEGER.
+On entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 1, m ).  Unchanged on exit.
+
+*/
+
+void computeMatrixInverse(complex *matrix, int nxm, int rthm, float eps_a, float eps_r, float numacc, int eigenvalues, float *eigen, int iw, int verbose);
+
+int deconvolve(complex *cA, complex *cB, complex *cC, complex *oBB, int nfreq, int nblock, size_t nstationA, size_t nstationB, float eps_a, float eps_r, float numacc, int eigenvalues, float *eigen, int rthm, int mdd, int conjgA, int conjgB, int verbose)
+{
+	int istation, jstation, i, j, k, icc, ibb, NA, NB, NC, nshots;
+	size_t  iwnA, iw, iwnB, iwAB, iwBB;
+	complex *AB, *BB;
+	char *transa, *transb,*transN;
+	complex beta, alpha, tmp, a, b;
+
+	AB = (complex *)calloc(nstationA*nstationB,sizeof(complex));
+	BB = (complex *)calloc(nstationB*nstationB,sizeof(complex));
+
+	if (conjgA == 1) transa = "C";
+	else if (conjgA == 0) transa = "N";
+	else transa = "T";
+	if (conjgB == 1) transb = "C";
+	else if(conjgB ==0) transb = "N";
+	else transb = "T";
+	transN = "N";
+	alpha.r = 1.0; alpha.i = 0.0;
+	beta.r = 0.0; beta.i = 0.0;
+	nshots = nblock;
+	NA = nstationA;
+	NB = nstationB;
+	if (conjgA) NC = nshots;
+	else NC = nstationB;
+
+//	if (verbose) fprintf(stderr,"transa=%s transb=%s %d %d %d\n", transa, transb, NA, NB, nshots);
+
+#pragma omp for schedule(static) \
+private(iw, iwnA, iwnB, iwAB, iwBB) 
+	for (iw=0; iw< nfreq; iw++) {
+
+		iwnA = iw*nstationA*nshots;
+		iwnB = iw*nstationB*nshots;
+		iwAB = iw*NC*NC;
+		if (mdd==0) { /* Correlation */
+				/* cblas_cgemm(CblasRowMajor,CblasNoTrans, CblasConjTrans, NA, NB, nshots, &alpha.r, 
+				&cA[iwnA].r, NA, 
+				&cB[iwnB].r, NB, &beta.r,
+				&cC[iwAB].r, NC); */
+			cgemm_(transa, transb, &NA, &NB, &nshots, &alpha.r, 
+				&cA[iwnA].r, &NA, 
+				&cB[iwnB].r, &NB, &beta.r, 
+				&cC[iwAB].r, &NC); 	
+//				memcpy(&cC[iwAB].r, &cB[iwnA].r, sizeof(float)*2*nstationA*nshots);
+		}
+		else if (mdd==1) { /* Multi Dimensional deconvolution */
+            /* compute AB^h and BB^h */
+			iwBB = iw*nstationB*nstationB;
+			cgemm_(transa, transb, &NA, &NB, &nshots, &alpha.r, 
+				&cA[iwnA].r, &NA, 
+				&cB[iwnB].r, &NB, &beta.r, 
+				&AB[0].r, &NA);
+	
+			cgemm_(transa, transb, &NB, &NB, &nshots, &alpha.r, 
+				&cB[iwnB].r, &NB, 
+				&cB[iwnB].r, &NB, &beta.r, 
+				&BB[0].r, &NB);
+	
+			if (oBB!=NULL) memcpy(&oBB[iwBB].r, &BB[0].r, nstationB*nstationB*sizeof(complex));
+
+			/* compute inverse of BB^h as [BB^h+eps]^-1 */
+			computeMatrixInverse(BB, NB, rthm, eps_a, eps_r, numacc, eigenvalues, &eigen[iw*NB], iw, verbose);
+	
+			/* multiply with AB to get Least Squares inversion */
+			/* C = A/B => AB^h/(BB^h+eps) */
+			cgemm_(transa, transa, &NA, &NB, &NB, &alpha.r, 
+				&AB[0].r, &NA, 
+				&BB[0].r, &NB, &beta.r, 
+				&cC[iwAB].r, &NA);
+		}
+		else if (mdd==2) { /* Multi Dimensional deconvolution, but AB^H en BB^H already computed */
+
+			memcpy(&BB[0].r, &cB[iwnB].r, nstationB*nshots*sizeof(complex));
+
+			computeMatrixInverse(BB, NB, rthm, eps_a, eps_r, numacc, eigenvalues, &eigen[iw*NB], iw, verbose);
+	
+			transN = "N";
+			transN = "N";
+			cgemm_(transN, transN, &NA, &NB, &NB, &alpha.r, 
+				&cA[iwnA].r, &NA, 
+				&BB[0].r, &NB, &beta.r, 
+				&cC[iwAB].r, &NA);
+		}
+		else if (mdd==3) { /* Copy matrix A or B to memory for testing purposes */
+			memcpy(&cC[iwAB].r, &cA[iwnA].r, sizeof(complex)*nstationA*nshots);
+		}
+		else if (mdd==4) {
+			memcpy(&cC[iwAB].r, &cB[iwnB].r, sizeof(complex)*nstationB*nshots);
+		}
+		else if (mdd==5) {
+			cblas_cdotu_sub(nshots, &cA[iwnA].r, NA, &cB[iwnB].r, NB, &cC[iwnA].r);
+		}
+
+	}
+
+	free(AB);
+	free(BB);
+
+	return 0;
+}
+
diff --git a/MDD/docpkge.c b/MDD/docpkge.c
new file mode 120000
index 0000000..5384bb3
--- /dev/null
+++ b/MDD/docpkge.c
@@ -0,0 +1 @@
+../utils/docpkge.c
\ No newline at end of file
diff --git a/MDD/getFileInfo.c b/MDD/getFileInfo.c
new file mode 120000
index 0000000..ae38ea2
--- /dev/null
+++ b/MDD/getFileInfo.c
@@ -0,0 +1 @@
+../utils/getFileInfo.c
\ No newline at end of file
diff --git a/MDD/getpars.c b/MDD/getpars.c
new file mode 120000
index 0000000..fa7dc33
--- /dev/null
+++ b/MDD/getpars.c
@@ -0,0 +1 @@
+../utils/getpars.c
\ No newline at end of file
diff --git a/MDD/mdd.c b/MDD/mdd.c
new file mode 100644
index 0000000..93a6e27
--- /dev/null
+++ b/MDD/mdd.c
@@ -0,0 +1,593 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <math.h>
+#include "par.h"
+#include "segy.h"
+
+#define MIN(x,y) ((x) < (y) ? (x) : (y))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))
+
+#ifdef _OPENMP
+int omp_get_thread_num(void);
+#endif
+double wallclock_time(void);
+void name_ext(char *filename, char *extension);
+
+typedef struct { /* complex number */
+        float r,i;
+} complex;
+
+void cr1fft(complex *cdata, float *rdata, int n, int sign);
+int optncr(int n);
+
+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 readShotData(char *filename, float xmin, float dx, float *xrcv, float *xsrc, int *xnx, complex *cdata, int nw, int nw_low, int ngath, int nx, int nxm, int ntfft, float alpha, float scl, float conjg, int transpose, int verbose);
+
+int deconvolve(complex *cA, complex *cB, complex *cC, complex *oBB, int nfreq, int nblock, size_t nstationA, size_t nstationB, float eps_a, float eps_r, float numacc, int eigenvalues, float *eigen, int rthm, int mdd, int conjgA, int conjgB, int verbose);
+
+void writeEigen(char *file_out, float df, int nw_low, int nw_high, int nw, float *eigen, int nx, float dx, float xmin);
+void writeDatamatrix(char *file_out, complex *P, int ntfft, int ntc, int Nrec, int Nshot, int nfreq, int nw_low, float dt, int verbose);
+
+void gausstaper(float *taper, float dx, int n, float enddecay);
+
+/**************
+* ntc output samples of deconvolution result
+* note that nt (the number of samples read by the IO routine)
+* should be 2*ntc and a number efficient for FFT's
+*/
+
+/*********************** self documentation **********************/
+char *sdoc[] = {
+" ",
+" mdd - multi-dimensional deconvolution (OpenMP)",
+"  ",
+" mdd file_A= file_B= file_out= [optional parameters]",
+"  ",
+" Required parameters: ",
+" ",
+"   file_A= .................. name of file(s) which store the data in location A",
+"   file_B= .................. name of file(s) which store the data in location B",
+" ",
+" Optional parameters: ",
+" ",
+"   ntc=nt ................... number of output time samples",
+"   ntfft=nt ................. number of samples used in fft",
+"   fmin=0 ................... minimum frequency",
+"   fmax=70 .................. maximum frequency to use in deconvolution",
+" INPUT DEFINITION ",
+"   cjA=1 .................... -1 => apply complex conjugate to A",
+"   sclA=1 ................... apply scaling factor to A",
+"   tranposeA=0 .............. apply transpose to A",
+"   cjB=1 .................... -1 => apply complex conjugate to B",
+"   sclB=1 ................... apply scaling factor to B",
+"   tranposeB=0 .............. apply transpose to B",
+" MATRIX INVERSION CALCULATION ",
+"   conjgA=0 ................. apply complex conjugate-transpose to A",
+"   conjgB=1 ................. apply complex conjugate-transpose to B",
+"   rthm=0 ................... see below for options",
+"   eps_a=1e-5 ............... absolute stabilization factor for LS",
+"   eps_r=1e-4 ............... relative stabilization factor for LS",
+"   numacc=1e-6 .............. numerical accurary for SVD",
+"   ntap=0 ................... number of taper points matrix",
+"   ftap=0 ................... percentage for tapering",
+"   tap=0 .................... type of taper: 0=cos 1=exp",
+"   eigenvalues= ............. write SVD eigenvalues to file ",
+"   mdd=1 .................... mdd=0 => computes correlation ",
+" OUTPUT DEFINITION ",
+"   file_out= ................ output base name ",
+"   causal=1 ................. output causal(1), non-causal(2), both(3), or summed(4)",
+"   one_file=1 ............... write all shots into one file ",
+"   file_dmat= ............... if defined writes matrix in frequency domain",
+"   verbose=0 ................ silent option; >0 displays info",
+" ",
+" Notes: ",
+"    ntc output samples of deconvolution result",
+"    nt (the number of samples read by the IO routine)",
+" ",
+" Options for mdd= ",
+"     2 = A/(B + eps) ",
+"     1 = A*B^H/(B*B^H + eps) ",
+"     0 = A*B^H ",
+" ",
+" Option for rthm= ",
+"     0 = Least Squares QR based inversion",
+"     1 = Least Squares LU based inversion",
+"     2 = SVD inversion single precision",
+"     3 = SVD divide-and-conquer method",
+"     4 = SVD inversion double precision",
+"     5 = Least Squares LU based inversion double precision",
+"     6 = Eigenvalue based (not yet working)",
+" ",
+" author  : Jan Thorbecke : 2008 (j.w.thorbecke@tudelft.nl)",
+" ",
+NULL};
+/**************** end self doc ***********************************/
+
+int main (int argc, char **argv)
+{
+	FILE    *fpin, *fpout;
+	int		i, j, k, ret, nshots, ntraces;
+	int		size, n1, n2, ntfft, nf, causal;
+	int     verbose, fullcorr, ncorstat, err;
+	int     nt, nc, ncc, ntc, nshotA, nshotB;
+	size_t  nstationA, nstationB, nfreq, istation, jstation, iw;
+	int     pgsz, istep,jstep;
+	int     mdd;
+	int		conjgA, conjgB;
+	int 	ntap, nxm, ngath, nw, nw_low, nw_high, eigenvalues, rthm, combine, distance;
+	size_t  nwrite, cdatainSize, datainSize, cdataoutSize, stationSize, is;
+	float	dx, dt, fmin, fmax, df, eps_r, eps_a, ftap, numacc;
+	float	*rC, scl, *rl, *eigen;
+	float   f1, f2, d1, d2, sclsxgx, xmin, xmax, alpha, wshot, wpi, wrec;
+ 	float   *xrcvA, *xsrcA, *xrcvB, *xsrcB;
+	float	*taper;
+    int     *xnx;
+	float sclA,sclB, cjA, cjB;
+	int  transposeA, transposeB;
+
+
+	complex *cdataout;
+	double  t0, t1, t2, t3, tinit, twrite, tread, tdec, tfft;
+	char	*file_A, *file_B, *file_out, *file_dmat, filename[1024], number[128], *rthmName;
+	int     pe=0, root_pe=0, npes=1, ipe, size_s, one_file;
+	complex *cA, *cB, *oBB;
+	segy *hdr;
+
+	t0 = wallclock_time();
+	initargs(argc, argv);
+	requestdoc(1);
+
+	if (!getparint("verbose", &verbose)) verbose = 0;
+	if (!getparstring("file_A", &file_A)) file_A=NULL;
+	assert(file_A != NULL);
+	if (!getparstring("file_B", &file_B)) file_B=NULL;
+	assert(file_B != NULL);
+	if (!getparstring("file_out", &file_out)) file_out=NULL;
+	if (!getparstring("file_dmat", &file_dmat)) file_dmat=NULL;
+	if (!getparint("one_file", &one_file)) one_file = 1;
+
+	if (!getparfloat("fmin", &fmin)) fmin = 0.0;
+	if (!getparint("rthm", &rthm)) rthm = 0;
+	if (!getparint("combine", &combine)) combine = 0;
+	if (!getparint("causal", &causal)) causal = 1;
+	if (!getparint("ntap", &ntap)) ntap = 0;
+	if (!getparfloat("ftap", &ftap)) ftap = 0.;
+	if (!getparfloat("eps_r", &eps_r)) eps_r = 1e-4;
+	if (!getparfloat("eps_a", &eps_a)) eps_a = 1e-5;
+	if (!getparfloat("numacc", &numacc)) numacc = 1e-6;
+	if (!getparint("eigenvalues", &eigenvalues)) eigenvalues = 0;
+	if (!getparint("mdd", &mdd)) mdd = 1;
+
+	if (!getparint("transposeA", &transposeA)) transposeA = 0;
+	if (!getparfloat("sclA", &sclA)) sclA = 1.;
+	if (!getparfloat("cjA", &cjA)) cjA = 1.;
+	if (!getparint("transposeB", &transposeB)) transposeB = 0;
+	if (!getparfloat("sclB", &sclB)) sclB = 1.;
+	if (!getparfloat("cjB", &cjB)) cjB = 1.;
+
+#ifdef _OPENMP
+	npes = atoi(getenv("OMP_NUM_THREADS"));
+	assert(npes != 0);
+	if (verbose) fprintf(stderr,"Number of OpenMP thread's is %d\n", npes);
+#else
+   npes=1;
+#endif
+
+/* get information from input files */
+
+	nshotA = 0;
+	getFileInfo(file_A, &n1, &n2, &nshotA, &d1, &d2, &f1, &f2, &xmin, &xmax, &sclsxgx, &nxm);
+	if (!getparint("nt", &nt)) nt=n1;
+	if (!getparint("ntc", &ntc)) ntc = n1;
+	if (!getparint("conjgA", &conjgA)) conjgA = 0;
+	if (!getparint("conjgB", &conjgB)) conjgB = 1;
+	if (!getparfloat("dt", &dt)) dt = d1;
+	if (!getparfloat("dx", &dx)) dx = d2;
+	if (!getparfloat("fmax", &fmax)) fmax = 1.0/(2.0*dt);
+
+	nstationA = n2;
+
+	nshotB = 0;
+	getFileInfo(file_B, &n1, &n2, &nshotB, &d1, &d2, &f1, &f2, &xmin, &xmax, &sclsxgx, &nxm);
+	assert( n1 == nt);
+	nstationB = n2;
+	assert( nshotA == nshotB);
+
+/*================ initializations ================*/
+
+	tinit = 0.0;
+	tfft  = 0.0;
+	tread = 0.0;
+	tdec = 0.0;
+
+    if (!getparint("ntfft", &ntfft)) ntfft = nt;
+	ntfft = optncr(ntfft);
+	nf    = ntfft/2+1;
+	df    = 1.0/(ntfft*dt);
+    nw_high  = MIN( (int)((fmax)/df), nf );
+    nw_low   = MAX( (int)(fmin/df), 1 );
+    nw       = nw_high - nw_low + 1;
+	nfreq = MIN(nf,nw);
+
+/* scaling of the results by Johno van IJsseldijk */ 
+    if (mdd == 0) scl = dx*dt/((float)ntfft); //correlation
+    else if (mdd==1) scl = 1/((float)ntfft)/dx/dt; // MDD
+    else if (mdd==2) scl = 1/((float)ntfft)/dx/dt; // MDD with A and B already computed (NOT TESTED)
+    else scl = 1.0/((float)ntfft); // Passing A or B through
+
+/* allocate in shared memory the in- and output data */
+
+	jstep        = nfreq*nshotA;
+	cdatainSize  = nfreq*nshotA*sizeof(complex);
+	cdataoutSize = nstationA*nstationB*nfreq*sizeof(complex);
+	cdataout     = (complex *)malloc(cdataoutSize);
+	cA           = (complex *)malloc(nstationA*cdatainSize);
+	cB           = (complex *)malloc(nstationB*cdatainSize);
+	taper        = (float *)malloc(2*nstationB*sizeof(float));
+	if (file_dmat!=NULL) oBB = (complex *)malloc(nstationB*nstationB*nfreq*sizeof(complex));
+	else oBB = NULL;
+	assert(cdataout != NULL);
+	assert(cA != NULL);
+	assert(cB != NULL);
+
+
+/* for first touch binding of allocated memory */
+#pragma omp parallel for schedule(static) private(jstation,is) default(shared)
+	for (jstation=0; jstation<nstationB; jstation++) {
+		stationSize=nstationA*nfreq*sizeof(complex);
+		is = jstation*nstationA*nfreq;
+		memset(&cdataout[is],0,stationSize);
+		memset(&cB[jstation*jstep],0,jstep*sizeof(complex));
+	}
+
+#pragma omp parallel for schedule(static) private(jstation) default(shared)
+	for (jstation=0; jstation<nstationA; jstation++) {
+		memset(&cA[jstation*jstep],0,jstep*sizeof(complex));
+	}
+
+    if (verbose) {
+        if (rthm==0) rthmName="Cholesky";
+        else if (rthm==1) rthmName="LU";
+        else if (rthm==2) rthmName="SVD single precision";
+        else if (rthm==3) rthmName="SVD divide-and-conquer";
+        else if (rthm==4) rthmName="SVD double precision";
+        else if (rthm==5) rthmName="LU double precision";
+        else if (rthm==6) rthmName="Eigenvalue double precision";
+        fprintf(stderr,"--- Input Information ---\n");
+        fprintf(stderr,"  dt nt ............ : %f : %d\n", dt, nt);
+        fprintf(stderr,"  dx ............... : %f\n", dx);
+        fprintf(stderr,"  nshotA ........... : %d\n", nshotA );
+        fprintf(stderr,"  nstationA ........ : %ld\n", nstationA );
+        fprintf(stderr,"  nshotB ........... : %d\n", nshotB );
+        fprintf(stderr,"  nstationB ........ : %ld\n", nstationB );
+        fprintf(stderr,"  number t-fft ..... : %d\n", ntfft);
+		fprintf(stderr,"  Input  size ...... : %ld MB\n", (nstationA+nstationB)*cdatainSize/(1024*1024));
+		fprintf(stderr,"  Output size ...... : %ld MB\n", (cdataoutSize/((size_t)1024*1024)));
+        fprintf(stderr,"  taper points ..... : %d (%.2f %%)\n", ntap, ftap*100.0);
+        fprintf(stderr,"  process number ... : %d\n", pe);
+        fprintf(stderr,"  fmin ............. : %.3f (%d)\n", fmin, nw_low);
+        fprintf(stderr,"  fmax ............. : %.3f (%d)\n", fmax, nw_high);
+        fprintf(stderr,"  nfreq  ........... : %ld\n", nfreq);
+        if (mdd) fprintf(stderr,"  Matrix inversion . : %s\n", rthmName);
+        else  fprintf(stderr,"  Correlation ...... : \n");
+        fprintf(stderr,"  eps_r ............ : %e\n", eps_r);
+        fprintf(stderr,"  eps_a ............ : %e\n", eps_a);
+        fprintf(stderr,"  mdd .............. : %d\n", mdd);
+    }
+
+	t1 = wallclock_time();
+	tinit += t1-t0;
+
+/* read in first nt samples, and store in data */
+
+    xsrcA     = (float *)calloc(nshotA,sizeof(float));
+    xrcvA     = (float *)calloc(nshotA*nstationA,sizeof(float));
+    xnx       = (int *)calloc(nshotA,sizeof(int));
+	alpha = 0.0;
+    readShotData(file_A, xmin, dx, xrcvA, xsrcA, xnx, cA, nw, nw_low, nshotA, nstationA, nstationA, ntfft, alpha, sclA, cjA, transposeA, verbose);
+
+    xsrcB     = (float *)calloc(nshotB,sizeof(float));
+    xrcvB     = (float *)calloc(nshotB*nstationB,sizeof(float));
+	alpha = 0.0;
+    readShotData(file_B, xmin, dx, xrcvB, xsrcB, xnx, cB, nw, nw_low, nshotB, nstationB, nstationB, ntfft, alpha, sclB, cjB, transposeB, verbose);
+
+	//cB = cA;
+
+	eigen = (float *)malloc(nfreq*nstationB*sizeof(float));
+
+	t2 = wallclock_time();
+	tread += t2-t1;
+
+#pragma omp parallel default(none) \
+	private(t1,t2,pe) \
+	shared(cA,cB,eigen,eigenvalues,numacc,eps_r,eps_a) \
+	shared(nstationA,nstationB,verbose,cdatainSize) \
+	shared(rthm,mdd,nfreq,nshotA,conjgA,conjgB) \
+	shared(cdataout,oBB)
+{ /* start of OpenMP parallel part */
+
+
+#ifdef _OPENMP
+	pe = omp_get_thread_num();
+#endif
+
+	/* compute deconvolution */
+	deconvolve(cA, cB, cdataout, oBB, nfreq, nshotA, nstationA, nstationB, 
+		eps_a, eps_r, numacc, eigenvalues, eigen, rthm, mdd, conjgA, conjgB, verbose);
+
+} /*end of parallel OpenMP part */
+
+	fflush(stderr);
+	fflush(stdout);
+
+	t3 = wallclock_time();
+	tdec += t3-t2;
+	if (verbose>=1) {
+		fprintf(stderr,"************* PE %d ************* \n", pe);
+		fprintf(stderr,"CPU-time read data         = %.3f\n", tread);
+		fprintf(stderr,"CPU-time deconvolution     = %.3f\n", tdec);
+	}
+
+/* for writing out combined shots cA */
+	free(cA);
+	free(cB);
+
+/* Inverse FFT of deconvolution results */
+/* This is done for every deconvolution component seperately */
+
+	rC = (float *)malloc(nstationA*ntc*sizeof(float));
+	assert(rC != NULL);
+
+/*
+#pragma omp parallel default(none) \
+	private(istation,jstation,pe,j,i,t1,t2,t3,hdr,rl) \
+	private(filename, k, fpout, nwrite, cA, iw,number) \
+	shared(tfft) \
+	shared(rC,dt,ntc,file_out) \
+	shared(nt,nstationA,nstationB,verbose,err,ntfft,t0,twrite) \
+	shared(nfreq,stderr,stdout, nshotA, nshotB, nw_low, causal) \
+	shared(cdataout,istep,jstep,one_file)
+*/
+//{ /* start of OpenMP parallel part */
+//#ifdef _OPENMP
+//	pe = omp_get_thread_num();
+//#else 
+    pe = 0;
+//#endif
+
+	rl  = (float *)calloc(ntfft,sizeof(float));
+	cA  = (complex *)calloc(ntfft,sizeof(complex));
+	hdr = (segy *)calloc(1,sizeof(segy));
+
+/* for writing out combined shots cA */
+
+	tfft   = 0.0;
+	twrite = 0.0;
+	if (one_file && pe==0) {
+		strcpy(filename, file_out);
+		if (verbose>2) fprintf(stderr,"writing all output shot into file %s\n", filename);
+		fpout = fopen( filename, "w+" );
+	}
+//#pragma omp for
+	for (jstation=0; jstation<nstationB; jstation++) {
+		/* FFT */
+		t1 = wallclock_time();
+		for (istation=0; istation<nstationA; istation++) {
+			memset(cA,0,ntfft*sizeof(complex));
+			for (iw=0;iw<nfreq;iw++) {
+				cA[iw+nw_low].r = cdataout[(iw*nstationB+jstation)*nstationA+istation].r*scl;
+				cA[iw+nw_low].i = cdataout[(iw*nstationB+jstation)*nstationA+istation].i*scl;
+			}
+			cr1fft(cA, rl, ntfft, 1);
+			memcpy(&rC[istation*ntc],rl,ntc*sizeof(float));
+
+			if (causal==1) {
+				memcpy(&rC[istation*ntc],rl,ntc*sizeof(float));
+			}
+			else if (causal==2) {
+				rC[istation*ntc] = rl[0];
+				for (j=1;j<ntc; j++) {
+					rC[istation*ntc+j] = rl[ntfft-j];
+				}
+			}
+			else if (causal==3) {
+				for (j=1;j<=(ntc/2); j++) {
+					rC[istation*ntc+ntc/2-j] = rl[ntfft-j];
+				}
+				for (j=ntc/2;j<ntc; j++) {
+					rC[istation*ntc+j] = rl[j-ntc/2];
+				}
+			}
+			else if (causal==4) {
+				rC[istation*ntc] = rl[0];
+				for (j=1;j<ntc; j++) {
+					rC[istation*ntc+j] = rl[ntfft-j] + rl[j];
+				}
+			}
+		}
+		t2 = wallclock_time();
+		tfft += t2-t1;
+
+		if (pe == 0) {
+			/* write data to file */
+			hdr[0].d1  = dt;
+			if (causal == 3) hdr[0].f1=-0.5*ntc*dt;
+			else hdr[0].f1=0.0;
+			hdr[0].dt  = (int)(dt*1000000);
+			hdr[0].ns  = ntc;
+			hdr[0].fldr  = jstation+1;
+			hdr[0].scalco = -1000;
+			hdr[0].scalel = -1000;
+			hdr[0].trid = 1;
+			hdr[0].f2 = f2;
+			hdr[0].d2 = dx;
+//			hdr[0].trwf = nstationA;
+			hdr[0].sx = NINT((f2+dx*jstation)*1000);
+			hdr[0].ntr = nstationA*nstationB;
+			if (!one_file) {
+				strcpy(filename, file_out);
+				sprintf(number,"Station%03d\0",jstation+1);
+				name_ext(filename, number);
+				if (verbose>3) fprintf(stderr,"writing to file %s\n", filename);
+				fpout = fopen( filename, "w+" );
+			}
+			for (istation=0; istation<nstationA; istation++) {
+				hdr[0].tracl = istation+1;
+				hdr[0].gx = NINT((f2+dx*istation)*1000);
+				hdr[0].offset = NINT((f2+dx*istation));
+				nwrite = fwrite( hdr, 1, TRCBYTES, fpout );
+				assert (nwrite == TRCBYTES);
+				nwrite = fwrite( &rC[istation*ntc], sizeof(float), ntc, fpout );
+				assert (nwrite == ntc);
+			}
+			if (!one_file) {
+				fflush(fpout);
+				fclose(fpout);
+			}
+			t3 = wallclock_time();
+			twrite += t3-t2;
+//			fprintf(stderr,"write %f and fft %f for %d\n",twrite, tfft, jstation);
+		}
+	}
+	if (one_file && pe==0) {
+		fflush(fpout);
+		fclose(fpout);
+	}
+	free(cA);
+	free(rl);
+//}
+
+	free(rC);
+	free(cdataout);
+
+	if (eigenvalues) {
+		writeEigen(file_out, df, nw_low, nw_high, nfreq, eigen, nstationB, dx, f2);
+	}
+	free(eigen);
+
+	/* if file_dmat write frequency slices of matrix */
+	if (file_dmat!=NULL) {
+		t2 = wallclock_time();
+		strcpy(filename, file_dmat);
+		fpout = fopen( filename, "w+" );
+		hdr[0].d1  = df;
+		hdr[0].dt  = (int)(df*1000000);
+		hdr[0].ns  = nfreq;
+		hdr[0].trid  = 111;
+/*
+		for (iw=0;iw<nfreq;iw++) {
+			hdr[0].fldr  = iw+1;
+//			sprintf(number,"Station%03d\0",jstation+1);
+//			name_ext(filename, number);
+//			if (verbose>3) fprintf(stderr,"writing to file %s\n", filename);
+//			fpout = fopen( filename, "w+" );
+			twrite = 0.0;
+			for (istation=0; istation<nstationB; istation++) {
+				hdr[0].tracl = istation+1;
+				nwrite = fwrite( hdr, 1, TRCBYTES, fpout );
+				assert (nwrite == TRCBYTES);
+//				nwrite = fwrite( &oBB[iw*nstationB*nstationB+istation].r, sizeof(complex), nfreq, fpout );
+//				assert (nwrite == nfreq);
+			}
+		}
+*/
+		fflush(fpout);
+		fclose(fpout);
+		t3 = wallclock_time();
+		twrite += t3-t2;
+		free(oBB);
+	}
+	free(hdr);
+
+/*================ end ================*/
+
+	if (verbose) {
+		t3 = wallclock_time();
+		fprintf(stderr,"CPU-time inverse FFT's     = %.3f\n", tfft);
+		fprintf(stderr,"CPU-time write data        = %.3f\n", twrite);
+		fprintf(stderr,"CPU-time initialization    = %.3f\n", tinit);
+		fprintf(stderr,"Total CPU-time             = %.3f\n", t3-t0);
+	}
+
+	return 0;
+}
+
+void gausstaper(float *taper, float dx, int n, float enddecay)
+{
+	int 	ix, hn;
+	float 	dist, sigma2;
+
+	if (enddecay > 0.999) {
+		for (ix = 0; ix < n; ix++) taper[ix] = 1.0;
+		return;
+	}
+
+	hn = (n-1)/2;
+	sigma2 = (hn*dx*hn*dx)/(log(enddecay));
+
+	for (ix = 0; ix <= hn; ix++) {
+		dist = ix*dx;
+		taper[hn+ix] = exp(dist*dist/sigma2);
+	}
+
+	for (ix = 0; ix < hn; ix++) 
+		taper[ix] = taper[n-1-ix];
+
+	return;
+}
+
+void writeDatamatrix(char *file_out, complex *P, int ntfft, int ntc, int Nrec, int Nshot, int nfreq, int nw_low, float dt, int verbose)
+{
+	FILE *fpout;
+	char filename[1024];
+	size_t  nwrite;
+	int jstation, istation, iw;
+	float *rl, *rC;
+	complex *cA;
+	segy *hdr;
+
+	rC = (float *)malloc(Nrec*ntc*sizeof(float));
+	rl  = (float *)calloc(ntfft,sizeof(float));
+	cA  = (complex *)calloc(ntfft,sizeof(complex));
+	hdr = (segy *)calloc(1,sizeof(segy));
+
+/* for writing out combined shots cA */
+
+	strcpy(filename, file_out);
+	if (verbose>2) fprintf(stderr,"writing all output shot into file %s\n", filename);
+	fpout = fopen( file_out, "w+" );
+	for (jstation=0; jstation<Nshot; jstation++) {
+
+		/* FFT */
+		for (istation=0; istation<Nrec; istation++) {
+			memset(cA,0,ntfft*sizeof(complex));
+			for (iw=0;iw<nfreq;iw++) {
+				cA[iw+nw_low] = P[(iw*Nshot+jstation)*Nrec+istation];
+			}
+			cr1fft(cA, rl, ntfft, 1);
+			memcpy(&rC[istation*ntc],rl,ntc*sizeof(float));
+		}
+
+		/* write data to file */
+		hdr[0].d1  = dt;
+		hdr[0].dt  = (int)(dt*1000000);
+		hdr[0].ns  = ntc;
+		hdr[0].fldr  = jstation+1;
+		for (istation=0; istation<Nrec; istation++) {
+			hdr[0].tracl = istation+1;
+			nwrite = fwrite( hdr, 1, TRCBYTES, fpout );
+			assert (nwrite == TRCBYTES);
+			nwrite = fwrite( &rC[istation*ntc], sizeof(float), ntc, fpout );
+			assert (nwrite == ntc);
+		}
+	}
+
+	free(cA);
+	free(rl);
+	free(rC);
+	return;
+}
+
diff --git a/MDD/name_ext.c b/MDD/name_ext.c
new file mode 120000
index 0000000..83ac1f8
--- /dev/null
+++ b/MDD/name_ext.c
@@ -0,0 +1 @@
+../utils/name_ext.c
\ No newline at end of file
diff --git a/MDD/par.h b/MDD/par.h
new file mode 120000
index 0000000..0fa273c
--- /dev/null
+++ b/MDD/par.h
@@ -0,0 +1 @@
+../utils/par.h
\ No newline at end of file
diff --git a/MDD/readShotData.c b/MDD/readShotData.c
new file mode 100644
index 0000000..ce77436
--- /dev/null
+++ b/MDD/readShotData.c
@@ -0,0 +1,142 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "segy.h"
+#include <assert.h>
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+                      __const char *__restrict __modes);
+
+typedef struct { /* complex number */
+        float r,i;
+} complex;
+
+#define NINT(x) ((int)((x)>0.0?(x)+0.5:(x)-0.5))
+
+int optncr(int n);
+void cc1fft(complex *data, int n, int sign);
+void rc1fft(float *rdata, complex *cdata, int n, int sign);
+
+int compare(const void *a, const void *b) 
+{ return (*(float *)b-*(float *)a); }
+
+int readShotData(char *filename, float xmin, float dx, float *xrcv, float *xsrc, int *xnx, complex *cdata, int nw, int nw_low, int ngath, int nx, int nxm, int ntfft, float alpha, float scale, float conjg, int transpose, int verbose)
+{
+	FILE *fp;
+	segy hdr;
+	size_t nread;
+	int fldr_shot, sx_shot, itrace, one_shot, igath, iw, i, j, k;
+	int end_of_file, nt, ir, is;
+	float scl, dt, *trace;
+	complex *ctrace;
+
+	/* Reading first header  */
+
+	if (filename == NULL) fp = stdin;
+	else fp = fopen64( filename, "r" );
+	if ( fp == NULL ) {
+		fprintf(stderr,"input file %s has an error\n", filename);
+		perror("error in opening file: ");
+		fflush(stderr);
+		return -1;
+	}
+
+	fseek(fp, 0, SEEK_SET);
+	nread = fread( &hdr, 1, TRCBYTES, fp );
+	assert(nread == TRCBYTES);
+	if (hdr.scalco < 0) scl = 1.0/fabs(hdr.scalco);
+	else if (hdr.scalco == 0) scl = 1.0;
+	else scl = hdr.scalco;
+	fseek(fp, 0, SEEK_SET);
+
+	nt        = hdr.ns;
+
+	trace  = (float *)calloc(nx*ntfft,sizeof(float));
+	ctrace = (complex *)malloc(ntfft*sizeof(complex));
+
+	end_of_file = 0;
+	one_shot    = 1;
+	igath       = 0;
+
+	/* Read shots in file */
+
+	while (!end_of_file) {
+
+		/* start reading data (shot records) */
+		itrace = 0;
+		nread = fread( &hdr, 1, TRCBYTES, fp );
+		if (nread != TRCBYTES) { /* no more data in file */
+			break;
+		}
+
+		sx_shot  = hdr.sx;
+		fldr_shot  = hdr.fldr;
+		xsrc[igath] = sx_shot*scl;
+		xnx[igath]=0;
+		/* read in all traces within a shot */
+		while (one_shot) {
+			xrcv[igath*nxm+itrace] = hdr.gx*scl;
+			nread = fread( &trace[itrace*ntfft], sizeof(float), nt, fp );
+			assert (nread == hdr.ns);
+			itrace++;
+			xnx[igath]+=1;
+
+			/* read next hdr of next trace */
+			nread = fread( &hdr, 1, TRCBYTES, fp );
+			if (nread != TRCBYTES) { 
+				one_shot = 0;
+				end_of_file = 1;
+				break;
+			}
+			if ((sx_shot != hdr.sx) || (fldr_shot != hdr.fldr) ) break;
+		}
+
+		for (i=0; i<itrace; i++) {
+			/* apply alpha factor */
+			if (alpha != 0.0) {
+        		for (j=0; j<nt; j++) {
+					trace[i*ntfft+j] *= exp(alpha*j*dt);
+				}
+			}
+        	for (j=nt; j<ntfft; j++) {
+				trace[i*ntfft+j] = 0.0;
+			}
+
+			/* transform to frequency domain */
+        	rc1fft(&trace[i*ntfft],ctrace,ntfft,-1);
+
+			if (transpose == 0) {
+        		for (iw=0; iw<nw; iw++) {
+        			cdata[iw*ngath*nx+igath*nx+i].r = scale*ctrace[nw_low+iw].r;
+        			cdata[iw*ngath*nx+igath*nx+i].i = conjg*scale*ctrace[nw_low+iw].i;
+        		}
+			}
+			else {
+        		for (iw=0; iw<nw; iw++) {
+        			cdata[iw*ngath*nx+i*ngath+igath].r = scale*ctrace[nw_low+iw].r;
+        			cdata[iw*ngath*nx+i*ngath+igath].i = conjg*scale*ctrace[nw_low+iw].i;
+        		}
+			}
+		}
+
+		if (verbose>2) {
+			fprintf(stderr,"finished reading shot %d (%d) with %d traces\n",sx_shot,igath,itrace);
+		}
+
+		if (itrace != 0) { /* end of shot record */
+			fseek( fp, -TRCBYTES, SEEK_CUR );
+			igath++;
+		}
+		else {
+			end_of_file = 1;
+		}
+	}
+
+	free(ctrace);
+	free(trace);
+
+	return 0;
+}
+
+
diff --git a/MDD/segy.h b/MDD/segy.h
new file mode 100644
index 0000000..d0a0d76
--- /dev/null
+++ b/MDD/segy.h
@@ -0,0 +1,849 @@
+/* Copyright (c) Colorado School of Mines, 2011.*/
+/* All rights reserved.                       */
+
+/* segy.h - include file for SEGY traces
+ *
+ * declarations for:
+ *	typedef struct {} segy - the trace identification header
+ *	typedef struct {} bhed - binary header
+ *
+ * Note:
+ *	If header words are added, run the makefile in this directory
+ *	to recreate hdr.h.
+ *
+ * Reference:
+ *	K. M. Barry, D. A. Cavers and C. W. Kneale, "Special Report:
+ *		Recommended Standards for Digital Tape Formats",
+ *		Geophysics, vol. 40, no. 2 (April 1975), P. 344-352.
+ *	
+ * $Author: john $
+ * $Source: /usr/local/cwp/src/su/include/RCS/segy.h,v $
+ * $Revision: 1.33 $ ; $Date: 2011/11/11 23:56:14 $
+ */ 
+
+#include <limits.h>
+#include "par.h"
+
+#ifndef SEGY_H
+#define SEGY_H
+#define TRCBYTES		240
+
+#define SU_NFLTS	32767	/* Arbitrary limit on data array size	*/
+
+
+/* TYPEDEFS */
+typedef struct {	/* segy - trace identification header */
+
+	int tracl;	/* Trace sequence number within line
+			   --numbers continue to increase if the
+			   same line continues across multiple
+			   SEG Y files.
+			   byte# 1-4
+			 */
+
+	int tracr;	/* Trace sequence number within SEG Y file
+			   ---each file starts with trace sequence
+			   one
+			   byte# 5-8
+			 */
+
+	int fldr;	/* Original field record number
+			   byte# 9-12 
+			*/
+
+	int tracf;	/* Trace number within original field record 
+			   byte# 13-16
+			*/
+
+	int ep;		/* energy source point number
+			   ---Used when more than one record occurs
+			   at the same effective surface location.
+			   byte# 17-20
+			 */
+
+	int cdp;	/* Ensemble number (i.e. CDP, CMP, CRP,...) 
+			   byte# 21-24
+			*/
+
+	int cdpt;	/* trace number within the ensemble
+			   ---each ensemble starts with trace number one.
+			   byte# 25-28
+			 */
+
+	short trid;	/* trace identification code:
+			-1 = Other
+		         0 = Unknown
+			 1 = Seismic data
+			 2 = Dead
+			 3 = Dummy
+			 4 = Time break
+			 5 = Uphole
+			 6 = Sweep
+			 7 = Timing
+			 8 = Water break
+			 9 = Near-field gun signature
+			10 = Far-field gun signature
+			11 = Seismic pressure sensor
+			12 = Multicomponent seismic sensor
+				- Vertical component
+			13 = Multicomponent seismic sensor
+				- Cross-line component 
+			14 = Multicomponent seismic sensor
+				- in-line component 
+			15 = Rotated multicomponent seismic sensor
+				- Vertical component
+			16 = Rotated multicomponent seismic sensor
+				- Transverse component
+			17 = Rotated multicomponent seismic sensor
+				- Radial component
+			18 = Vibrator reaction mass
+			19 = Vibrator baseplate
+			20 = Vibrator estimated ground force
+			21 = Vibrator reference
+			22 = Time-velocity pairs
+			23 ... N = optional use 
+				(maximum N = 32,767)
+
+			Following are CWP id flags:
+
+			109 = autocorrelation
+			110 = Fourier transformed - no packing
+			     xr[0],xi[0], ..., xr[N-1],xi[N-1]
+			111 = Fourier transformed - unpacked Nyquist
+			     xr[0],xi[0],...,xr[N/2],xi[N/2]
+			112 = Fourier transformed - packed Nyquist
+	 		     even N:
+			     xr[0],xr[N/2],xr[1],xi[1], ...,
+				xr[N/2 -1],xi[N/2 -1]
+				(note the exceptional second entry)
+			     odd N:
+			     xr[0],xr[(N-1)/2],xr[1],xi[1], ...,
+				xr[(N-1)/2 -1],xi[(N-1)/2 -1],xi[(N-1)/2]
+				(note the exceptional second & last entries)
+			113 = Complex signal in the time domain
+			     xr[0],xi[0], ..., xr[N-1],xi[N-1]
+			114 = Fourier transformed - amplitude/phase
+			     a[0],p[0], ..., a[N-1],p[N-1]
+			115 = Complex time signal - amplitude/phase
+			     a[0],p[0], ..., a[N-1],p[N-1]
+			116 = Real part of complex trace from 0 to Nyquist
+			117 = Imag part of complex trace from 0 to Nyquist
+			118 = Amplitude of complex trace from 0 to Nyquist
+			119 = Phase of complex trace from 0 to Nyquist
+			121 = Wavenumber time domain (k-t)
+			122 = Wavenumber frequency (k-omega)
+			123 = Envelope of the complex time trace
+			124 = Phase of the complex time trace
+			125 = Frequency of the complex time trace
+			130 = Depth-Range (z-x) traces
+			201 = Seismic data packed to bytes (by supack1)
+			202 = Seismic data packed to 2 bytes (by supack2)
+			   byte# 29-30
+			*/
+
+	short nvs;	/* Number of vertically summed traces yielding
+			   this trace. (1 is one trace, 
+			   2 is two summed traces, etc.)
+			   byte# 31-32
+			 */
+
+	short nhs;	/* Number of horizontally summed traces yielding
+			   this trace. (1 is one trace
+			   2 is two summed traces, etc.)
+			   byte# 33-34
+			 */
+
+	short duse;	/* Data use:
+				1 = Production
+				2 = Test
+			   byte# 35-36
+			 */
+
+	int offset;	/* Distance from the center of the source point 
+			   to the center of the receiver group 
+			   (negative if opposite to direction in which 
+			   the line was shot).
+			   byte# 37-40
+			 */
+
+	int gelev;	/* Receiver group elevation from sea level
+			   (all elevations above the Vertical datum are 
+			   positive and below are negative).
+			   byte# 41-44
+			 */
+
+	int selev;	/* Surface elevation at source.
+			   byte# 45-48
+			 */
+
+	int sdepth;	/* Source depth below surface (a positive number).
+			   byte# 49-52
+			 */
+
+	int gdel;	/* Datum elevation at receiver group.
+			   byte# 53-56
+			*/
+
+	int sdel;	/* Datum elevation at source.
+			   byte# 57-60
+			*/
+
+	int swdep;	/* Water depth at source.
+			   byte# 61-64
+			*/
+
+	int gwdep;	/* Water depth at receiver group.
+			   byte# 65-68
+			*/
+
+	short scalel;	/* Scalar to be applied to the previous 7 entries
+			   to give the real value. 
+			   Scalar = 1, +10, +100, +1000, +10000.
+			   If positive, scalar is used as a multiplier,
+			   if negative, scalar is used as a divisor.
+			   byte# 69-70
+			 */
+
+	short scalco;	/* Scalar to be applied to the next 4 entries
+			   to give the real value. 
+			   Scalar = 1, +10, +100, +1000, +10000.
+			   If positive, scalar is used as a multiplier,
+			   if negative, scalar is used as a divisor.
+			   byte# 71-72
+			 */
+
+	int  sx;	/* Source coordinate - X 
+			   byte# 73-76
+			*/
+
+	int  sy;	/* Source coordinate - Y 
+			   byte# 77-80
+			*/
+
+	int  gx;	/* Group coordinate - X 
+			   byte# 81-84
+			*/
+
+	int  gy;	/* Group coordinate - Y 
+			   byte# 85-88
+			*/
+
+	short counit;	/* Coordinate units: (for previous 4 entries and
+				for the 7 entries before scalel)
+			   1 = Length (meters or feet)
+			   2 = Seconds of arc
+			   3 = Decimal degrees
+			   4 = Degrees, minutes, seconds (DMS)
+
+			In case 2, the X values are longitude and 
+			the Y values are latitude, a positive value designates
+			the number of seconds east of Greenwich
+				or north of the equator
+
+			In case 4, to encode +-DDDMMSS
+			counit = +-DDD*10^4 + MM*10^2 + SS,
+			with scalco = 1. To encode +-DDDMMSS.ss
+			counit = +-DDD*10^6 + MM*10^4 + SS*10^2 
+			with scalco = -100.
+			   byte# 89-90
+			*/
+
+	short wevel;	/* Weathering velocity. 
+			   byte# 91-92
+			*/
+
+	short swevel;	/* Subweathering velocity. 
+			   byte# 93-94
+			*/
+
+	short sut;	/* Uphole time at source in milliseconds. 
+			   byte# 95-96
+			*/
+
+	short gut;	/* Uphole time at receiver group in milliseconds. 
+			   byte# 97-98
+			*/
+
+	short sstat;	/* Source static correction in milliseconds. 
+			   byte# 99-100
+			*/
+
+	short gstat;	/* Group static correction  in milliseconds.
+			   byte# 101-102
+			*/
+
+	short tstat;	/* Total static applied  in milliseconds.
+			   (Zero if no static has been applied.)
+			   byte# 103-104
+			*/
+
+	short laga;	/* Lag time A, time in ms between end of 240-
+			   byte trace identification header and time
+			   break, positive if time break occurs after
+			   end of header, time break is defined as
+			   the initiation pulse which maybe recorded
+			   on an auxiliary trace or as otherwise
+			   specified by the recording system 
+			   byte# 105-106
+			*/
+
+	short lagb;	/* lag time B, time in ms between the time break
+			   and the initiation time of the energy source,
+			   may be positive or negative 
+			   byte# 107-108
+			*/
+
+	short delrt;	/* delay recording time, time in ms between
+			   initiation time of energy source and time
+			   when recording of data samples begins
+			   (for deep water work if recording does not
+			   start at zero time) 
+			   byte# 109-110
+			*/
+
+	short muts;	/* mute time--start 
+			   byte# 111-112
+			*/
+
+	short mute;	/* mute time--end 
+			   byte# 113-114
+			*/
+
+	unsigned short ns;	/* number of samples in this trace 
+			   byte# 115-116
+			*/
+
+	unsigned short dt;	/* sample interval; in micro-seconds
+			   byte# 117-118
+			*/
+
+	short gain;	/* gain type of field instruments code:
+				1 = fixed
+				2 = binary
+				3 = floating point
+				4 ---- N = optional use 
+			   byte# 119-120
+			*/
+
+	short igc;	/* instrument gain constant 
+			   byte# 121-122
+			*/
+
+	short igi;	/* instrument early or initial gain 
+			   byte# 123-124
+			*/
+
+	short corr;	/* correlated:
+				1 = no
+				2 = yes 
+			   byte# 125-126
+			*/
+
+	short sfs;	/* sweep frequency at start 
+			   byte# 127-128
+			*/
+
+	short sfe;	/* sweep frequency at end
+			   byte# 129-130
+			*/
+
+	short slen;	/* sweep length in ms 
+			   byte# 131-132
+			*/
+
+	short styp;	/* sweep type code:
+				1 = linear
+				2 = cos-squared
+				3 = other
+			   byte# 133-134
+			*/
+
+	short stas;	/* sweep trace length at start in ms
+			   byte# 135-136
+			*/
+
+	short stae;	/* sweep trace length at end in ms 
+			   byte# 137-138
+			*/
+
+	short tatyp;	/* taper type: 1=linear, 2=cos^2, 3=other 
+			   byte# 139-140
+			*/
+
+	short afilf;	/* alias filter frequency if used 
+			   byte# 141-142
+			*/
+
+	short afils;	/* alias filter slope
+			   byte# 143-144
+			*/
+
+	short nofilf;	/* notch filter frequency if used
+			   byte# 145-146
+			*/
+
+	short nofils;	/* notch filter slope
+			   byte# 147-148
+			*/
+
+	short lcf;	/* low cut frequency if used
+			   byte# 149-150
+			*/
+
+	short hcf;	/* high cut frequncy if used
+			   byte# 151-152
+			*/
+
+	short lcs;	/* low cut slope
+			   byte# 153-154
+			*/
+
+	short hcs;	/* high cut slope
+			   byte# 155-156
+			*/
+
+	short year;	/* year data recorded
+			   byte# 157-158
+			*/
+
+	short day;	/* day of year
+			   byte# 159-160
+			*/
+
+	short hour;	/* hour of day (24 hour clock) 
+			   byte# 161-162
+			*/
+
+	short minute;	/* minute of hour
+			   byte# 163-164
+			*/
+
+	short sec;	/* second of minute
+			   byte# 165-166
+			*/
+
+	short timbas;	/* time basis code:
+				1 = local
+				2 = GMT
+				3 = other
+			   byte# 167-168
+			*/
+
+	short trwf;	/* trace weighting factor, defined as 1/2^N
+			   volts for the least sigificant bit
+			   byte# 169-170
+			*/
+
+	short grnors;	/* geophone group number of roll switch
+			   position one
+			   byte# 171-172
+			*/
+
+	short grnofr;	/* geophone group number of trace one within
+			   original field record
+			   byte# 173-174
+			*/
+
+	short grnlof;	/* geophone group number of last trace within
+			   original field record
+			   byte# 175-176
+			*/
+
+	short gaps;	/* gap size (total number of groups dropped)
+			   byte# 177-178
+			*/
+
+	short otrav;	/* overtravel taper code:
+				1 = down (or behind)
+				2 = up (or ahead)
+			   byte# 179-180
+			*/
+
+#ifdef SLTSU_SEGY_H  /* begin Unocal SU segy.h differences */
+
+
+	/* cwp local assignments */
+	float d1;	/* sample spacing for non-seismic data
+			   byte# 181-184
+			*/
+
+	float f1;	/* first sample location for non-seismic data
+			   byte# 185-188
+			*/
+
+	float d2;	/* sample spacing between traces
+			   byte# 189-192
+			*/
+
+	float f2;	/* first trace location
+			   byte# 193-196
+			*/
+
+	float ungpow;	/* negative of power used for dynamic
+			   range compression
+			   byte# 197-200
+			*/
+
+	float unscale;	/* reciprocal of scaling factor to normalize
+			   range
+			   byte# 201-204
+			*/
+
+	short mark;	/* mark selected traces
+			   byte# 205-206
+			*/
+
+	/* SLTSU local assignments */ 
+	short mutb;	/* mute time at bottom (start time)
+			   bottom mute ends at last sample
+			   byte# 207-208
+			*/
+	float dz;	/* depth sampling interval in (m or ft)
+			if =0.0, input are time samples
+			   byte# 209-212
+			*/
+
+	float fz;	/* depth of first sample in (m or ft)
+			   byte# 213-116
+			*/
+
+	short n2;	/* number of traces per cdp or per shot
+			   byte# 217-218
+			*/
+
+        short shortpad; /* alignment padding
+			   byte# 219-220
+			*/
+
+	int ntr; 	/* number of traces
+			   byte# 221-224
+			*/
+
+	/* SLTSU local assignments end */ 
+
+	short unass[8];	/* unassigned
+			   byte# 225-240
+			*/
+
+#else
+
+	/* cwp local assignments */
+	float d1;	/* sample spacing for non-seismic data
+			   byte# 181-184
+			*/
+
+	float f1;	/* first sample location for non-seismic data
+			   byte# 185-188
+			*/
+
+	float d2;	/* sample spacing between traces
+			   byte# 189-192
+			*/
+
+	float f2;	/* first trace location
+			   byte# 193-196
+			*/
+
+	float ungpow;	/* negative of power used for dynamic
+			   range compression
+			   byte# 197-200
+			*/
+
+	float unscale;	/* reciprocal of scaling factor to normalize
+			   range
+			   byte# 201-204
+			*/
+
+	int ntr; 	/* number of traces
+			   byte# 205-208
+			*/
+
+	short mark;	/* mark selected traces
+			   byte# 209-210
+			*/
+
+        short shortpad; /* alignment padding
+			   byte# 211-212
+			*/
+
+
+	short unass[14];	/* unassigned--NOTE: last entry causes 
+			   a break in the word alignment, if we REALLY
+			   want to maintain 240 bytes, the following
+			   entry should be an odd number of short/UINT2
+			   OR do the insertion above the "mark" keyword
+			   entry
+			   byte# 213-240
+			*/
+#endif
+
+} segy;
+
+
+typedef struct {	/* bhed - binary header */
+
+	int jobid;	/* job identification number */
+
+	int lino;	/* line number (only one line per reel) */
+
+	int reno;	/* reel number */
+
+	short ntrpr;	/* number of data traces per record */
+
+        short nart;	/* number of auxiliary traces per record */
+
+	unsigned short hdt; /* sample interval in micro secs for this reel */
+
+	unsigned short dto; /* same for original field recording */
+
+	unsigned short hns; /* number of samples per trace for this reel */
+
+	unsigned short nso; /* same for original field recording */
+
+	short format;	/* data sample format code:
+				1 = floating point, 4 byte (32 bits)
+				2 = fixed point, 4 byte (32 bits)
+				3 = fixed point, 2 byte (16 bits)
+				4 = fixed point w/gain code, 4 byte (32 bits)
+				5 = IEEE floating point, 4 byte (32 bits)
+				8 = two's complement integer, 1 byte (8 bits)
+			*/
+
+	short fold;	/* CDP fold expected per CDP ensemble */
+
+	short tsort;	/* trace sorting code: 
+				1 = as recorded (no sorting)
+				2 = CDP ensemble
+				3 = single fold continuous profile
+				4 = horizontally stacked */
+
+	short vscode;	/* vertical sum code:
+				1 = no sum
+				2 = two sum ...
+				N = N sum (N = 32,767) */
+
+	short hsfs;	/* sweep frequency at start */
+
+	short hsfe;	/* sweep frequency at end */
+
+	short hslen;	/* sweep length (ms) */
+
+	short hstyp;	/* sweep type code:
+				1 = linear
+				2 = parabolic
+				3 = exponential
+				4 = other */
+
+	short schn;	/* trace number of sweep channel */
+
+	short hstas;	/* sweep trace taper length at start if
+			   tapered (the taper starts at zero time
+			   and is effective for this length) */
+
+	short hstae;	/* sweep trace taper length at end (the ending
+			   taper starts at sweep length minus the taper
+			   length at end) */
+
+	short htatyp;	/* sweep trace taper type code:
+				1 = linear
+				2 = cos-squared
+				3 = other */
+
+	short hcorr;	/* correlated data traces code:
+				1 = no
+				2 = yes */
+
+	short bgrcv;	/* binary gain recovered code:
+				1 = yes
+				2 = no */
+
+	short rcvm;	/* amplitude recovery method code:
+				1 = none
+				2 = spherical divergence
+				3 = AGC
+				4 = other */
+
+	short mfeet;	/* measurement system code:
+				1 = meters
+				2 = feet */
+
+	short polyt;	/* impulse signal polarity code:
+				1 = increase in pressure or upward
+				    geophone case movement gives
+				    negative number on tape
+				2 = increase in pressure or upward
+				    geophone case movement gives
+				    positive number on tape */
+
+	short vpol;	/* vibratory polarity code:
+				code	seismic signal lags pilot by
+				1	337.5 to  22.5 degrees
+				2	 22.5 to  67.5 degrees
+				3	 67.5 to 112.5 degrees
+				4	112.5 to 157.5 degrees
+				5	157.5 to 202.5 degrees
+				6	202.5 to 247.5 degrees
+				7	247.5 to 292.5 degrees
+				8	293.5 to 337.5 degrees */
+
+	short hunass[170];	/* unassigned */
+
+} bhed;
+
+/* DEFINES */
+#define gettr(x)	fgettr(stdin, (x))
+#define vgettr(x)	fvgettr(stdin, (x))
+#define puttr(x)	fputtr(stdout, (x))
+#define vputtr(x)	fvputtr(stdout, (x))
+#define gettra(x, y)    fgettra(stdin, (x), (y))
+
+
+/* TOTHER represents "other"					*/
+#define		TOTHER		-1	
+/* TUNK represents time traces of an unknown type		*/
+#define		TUNK		0
+/* TREAL represents real time traces 				*/
+#define		TREAL		1
+/* TDEAD represents dead time traces 				*/
+#define		TDEAD		2
+/* TDUMMY represents dummy time traces 				*/
+#define		TDUMMY		3
+/* TBREAK represents time break traces 				*/
+#define		TBREAK		4
+/* UPHOLE represents uphole traces 				*/
+#define		UPHOLE		5
+/* SWEEP represents sweep traces 				*/
+#define		SWEEP		6
+/* TIMING represents timing traces 				*/
+#define		TIMING		7
+/* WBREAK represents timing traces 				*/
+#define		WBREAK		8
+/* NFGUNSIG represents near field gun signature 		*/
+#define		NFGUNSIG	9	
+/* FFGUNSIG represents far field gun signature	 		*/
+#define		FFGUNSIG	10
+/* SPSENSOR represents seismic pressure sensor	 		*/
+#define		SPSENSOR	11
+/* TVERT represents multicomponent seismic sensor 
+	- vertical component */
+#define		TVERT		12
+/* TXLIN represents multicomponent seismic sensor 
+	- cross-line component */
+#define		TXLIN		13
+/* TINLIN represents multicomponent seismic sensor 
+	- in-line component */
+#define		TINLIN	14
+/* ROTVERT represents rotated multicomponent seismic sensor 
+	- vertical component */
+#define		ROTVERT		15
+/* TTRANS represents rotated multicomponent seismic sensor 
+	- transverse component */
+#define		TTRANS		16
+/* TRADIAL represents rotated multicomponent seismic sensor 
+	- radial component */
+#define		TRADIAL		17
+/* VRMASS represents vibrator reaction mass */
+#define		VRMASS		18
+/* VBASS represents vibrator baseplate */
+#define		VBASS		19
+/* VEGF represents vibrator estimated ground force */
+#define		VEGF		20
+/* VREF represents vibrator reference */
+#define		VREF		21
+
+/*** CWP trid assignments ***/
+/* ACOR represents autocorrelation  */
+#define		ACOR		109
+/* FCMPLX represents fourier transformed - no packing 
+   xr[0],xi[0], ..., xr[N-1],xi[N-1] */
+#define		FCMPLX		110
+/* FUNPACKNYQ represents fourier transformed - unpacked Nyquist
+   xr[0],xi[0],...,xr[N/2],xi[N/2] */
+#define		FUNPACKNYQ	111
+/* FTPACK represents fourier transformed - packed Nyquist
+   even N: xr[0],xr[N/2],xr[1],xi[1], ...,
+	xr[N/2 -1],xi[N/2 -1]
+   (note the exceptional second entry)
+    odd N:
+     xr[0],xr[(N-1)/2],xr[1],xi[1], ...,
+     xr[(N-1)/2 -1],xi[(N-1)/2 -1],xi[(N-1)/2]
+   (note the exceptional second & last entries)
+*/
+#define		FTPACK		112
+/* TCMPLX represents complex time traces 			*/
+#define		TCMPLX		113
+/* FAMPH represents freq domain data in amplitude/phase form	*/
+#define		FAMPH		114
+/* TAMPH represents time domain data in amplitude/phase form	*/
+#define		TAMPH		115
+/* REALPART represents the real part of a trace to Nyquist	*/
+#define		REALPART	116
+/* IMAGPART represents the real part of a trace to Nyquist	*/
+#define		IMAGPART	117
+/* AMPLITUDE represents the amplitude of a trace to Nyquist	*/
+#define		AMPLITUDE	118
+/* PHASE represents the phase of a trace to Nyquist		*/
+#define		PHASE		119
+/* KT represents wavenumber-time domain data 			*/
+#define		KT		121
+/* KOMEGA represents wavenumber-frequency domain data		*/
+#define		KOMEGA		122
+/* ENVELOPE represents the envelope of the complex time trace	*/
+#define		ENVELOPE	123
+/* INSTPHASE represents the phase of the complex time trace	*/
+#define		INSTPHASE	124
+/* INSTFREQ represents the frequency of the complex time trace	*/
+#define		INSTFREQ	125
+/* DEPTH represents traces in depth-range (z-x)			*/
+#define		TRID_DEPTH	130
+/* 3C data...  v,h1,h2=(11,12,13)+32 so a bitmask will convert  */
+/* between conventions */
+/* CHARPACK represents byte packed seismic data from supack1	*/
+#define		CHARPACK	201
+/* SHORTPACK represents 2 byte packed seismic data from supack2	*/
+#define		SHORTPACK	202
+
+
+#define ISSEISMIC(id) (( (id)==TUNK || (id)==TREAL || (id)==TDEAD || (id)==TDUMMY || (id)==TBREAK || (id)==UPHOLE || (id)==SWEEP || (id)==TIMING || (id)==WBREAK || (id)==NFGUNSIG || (id)==FFGUNSIG || (id)==SPSENSOR || (id)==TVERT || (id)==TXLIN || (id)==TINLIN || (id)==ROTVERT || (id)==TTRANS || (id)==TRADIAL || (id)==ACOR ) ? cwp_true : cwp_false ) 
+
+/* FUNCTION PROTOTYPES */
+#ifdef __cplusplus /* if C++, specify external linkage to C functions */
+extern "C" {
+#endif
+
+/* get trace and put trace */
+int fgettr(FILE *fp, segy *tp);
+int fvgettr(FILE *fp, segy *tp);
+void fputtr(FILE *fp, segy *tp);
+void fvputtr(FILE *fp, segy *tp);
+int fgettra(FILE *fp, segy *tp, int itr);
+
+/* get gather and put gather */
+segy **fget_gather(FILE *fp, cwp_String *key,cwp_String *type,Value *n_val,
+                        int *nt,int *ntr, float *dt,int *first);
+segy **get_gather(cwp_String *key, cwp_String *type, Value *n_val,
+			int *nt, int *ntr, float *dt, int *first);
+segy **fput_gather(FILE *fp, segy **rec,int *nt, int *ntr);
+segy **put_gather(segy **rec,int *nt, int *ntr);
+
+/* hdrpkge */
+void gethval(const segy *tp, int index, Value *valp);
+void puthval(segy *tp, int index, Value *valp);
+void getbhval(const bhed *bhp, int index, Value *valp);
+void putbhval(bhed *bhp, int index, Value *valp);
+void gethdval(const segy *tp, char *key, Value *valp);
+void puthdval(segy *tp, char *key, Value *valp);
+char *hdtype(const char *key);
+char *getkey(const int index);
+int getindex(const char *key);
+void swaphval(segy *tp, int index);
+void swapbhval(bhed *bhp, int index);
+void printheader(const segy *tp);
+
+void tabplot(segy *tp, int itmin, int itmax);
+
+#ifdef __cplusplus /* if C++, end external linkage specification */
+}
+#endif
+
+#endif
diff --git a/MDD/verbosepkg.c b/MDD/verbosepkg.c
new file mode 120000
index 0000000..248253e
--- /dev/null
+++ b/MDD/verbosepkg.c
@@ -0,0 +1 @@
+../utils/verbosepkg.c
\ No newline at end of file
diff --git a/MDD/wallclock_time.c b/MDD/wallclock_time.c
new file mode 120000
index 0000000..0bd00b4
--- /dev/null
+++ b/MDD/wallclock_time.c
@@ -0,0 +1 @@
+../utils/wallclock_time.c
\ No newline at end of file
diff --git a/MDD/writeEigen.c b/MDD/writeEigen.c
new file mode 100644
index 0000000..e2ede69
--- /dev/null
+++ b/MDD/writeEigen.c
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "segy.h"
+#include <assert.h>
+
+
+void writeEigen(char *file_out, float df, int nw_low, int nw_high, int nw, float *eigen, int nx, float dx, float xmin)
+{
+    static FILE *out_file;
+	float *trace, scl, re, im;
+	int sign, ntfft, i, j, ie, iw, count;
+	segy *hdrs_out;
+	size_t nwrite;
+    char filename[256], ext[32];
+
+    trace  = (float *)malloc(nx*sizeof(float));
+	hdrs_out  = (segy *)calloc(TRCBYTES,1);
+    
+	hdrs_out[0].dt=df*1000000;
+	hdrs_out[0].trid = 1;
+	hdrs_out[0].ns = nx;
+	hdrs_out[0].d1 = 1;
+	hdrs_out[0].f1 = 1;
+	hdrs_out[0].f2 = nw_low*df;
+	hdrs_out[0].d2 = df;
+	hdrs_out[0].trwf = nw;
+	hdrs_out[0].fldr = 1;
+
+	strcpy(filename, file_out);
+	sprintf(ext,"%s.su", "_eigen");
+	strcpy(strstr(filename, ".su"), ext);
+	out_file = fopen(filename, "w+"); assert( out_file );
+	fprintf(stderr,"writing eigenvalues of matrix to %s\n", filename);
+	count=1;
+
+	for (iw=0; iw<nw; iw++) {
+		hdrs_out[0].tracl = iw+1;
+		for (i = 0; i < nx; i++) {
+           	trace[i] = eigen[iw*nx+i];
+		}
+		nwrite = fwrite(&hdrs_out[0], 1, TRCBYTES, out_file);
+		assert( nwrite == TRCBYTES );
+		nwrite = fwrite(trace, sizeof(float), nx, out_file);
+		assert( nwrite == nx );
+    }
+    fflush(out_file);
+   	fclose(out_file);
+
+    free(hdrs_out);
+    free(trace);
+
+	return;
+}
+
diff --git a/Makefile b/Makefile
index b85040f..74e45de 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ all: mkdirs
 	cd marchenko	; $(MAKE) install
 	cd corrvir		; $(MAKE) install
 	cd raytime		; $(MAKE) install
+	cd MDD			; $(MAKE) install
 
 mkdirs:
 	-mkdir -p lib
@@ -20,6 +21,7 @@ clean:
 	cd marchenko	; $(MAKE) $@
 	cd corrvir		; $(MAKE) $@
 	cd raytime		; $(MAKE) $@
+	cd MDD			; $(MAKE) $@
 
 realclean:
 	cd FFTlib 		; $(MAKE) $@
@@ -28,6 +30,7 @@ realclean:
 	cd marchenko	; $(MAKE) $@
 	cd corrvir		; $(MAKE) $@
 	cd raytime		; $(MAKE) $@
+	cd MDD			; $(MAKE) $@
 	rm -f lib/*
 	rm -f include/*
 	rm -f bin/*
diff --git a/utils/getFileInfo.c b/utils/getFileInfo.c
index 490ba4a..61ff7ba 100644
--- a/utils/getFileInfo.c
+++ b/utils/getFileInfo.c
@@ -1,6 +1,3 @@
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE_SOURCE
-
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/utils/green3D b/utils/green3D
deleted file mode 100755
index 3513a0edb3c0096f4a53c9e3fa73a5474de53bf5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 147424
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
Hf1>^X>?x{r

-- 
GitLab