Skip to content
Snippets Groups Projects
Commit 582f1f13 authored by Joeri Brackenhoff's avatar Joeri Brackenhoff
Browse files

Homg

parent 23c05f32
No related branches found
No related tags found
No related merge requests found
......@@ -328,7 +328,6 @@ int applySource(modPar mod, srcPar src, wavPar wav, bndPar bnd, int itime, int i
}
else if(src.type == 9) {
rake = 0.5*M_PI;
src.strike=0.5*M_PI;
Mxx = -1.0*(sin(src.dip)*cos(rake)*sin(2.0*src.strike)+sin(src.dip*2.0)*sin(rake)*sin(src.strike)*sin(src.strike));
Mxz = -1.0*(cos(src.dip)*cos(rake)*cos(src.strike)+cos(src.dip*2.0)*sin(rake)*sin(src.strike));
Mzz = sin(src.dip*2.0)*sin(rake);
......
......@@ -548,8 +548,8 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr
if (!getparfloat("dzshot",&dzshot)) dzshot=0.0;
if (!getparfloat("dip",&src->dip)) src->dip=0.0;
if (!getparfloat("strike",&src->strike)) src->strike=1.0;
if (src->strike>=0) src->strike=1.0;
else src->strike = -1.0;
if (src->strike>=0) src->strike=0.5*M_PI;
else src->strike = -0.5*M_PI;
src->dip = M_PI*(src->dip/180.0);
if (shot->n>1) {
......
This diff is collapsed.
......@@ -3,7 +3,7 @@
include ../Make_include
LIBS += -L$L -lgenfft -lm $(LIBSM)
OPTC += -g -Wall
#OPTC += -g -Wall
#ALL: fmute marchenko marchenko2
......
......@@ -121,25 +121,31 @@ void homogeneousg(float *HomG, float *green, complex *Refl, int nx, int nt, int
if (verbose > 2) vmess("Creating Homogeneous G at location %d out of %d",count,Nsyn);
if (scheme==0) { //Marchenko representation
convol(green, &f2p[l*nxs*nts], conv, nxs, nts, dt, 0);
depthDiff(&f2p[l*nxs*nts], ntfft, nshots, dt, dx, fmin, fmax, cp, 1);
convol(green, &f2p[l*nxs*nts], conv, nxs, nts, dt, -2);
timeDiff(conv, ntfft, nshots, dt, fmin, fmax, -2);
if (kxwfilt) {
kxwfilter(conv, ntfft, nshots, dt, dx, fmin, fmax, alpha, cp, perc);
}
for (i=0; i<npossyn; i++) {
j=0;
HomG[(j+nts/2)*Nsyn+synpos[l]] += scl*(conv[i*nts+j] + conv[i*nts+j]);
HomG[(j+nts/2)*Nsyn+synpos[l]] += scl*conv[i*nts+j];
for (j=1; j<nts/2; j++) {
HomG[(j+nts/2)*Nsyn+synpos[l]] += scl*(conv[i*nts+j] + conv[i*nts+nts-j]);
HomG[j*Nsyn+synpos[l]] += scl*(conv[i*nts+(j+nts/2)] + conv[i*nts+nts-(j+nts/2)]);
//HomG[(j+nts/2)*Nsyn+synpos[l]] -= scl*(conv[i*nts+j] + conv[i*nts+nts-j]);
//HomG[j*Nsyn+synpos[l]] -= scl*(conv[i*nts+(j+nts/2)] + conv[i*nts+nts-(j+nts/2)]);
HomG[(j+nts/2)*Nsyn+synpos[l]] += scl*conv[i*nts+j];
HomG[j*Nsyn+synpos[l]] += scl*conv[i*nts+(j+nts/2)];
}
}
}
else if (scheme==1) { //classical representation
corr(&greenf2[l*nxs*nts], greenjkz, tmp1, nxs, nts, dt, 0);
corr(&greenf2jkz[l*nxs*nts], green, tmp2, nxs, nts, dt, 0);
//corr(&greenf2[l*nxs*nts], greenjkz, tmp1, nxs, nts, dt, 0);
//corr(&greenf2jkz[l*nxs*nts], green, tmp2, nxs, nts, dt, 0);
corr(greenjkz, &greenf2[l*nxs*nts], tmp1, nxs, nts, dt, 0);
corr(green, &greenf2jkz[l*nxs*nts], tmp2, nxs, nts, dt, 0);
for (i = 0; i < npossyn; i++) {
for (j = 0; j < nts; j++) {
conv[i*nts+j] = -(tmp2[i*nts+j]-tmp1[i*nts+j]);
conv[i*nts+j] = -(tmp1[i*nts+j]-tmp2[i*nts+j]);
}
}
timeDiff(conv, ntfft, nshots, dt, fmin, fmax, -1);
......@@ -154,9 +160,15 @@ void homogeneousg(float *HomG, float *green, complex *Refl, int nx, int nt, int
}
}
free(conv);
if (scheme==1) free(tmp1);free(tmp2);
if (scheme==1) {
free(tmp1);
free(tmp2);
}
}
if (scheme==1) free(greenf2);free(greenf2jkz);
if (scheme==1) {
free(greenf2);
free(greenf2jkz);
}
t2 = wallclock_time();
if (verbose) {
......@@ -289,19 +301,26 @@ void timeDiff(float *data, int nsam, int nrec, float dt, float fmin, float fmax,
cdatascl[ix*nfreq+iom].r = 0.0;
cdatascl[ix*nfreq+iom].i = 0.0;
}
if (opt > 0) {
if (opt == 1) {
for (iom = iomin ; iom < iomax ; iom++) {
om = deltom*iom;
cdatascl[ix*nfreq+iom].r = -om*cdata[ix*nfreq+iom].i;
cdatascl[ix*nfreq+iom].i = om*cdata[ix*nfreq+iom].r;
}
}
else if (opt < 0) {
else if (opt == -1) {
for (iom = iomin ; iom < iomax ; iom++) {
om = 1.0/(deltom*iom);
cdatascl[ix*nfreq+iom].r = om*cdata[ix*nfreq+iom].i;
cdatascl[ix*nfreq+iom].i = -om*cdata[ix*nfreq+iom].r;
}
}
else if (opt == -2) {
for (iom = iomin ; iom < iomax ; iom++) {
om = 4.0/(deltom*iom);
cdatascl[ix*nfreq+iom].r = om*cdata[ix*nfreq+iom].r;
cdatascl[ix*nfreq+iom].i = om*cdata[ix*nfreq+iom].i;
}
}
}
free(cdata);
......
......@@ -177,7 +177,7 @@ void convol(float *data1, float *data2, float *con, int nrec, int nsam, float dt
free(cdata1);
free(cdata2);
if (shift) {
if (shift==1) {
df = 1.0/(dt*optn);
dw = 2*PI*df;
tau = dt*(nsam/2);
......@@ -191,6 +191,14 @@ void convol(float *data1, float *data2, float *con, int nrec, int nsam, float dt
}
}
}
if (shift==-2) {
for (j = 0; j < nrec; j++) {
for (i = 0; i < nfreq; i++) {
ccon[j*nfreq+i].r = 0.0;
ccon[j*nfreq+i].i *= -1.0;
}
}
}
/* inverse frequency-time FFT and scale result */
sign = 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment