From 9479950d5c3cea85a5d53fd5a2bb9f12baa752ff Mon Sep 17 00:00:00 2001 From: JanThorbecke <janth@xs4all.nl> Date: Fri, 13 Mar 2015 16:24:40 +0100 Subject: [PATCH] minor bug fix --- fdelmodc/demo/fdelmodc_circ.scr | 2 +- fdelmodc/recvPar.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fdelmodc/demo/fdelmodc_circ.scr b/fdelmodc/demo/fdelmodc_circ.scr index 1597e09..421682f 100755 --- a/fdelmodc/demo/fdelmodc_circ.scr +++ b/fdelmodc/demo/fdelmodc_circ.scr @@ -35,7 +35,7 @@ export OMP_NUM_THREADS=1 file_src=wavelet.su verbose=5 \ file_rcv=$file_rcv \ file_snap=snap.su \ - rrcv=1200 arcv=2800 oxrcv=0 ozrcv=0 dphi=2.0 \ + arcv=1200 rrcv=2800 oxrcv=0 ozrcv=0 dphi=2.0 \ rec_type_vx=1 rec_type_p=1 rec_int_vx=3 \ dtrcv=0.004 \ xsrc=-1600 zsrc=0 nshot=1 nsrc=1 \ diff --git a/fdelmodc/recvPar.c b/fdelmodc/recvPar.c index f967d9a..0cfb7df 100644 --- a/fdelmodc/recvPar.c +++ b/fdelmodc/recvPar.c @@ -25,7 +25,8 @@ int recvPar(recPar *rec, float sub_x0, float sub_z0, float dx, float dz, int nx, float *xrcv1, *xrcv2, *zrcv1, *zrcv2; int ix0, ix1, iz0, iz1, i, ix, iz, ir, isign, verbose; float dxrcv, dzrcv, *dxr, *dzr, r, rr; - float rrcv, dphi, oxrcv, ozrcv, arcv, circ, h, a, b, e, s, xr, zr, dr, srun; + float rrcv, dphi, oxrcv, ozrcv, arcv; + double circ, h, a, b, e, s, xr, zr, dr, srun, phase; float xrange, zrange; int Nx1, Nx2, Nz1, Nz2, Ndx, Ndz, iarray, nskip, nrec, nh; int nxrcv, nzrcv, ncrcv, nrcv, max_nrec; @@ -62,23 +63,26 @@ int recvPar(recPar *rec, float sub_x0, float sub_z0, float dx, float dz, int nx, a = MAX(rrcv, arcv); b = MIN(rrcv, arcv); e = sqrt(a*a-b*b)/a; + //fprintf(stderr,"a=%f b=%f e=%f\n", a, b, e); circ = 0.0; for (ir=0; ir<nh; ir++) { s = sin(ir*h); circ += sqrt(1.0-e*e*s*s); } - //circ = a*h*circ; + circ = a*h*circ; //fprintf(stderr,"circ = %f circle=%f\n", circ, 2.0*M_PI*rrcv); /* define distance between receivers on ellipse */ dr = circ/ncrcv; ix = 0; srun = 0.0; + if (arcv >= rrcv) phase=0.0; + else phase=0.5*M_PI; for (ir=0; ir<nh; ir++) { s = sin(ir*h); srun += sqrt(1.0-e*e*s*s); - if (srun >= ix*dr ) { - xr = rrcv*cos(ir*h); - zr = arcv*sin(ir*h); + if (a*h*srun >= ix*dr ) { + xr = rrcv*cos(ir*h+phase); + zr = arcv*sin(ir*h+phase); rec->xr[ix] = oxrcv-sub_x0+xr; rec->zr[ix] = ozrcv-sub_z0+zr; rec->x[ix] = NINT(rec->xr[ix]/dx); -- GitLab