diff --git a/fdelmodc3D/Makefile b/fdelmodc3D/Makefile
index 6e103682a7d1295b5c5659b130004210b2e6a498..051ebfb2b300a11d4f05cfb0dc00f7fd00889210 100644
--- a/fdelmodc3D/Makefile
+++ b/fdelmodc3D/Makefile
@@ -25,6 +25,7 @@ SRCC	= $(PRG).c \
 		acoustic6_3D.c \
 		acousticSH4_3D.c \
 		acoustic4_qr_3D.c \
+		elastic4dc_3D.c \
 		defineSource3D.c  \
 		getParameters3D.c  \
 		getWaveletInfo3D.c  \
diff --git a/fdelmodc3D/boundaries3D.c b/fdelmodc3D/boundaries3D.c
index 1496fbb7388ce82d83eb4a0913ee289ac8c1b417..8281c66e6db3dc7b1e34c946381aeec9c3711839 100644
--- a/fdelmodc3D/boundaries3D.c
+++ b/fdelmodc3D/boundaries3D.c
@@ -3441,8 +3441,7 @@ MID 	left 	mid 	mid
 			}
 		
 		}
-
-		if (mod.ischeme <= 2) { /* Elastic scheme */
+		else { /* Elastic scheme */
 			
 			/* Vx field */
 			/* right mid mid vx */
diff --git a/fdelmodc3D/fdelmodc3D b/fdelmodc3D/fdelmodc3D
index e8d703ce3c5944cb85865e241beb62f5fdc3123f..ca2229cabd8cf69cb8d1e9832c8f7155b652bae7 100755
Binary files a/fdelmodc3D/fdelmodc3D and b/fdelmodc3D/fdelmodc3D differ
diff --git a/fdelmodc3D/fdelmodc3D.c b/fdelmodc3D/fdelmodc3D.c
index 7cc4e25a275328fa6cf8ebece1facf9bcf041506..705ee6ab9717937cde57cd0ae6de111d94c869eb 100644
--- a/fdelmodc3D/fdelmodc3D.c
+++ b/fdelmodc3D/fdelmodc3D.c
@@ -48,6 +48,11 @@ long acousticSH4_3D(modPar mod, srcPar src, wavPar wav, bndPar bnd, long itime,
 	long ixsrc, long iysrc, long izsrc, float **src_nwav, float *tx, float *ty, float *tz,
 	float *vz, float *rox, float *roy, float *roz, float *mul, long verbose);
 
+long elastic4dc_3D(modPar mod, srcPar src, wavPar wav, bndPar bnd, long itime, 
+	long ixsrc, long iysrc, long izsrc, float **src_nwav, float *vx, float *vy, float *vz,
+	float *tzz, float *tyy, float *txx, float *txz, float *txy, float *tyz,
+    float *rox, float *roy, float *roz, float *l2m, float *lam, float *mul, long verbose);
+
 long getRecTimes3D(modPar mod, recPar rec, bndPar bnd, long itime, long isam,
 	float *vx, float *vy, float *vz, float *tzz, float *tyy, float *txx,
 	float *txz, float *txy, float *tyz, float *l2m, float *rox, float *roy, float *roz,
@@ -481,7 +486,6 @@ int main(int argc, char **argv)
 		shot.z[ishot]=iz+src.sinkdepth; 
 	}
 
-
 	/* scan for free surface boundary in case it has a topography */
 	for (iy=0; iy<mod.ny; iy++) {
 		for (ix=0; ix<mod.nx; ix++) {
@@ -631,7 +635,8 @@ shared (shot, bnd, mod, src, wav, rec, ixsrc, iysrc, izsrc, it, src_nwav, verbos
 						vmess("Visco-Elastic order 4 not yet available");
 					break;
 				case 5 : /* Elastic FD kernel with S-velocity set to zero*/
-						vmess("DC-Elastic order 4 not yet available");
+						elastic4dc_3D(mod, src, wav, bnd, it, ixsrc, iysrc, izsrc, src_nwav,
+							vx, vy, vz, tzz, tyy, txx, txz, txy, tyz, rox, roy, roz, l2m, lam, mul, verbose);
 					break;
 			}
 
diff --git a/fdelmodc3D/getParameters3D.c b/fdelmodc3D/getParameters3D.c
index caf7fbb000dc704762ce7c270a4789d02949e670..bce77f757574fdb37bef38104cf88b27967af84b 100644
--- a/fdelmodc3D/getParameters3D.c
+++ b/fdelmodc3D/getParameters3D.c
@@ -959,6 +959,7 @@ criteria we have imposed.*/
 		vmess("*******************************************");
 		vmess("wav_nt   = %6li   wav_nx      = %li", wav->ns, wav->nx);
 		vmess("src_type = %6li   src_orient  = %li", src->type, src->orient);
+		vmess("number of sources              = %li", shot->n);
 		vmess("fmax     = %8.2f", fmax);
 		fprintf(stderr,"    %s: Source type         : ",xargv[0]);
 		switch ( src->type ) {
diff --git a/fdelmodc3D/getRecTimes3D.c b/fdelmodc3D/getRecTimes3D.c
index fa007f88322b1cb038b7d2d820218d118ffe7835..4c19786a8028eb10c0bc3183fe3c31c72e3603e8 100644
--- a/fdelmodc3D/getRecTimes3D.c
+++ b/fdelmodc3D/getRecTimes3D.c
@@ -402,6 +402,7 @@ long getRecTimes3D(modPar mod, recPar rec, bndPar bnd, long itime, long isam,
 				}
 			}
 			if (rec.type.txx) rec_txx[irec*rec.nt+isam] = txx[iy*n1*n2+ix*n1+iz];
+			if (rec.type.tyy) rec_tyy[irec*rec.nt+isam] = tyy[iy*n1*n2+ix*n1+iz];
 			if (rec.type.tzz) rec_tzz[irec*rec.nt+isam] = tzz[iy*n1*n2+ix*n1+iz];
 			if (rec.type.txz) { /* time interpolation to be done */
 				if (rec.int_vz == 2 || rec.int_vx == 2) {
diff --git a/fdelmodc3D/readModel3D.c b/fdelmodc3D/readModel3D.c
index 024e279289a74f6ac8a68960a4058fb0f28539ac..157f7a1790d4bcb1c8539aebf37385b170679e63 100644
--- a/fdelmodc3D/readModel3D.c
+++ b/fdelmodc3D/readModel3D.c
@@ -27,7 +27,7 @@
 
 
 long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
-    float *l2m, float *lam, float *muu, float *tss, float *tes, float *tep)
+    float *l2m, float *lam, float *muxz, float *tss, float *tes, float *tep)
 {
     FILE    *fpcp, *fpcs, *fpro;
 	FILE    *fpqp=NULL, *fpqs=NULL;
@@ -36,7 +36,7 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 	long n1, n2, n3, ix, iy, iz, nz, ny, nx;
     long ixo, iyo, izo, ixe, iye, ize;
 	long ioXx, ioXy, ioXz, ioYx, ioYy, ioYz, ioZz, ioZy, ioZx, ioPx, ioPy, ioPz, ioTx, ioTy, ioTz;
-	float cp2, cs2, cs11, cs12, cs21, cs22, mul, mu, lamda2mu, lamda;
+	float cp2, cs2, cs111, cs112, cs121, cs211, cs122, cs212, cs221, mul, mu, lamda2mu, lamda;
 	float cs2c, cs2b, cs2a, cpx, cpy, cpz, bx, by, bz, fac;
 	float *cp, *cs, *ro, *qp, *qs;
 	float a, b;
@@ -69,7 +69,7 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 	ioPx=mod.ioPx;
 	ioPy=mod.ioPy;
 	ioPz=mod.ioPz;
-	/* Txz, Txy, Tyz,: muu */
+	/* Txz, Txy, Tyz,: muxz */
 	ioTx=mod.ioTx;
 	ioTy=mod.ioTy;
 	ioTz=mod.ioTz;
@@ -231,23 +231,263 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 /* the edges of the model */
 
 	if (mod.ischeme>2) { /* Elastic Scheme */
+        iz = nz-1;
+        for (iy=0;iy<ny-1;iy++) {
+            for (ix=0;ix<nx-1;ix++) {
+                /* for muxz field */
+                /* csxyz */
+                cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                cs112 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                cs212 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                if (cs111 > 0.0) {
+                    mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
+                }
+                else {
+                    mul = 0.0;
+                }
+
+                /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs112 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // cs122 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+
+                /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                // cs2b = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                // cs2c = cs[(iy+1)*nx*nz+(ix+1)*nz+iz]*cs[(iy+1)*nx*nz+(ix+1)*nz+iz];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // cs211 = cs2b*ro[iy*nx*nz+(ix+1)*nz+iz];
+                // cs221 = cs2c*ro[(iy+1)*nx*nz+(ix+1)*nz+iz];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+                
+                mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
+                lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
+                lamda    = lamda2mu - 2*mu;
+
+                bx = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+(ix+1)*nz+iz]);
+                by = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[(iy+1)*nx*nz+ix*nz+iz]);
+                bz = ro[iy*nx*nz+ix*nz+iz];
+                rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
+                roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
+                roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
+                l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
+                lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
+                muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+            }
+        }
+
+        iy = ny-1;
+        for (ix=0;ix<nx-1;ix++) {
+            for (iz=0;iz<nz-1;iz++) {
+                /* for muxz field */
+                /* csxyz */
+                cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                cs2b = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                cs2c = cs[iy*nx*nz+(ix+1)*nz+iz+1]*cs[iy*nx*nz+(ix+1)*nz+iz+1];
+                cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                cs112 = cs2b*ro[iy*nx*nz+ix*nz+iz+1];
+                cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                cs212 = cs2c*ro[iy*nx*nz+(ix+1)*nz+iz+1];
+                if (cs111 > 0.0) {
+                    mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
+                }
+                else {
+                    mul = 0.0;
+                }
+
+                /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                // cs122 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+
+                /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                // cs221 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+                
+                mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
+                lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
+                lamda    = lamda2mu - 2*mu;
+
+                bx = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+(ix+1)*nz+iz]);
+                by = ro[iy*nx*nz+ix*nz+iz];
+                bz = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+ix*nz+iz+1]);
+                rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
+                roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
+                roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
+                l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
+                lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
+                muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+            }
+        }
+
+        ix = nx-1;
+        for (iy=0;iy<ny-1;iy++) {
+            for (iz=0;iz<nz-1;iz++) {
+                /* for muxz field */
+                /* csxyz */
+                cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                cs212 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                if (cs111 > 0.0) {
+                    mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
+                }
+                else {
+                    mul = 0.0;
+                }
+
+                /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                // cs2b = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                // cs2c = cs[(iy+1)*nx*nz+ix*nz+iz+1]*cs[(iy+1)*nx*nz+ix*nz+iz+1];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2b*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                // cs122 = cs2c*ro[(iy+1)*nx*nz+ix*nz+iz+1];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+
+                /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                /* csxyz */
+                // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                // cs2a = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs121 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                // cs221 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+                // if (cs111 > 0.0) {
+                //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+                // }
+                // else {
+                //     mul = 0.0;
+                // }
+                
+                mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
+                lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
+                lamda    = lamda2mu - 2*mu;
+
+                bx = ro[iy*nx*nz+ix*nz+iz];
+                by = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[(iy+1)*nx*nz+ix*nz+iz]);
+                bz = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+ix*nz+iz+1]);
+                rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
+                roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
+                roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
+                l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
+                lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
+                muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+            }
+        }
+
 		iz = nz-1;
         iy = ny-1;
 		for (ix=0;ix<nx-1;ix++) {
+            /* for muxz field */
+            /* csxyz */
 			cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
 			cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
 			cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
-			cs11 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs12 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs21 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
-			cs22 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
-
-			if (cs11 > 0.0) {
-				mul  = 4.0/(1.0/cs11+1.0/cs12+1.0/cs21+1.0/cs22);
+			cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs112 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+			cs212 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+			if (cs111 > 0.0) {
+				mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
 			}
 			else {
 				mul = 0.0;
 			}
+
+            /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs112 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs122 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
+            /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+            // cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+            // cs221 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
 			mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
 			lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
 			lamda    = lamda2mu - 2*mu;
@@ -260,58 +500,124 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 			roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
 			l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
 			lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
-			muu[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+			muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
 		}
 
 		ix = nx-1;
         iz = nz-1;
 		for (iy=0;iy<ny-1;iy++) {
+            /* for muxz field */
+            /* csxyz */
 			cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
 			cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
-			cs2b = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
-			cs11 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs12 = cs2b*ro[iy*nx*nz+ix*nz+iz];
-			cs21 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs22 = cs2b*ro[iy*nx*nz+ix*nz+iz];
-
-			if (cs11 > 0.0) {
-				mul  = 4.0/(1.0/cs11+1.0/cs12+1.0/cs21+1.0/cs22);
+			cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs112 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs212 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			if (cs111 > 0.0) {
+				mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
 			}
 			else {
 				mul = 0.0;
 			}
+
+            /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+			// cs2a = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+            // cs112 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs122 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
+            /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+			// cs2a = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+            // cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs221 = cs2a*ro[(iy+1)*nx*nz+ix*nz+iz];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
 			mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
 			lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
 			lamda    = lamda2mu - 2*mu;
 
 			bx = ro[iy*nx*nz+ix*nz+iz];
-			by = ro[iy*nx*nz+ix*nz+iz];
-			bz = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+ix*nz+iz+1]);
+			by = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[(iy+1)*nx*nz+ix*nz+iz]);
+			bz = ro[iy*nx*nz+ix*nz+iz];
 			rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
 			roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/bx;
 			roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
 			l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
 			lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
-			muu[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+			muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
 		}
 
         ix = nx-1;
         iy = ny-1;
 		for (iz=0;iz<nz-1;iz++) {
+            /* for muxz field */
+            /* csxyz */
 			cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
 			cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
-			cs2b = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
-			cs11 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs12 = cs2b*ro[iy*nx*nz+ix*nz+iz+1];
-			cs21 = cs2*ro[iy*nx*nz+ix*nz+iz];
-			cs22 = cs2b*ro[iy*nx*nz+ix*nz+iz+1];
-
-			if (cs11 > 0.0) {
-				mul  = 4.0/(1.0/cs11+1.0/cs12+1.0/cs21+1.0/cs22);
+			cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+			cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+			cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+			cs212 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+			if (cs111 > 0.0) {
+				mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
 			}
 			else {
 				mul = 0.0;
 			}
+            
+            /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+			// cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+            // cs122 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
+            /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+            /* csxyz */
+            // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+            // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+            // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs121 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs211 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // cs221 = cs2*ro[iy*nx*nz+ix*nz+iz];
+            // if (cs111 > 0.0) {
+            //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+            // }
+            // else {
+            //     mul = 0.0;
+            // }
+
 			mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
 			lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
 			lamda    = lamda2mu - 2*mu;
@@ -324,7 +630,7 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 			roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
 			l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
 			lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
-			muu[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+			muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
 		}
 
 		ix=nx-1;
@@ -339,52 +645,85 @@ long readModel3D(modPar mod, bndPar bnd, float *rox, float *roy, float *roz,
 		by = ro[iy*nx*nz+ix*nz+iz];
 		bz = ro[iy*nx*nz+ix*nz+iz];
 		rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
-		roz[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
+		roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
 		roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
-		l2m[(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
-		lam[(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
-		muu[(ix+ioTx)*n1+iz+ioTz]=fac*mu;
+		l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
+		lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
+		muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mu;
+
+        for (iy=0;iy<ny-1;iy++) {
+            for (ix=0;ix<nx-1;ix++) {
+                for (iz=0;iz<nz-1;iz++) {
+                    /* for muxz field */
+                    /* csxyz */
+                    cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                    cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                    cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                    cs2b = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                    cs2c = cs[iy*nx*nz+(ix+1)*nz+iz+1]*cs[iy*nx*nz+(ix+1)*nz+iz+1];
+                    cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                    cs112 = cs2b*ro[iy*nx*nz+ix*nz+iz+1];
+                    cs211 = cs2a*ro[iy*nx*nz+ix*nz+iz];
+                    cs212 = cs2c*ro[iy*nx*nz+ix*nz+iz+1];
+                    if (cs111 > 0.0) {
+                        mul  = 4.0/(1.0/cs111+1.0/cs112+1.0/cs211+1.0/cs212);
+                    }
+                    else {
+                        mul = 0.0;
+                    }
 
-		for (ix=0;ix<nx-1;ix++) {
-			for (iz=0;iz<nz-1;iz++) {
-				cp2  = cp[ix*nz+iz]*cp[ix*nz+iz];
-				cs2  = cs[ix*nz+iz]*cs[ix*nz+iz];
-				cs2a = cs[(ix+1)*nz+iz]*cs[(ix+1)*nz+iz];
-				cs2b = cs[ix*nz+iz+1]*cs[ix*nz+iz+1];
-				cs2c = cs[(ix+1)*nz+iz+1]*cs[(ix+1)*nz+iz+1];
-
-/*
-Compute harmonic average of mul for accurate and stable fluid-solid interface
-see Finite-difference modeling of wave propagation in a fluid-solid configuration 
-Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
-*/
-
-				cs11 = cs2*ro[ix*nz+iz];
-				cs12 = cs2b*ro[ix*nz+iz+1];
-				cs21 = cs2a*ro[ix*nz+iz];
-				cs22 = cs2c*ro[ix*nz+iz+1];
-//				cpx  = 0.5*(cp[ix*nz+iz]+cp[(ix+1)*nz+iz])
-//				cpz  = 0.5*(cp[ix*nz+iz]+cp[ix*nz+iz+1])
-
-				if (cs11 > 0.0) {
-					mul  = 4.0/(1.0/cs11+1.0/cs12+1.0/cs21+1.0/cs22);
-				}
-				else {
-					mul = 0.0;
-				}
-				mu   = cs2*ro[ix*nz+iz];
-				lamda2mu = cp2*ro[ix*nz+iz];
-				lamda    = lamda2mu - 2*mu; /* could also use mul to calculate lambda, but that might not be correct: question from Chaoshun Hu. Note use mu or mul as well on boundaries */
-	
-				bx = 0.5*(ro[ix*nz+iz]+ro[(ix+1)*nz+iz]);
-				bz = 0.5*(ro[ix*nz+iz]+ro[ix*nz+iz+1]);
-				rox[(ix+ioXx)*n1+iz+ioXz]=fac/bx;
-				roz[(ix+ioZx)*n1+iz+ioZz]=fac/bz;
-				l2m[(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
-				lam[(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
-				muu[(ix+ioTx)*n1+iz+ioTz]=fac*mul;
-			}
-		}
+                    /* for muyz field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                    /* csxyz */
+                    // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                    // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                    // cs2a = cs[iy*nx*nz+ix*nz+iz+1]*cs[iy*nx*nz+ix*nz+iz+1];
+                    // cs2b = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                    // cs2c = cs[(iy+1)*nx*nz+ix*nz+iz+1]*cs[(iy+1)*nx*nz+ix*nz+iz+1];
+                    // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                    // cs121 = cs2b*ro[(iy+1)*nx*nz+ix*nz+iz];
+                    // cs112 = cs2a*ro[iy*nx*nz+ix*nz+iz+1];
+                    // cs122 = cs2c*ro[(iy+1)*nx*nz+ix*nz+iz+1];
+                    // if (cs111 > 0.0) {
+                    //     mul  = 4.0/(1.0/cs111+1.0/cs121+1.0/cs112+1.0/cs122);
+                    // }
+                    // else {
+                    //     mul = 0.0;
+                    // }
+
+                    /* for muxy field IN PROGRESS!!!!!!!!!!!!!!!!! */
+                    /* csxyz */
+                    // cp2  = cp[iy*nx*nz+ix*nz+iz]*cp[iy*nx*nz+ix*nz+iz];
+                    // cs2  = cs[iy*nx*nz+ix*nz+iz]*cs[iy*nx*nz+ix*nz+iz];
+                    // cs2a = cs[iy*nx*nz+(ix+1)*nz+iz]*cs[iy*nx*nz+(ix+1)*nz+iz];
+                    // cs2b = cs[(iy+1)*nx*nz+ix*nz+iz]*cs[(iy+1)*nx*nz+ix*nz+iz];
+                    // cs2c = cs[(iy+1)*nx*nz+(ix+1)*nz+iz]*cs[(iy+1)*nx*nz+(ix+1)*nz+iz];
+                    // cs111 = cs2*ro[iy*nx*nz+ix*nz+iz];
+                    // cs121 = cs2b*ro[(iy+1)*nx*nz+ix*nz+iz];
+                    // cs211 = cs2a*ro[iy*nx*nz+(ix+1)*nz+iz];
+                    // cs221 = cs2c*ro[(iy+1)*nx*nz+(ix+1)*nz+iz];
+                    // if (cs111 > 0.0) {
+                    //     mul  = 4.0/(1.0/cs111+1.0/cs211+1.0/cs121+1.0/cs221);
+                    // }
+                    // else {
+                    //     mul = 0.0;
+                    // }
+
+                    mu   = cs2*ro[iy*nx*nz+ix*nz+iz];
+                    lamda2mu = cp2*ro[iy*nx*nz+ix*nz+iz];
+                    lamda    = lamda2mu - 2*mu;
+        
+                    bx = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+(ix+1)*nz+iz]);
+                    by = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[(iy+1)*nx*nz+ix*nz+iz]);
+                    bz = 0.5*(ro[iy*nx*nz+ix*nz+iz]+ro[iy*nx*nz+ix*nz+iz+1]);
+                    rox[(iy+ioXy)*n2*n1+(ix+ioXx)*n1+iz+ioXz]=fac/bx;
+                    roy[(iy+ioYy)*n2*n1+(ix+ioYx)*n1+iz+ioYz]=fac/by;
+                    roz[(iy+ioZy)*n2*n1+(ix+ioZx)*n1+iz+ioZz]=fac/bz;
+                    l2m[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda2mu;
+                    lam[(iy+ioPy)*n2*n1+(ix+ioPx)*n1+iz+ioPz]=fac*lamda;
+                    muxz[(iy+ioTy)*n2*n1+(ix+ioTx)*n1+iz+ioTz]=fac*mul;
+                }
+            }
+        }
 
 	}
 	else { /* Acoustic Scheme */
@@ -610,7 +949,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                     }
             	}
         	}
-            /* muu field */
+            /* muxz field */
             ixo = mod.ioTx;
             ixe = mod.ioTx+bnd.ntap;
             iyo = mod.ioTy;
@@ -620,7 +959,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[iy*n2*n1+ixe*n1+iz];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[iy*n2*n1+ixe*n1+iz];
                     }
                 }
             }
@@ -741,7 +1080,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                 }
             }
 
-            /* muu field */
+            /* muxz field */
             ixo = mod.ieTx-bnd.ntap;
             ixe = mod.ieTx;
         	iyo = mod.ioTy;
@@ -751,7 +1090,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[iy*n2*n1+(ixo-1)*n1+iz];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[iy*n2*n1+(ixo-1)*n1+iz];
                     }
                 }
             }
@@ -883,7 +1222,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                     }
             	}
         	}
-            /* muu field */
+            /* muxz field */
             ixo = mod.ioTx;
             ixe = mod.ieTx;
 	        if (bnd.lef==4 || bnd.lef==2) ixo -= bnd.ntap;
@@ -895,7 +1234,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[iye*n2*n1+ix*n1+iz];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[iye*n2*n1+ix*n1+iz];
                     }
                 }
             }
@@ -1032,7 +1371,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                 }
             }
 
-            /* muu field */
+            /* muxz field */
             ixo = mod.ioTx;
             ixe = mod.ieTx;
 	        if (bnd.lef==4 || bnd.lef==2) ixo -= bnd.ntap;
@@ -1044,7 +1383,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[(iyo-1)*n2*n1+ix*n1+iz];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[(iyo-1)*n2*n1+ix*n1+iz];
                     }
                 }
             }
@@ -1181,7 +1520,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                 }
             }
 
-            /* muu field */
+            /* muxz field */
             ixo = mod.ioTx;
             ixe = mod.ieTx;
             iyo = mod.ioTy;
@@ -1191,7 +1530,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[iy*n2*n1+ix*n1+ize];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[iy*n2*n1+ix*n1+ize];
                     }
                 }
             }
@@ -1323,7 +1662,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
                 }
             }
 
-            /* muu */
+            /* muxz */
             ixo = mod.ioTx;
             ixe = mod.ieTx;
             iyo = mod.ioTy;
@@ -1333,7 +1672,7 @@ Robbert van Vossen, Johan O. A. Robertsson, and Chris H. Chapman
             for (iy=iyo; iy<iye; iy++) {
                 for (ix=ixo; ix<ixe; ix++) {
                     for (iz=izo; iz<ize; iz++) {
-                        muu[iy*n2*n1+ix*n1+iz] = muu[iy*n2*n1+ix*n1+izo-1];
+                        muxz[iy*n2*n1+ix*n1+iz] = muxz[iy*n2*n1+ix*n1+izo-1];
                     }
                 }
             }