From 3235b9907afb5bc890966afed2a89b03734d89d5 Mon Sep 17 00:00:00 2001
From: Jan Thorbecke <janth@xs4all.nl>
Date: Fri, 17 Nov 2017 09:11:12 +0100
Subject: [PATCH] added shift=1 option for fw wavelet in makewave

---
 .gitignore       |   2 ++
 utils/.DS_Store  | Bin 6148 -> 0 bytes
 utils/freqwave.c |  22 +++++++++++++++++++++-
 3 files changed, 23 insertions(+), 1 deletion(-)
 delete mode 100644 utils/.DS_Store

diff --git a/.gitignore b/.gitignore
index 7787d36..72d36c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
 bin/*
 *.su
 *.bin
+*/.DS*
+*/*/.DS*
 .DS*
 Make_include
 fdelmodc_cuda.tgz
diff --git a/utils/.DS_Store b/utils/.DS_Store
deleted file mode 100644
index 5d8b277ada4cef672e1465469fef8caba9df3553..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeHKu};G<5VcEzR0z=l0izd~I<%;$EJ#r)0~=Bh41geMsy0#*S8YlKr6`}k2EW6^
z%*5|-XPc;~u+j?MN#}Py-`Vj?Wak)Tygu+Nj1?JU7ARt_0L>4A<ET@TGoB?tj&pd!
ze%A}72mQCHXmZRW1NiRp%x5hYF**7EylxoulXCfk=N9sdOUo9@s&(ab<j_gnWYDj>
zy$jU~{FZ0zQz^sDcD=KpHM}maAIdm!gSge32){fJVqXsHauEA{HP4BgbRf5Ya$VdQ
zjcO&aTiG9%#Hdy)mqc~1Ivy9S&F#v;@lAAhKYAEHK5I@ne11yS41U227}@s1cExGR
zsH+F7N0VcbY&85q(q!!YRqUvUEH9G&uVdZL<eX2KnC0C%y*QL{8+>2SrzWO`7$63S
zfmt(P4kc@4)(=AK69dG++%bUXg8)Ue4W=5^(E*Jr0RZ#hRsuHG5||?l+6GgNFapAL
zDxgl~ro`Yn9sI(?*#=XMI-PM-d~mZeHx&w3tHb<4g)?qzq?Q;U2EH?}pu0u9|DhQA
zt^WU>L_K1F82DEV@O;B*)L~2JZk^g3-n9bs1{4M3QjJ*(80sp9SiFk2K$U=BpaEzb
TOf`ZBgnk4R4b%_=f6Blo!Rcr0

diff --git a/utils/freqwave.c b/utils/freqwave.c
index a9a05b0..156299e 100644
--- a/utils/freqwave.c
+++ b/utils/freqwave.c
@@ -33,7 +33,7 @@ void hilbertTrans(float *data, int nsam);
 
 void freqwave(float *wave, int nt, float dt, float fp, float fmin, float flef, float frig, float fmax, float t0, float db, int shift, int cm, int cn, char *w, float scale, int scfft, int inverse, float eps, int verbose)
 {
-	int    	iof, nfreq, nf, i, j, sign, optn, stored;
+	int    	it, iof, nfreq, nf, i, j, sign, optn, stored;
 	int		ifmin1, ifmin2, ifmax1, ifmax2;
 	float  	df, fact, alfa, f, max, freq, att, ampl, phase;
 	float  	tt, dum;
@@ -182,6 +182,26 @@ void freqwave(float *wave, int nt, float dt, float fp, float fmin, float flef, f
 			cwave[j].r = 0.0;
 			cwave[j].i = 0.0;
 		}
+		if (shift == 1) {
+		    sign = 1;
+		    cr1fft(cwave, rwave, optn, sign);
+            max = rwave[0]*rwave[0];
+			for (i = 1; i < optn; i++) {
+                if (rwave[i] < 0.0) { it=i; break;}
+            }
+            it = it;
+            dum = 0.0;
+			for (j = 0; j < it; j++) 
+                dum += fabs(rwave[j]);
+            max = dum;
+			for (i = 1; i < optn/2; i++) {
+                dum = dum - fabs(rwave[i-1]) + fabs(rwave[i+it-1]);
+                //fprintf(stderr,"dum=%f i=%d\n", dum, i);
+				if ((dum)>(0.03*max*att/it)) {
+					t0 = (float)i*dt;
+				}
+			}
+		}
 		for (iof = 0; iof < nfreq; iof++) {
 			f = iof*df;
 			tmp.r = cwave[iof].r*cos(2.0*M_PI*f*t0);
-- 
GitLab