MAKE_DEPEND=yes
#SEPINC = /opt/SEP/SEP6.4.6_INTEL/include
include ${SEPINC}/SEP.top
#include PSPIMakefile
#include 3DMakefile
#include YemiMakefile
#include HBMakefile
#include SHMakefile
include FMakefile

UPSTEXFLAGS=invras=y
LATOPTS  = style=html

F90=ifort
FORTRAN=ifort

LIBDIR = -L$(SEP)/lib 

LFFT= -L/opt/FFTW/lib -L/opt/FFTW/lib  -lfftw3f  -lfftw -lrfftw  -lm
IFFT= -I/opt/FFTW/include

LIBDIR = -L/opt/SEP/SEP6.4.6/lib  -L/net/server/gayeni/lib/$(MTYPE) -L/opt/intel_fce_80/lib/ 
LIBS = -L/opt/intel_fce_80/lib/  -L/net/server/gayeni/lib/$(MTYPE) $(LFFT) 
icube = /net/server/bob/bin/LINUX/cube_sep

FFT= -L/opt/FFTW/lib -lfftw3f -lfftw3f -lm 

gayeni= /net/server/gayeni/
MTYPE=LINUX86_64

UF90DEFINES = -DSEP_OMP -I/opt/FFTW/include $(INCDIR)
UF90INCLUDES= $(INCDIR)
UF90FLAGS = -O3 -openmp -CB -axW -openmp	-Bstatic  -I/opt/FFTW/include -I/opt/FFTW/include # -vec_report3 -quiet
UF90LIBS = $(LIBS) -lbandpass -lsolver -openmp -lsupersetf90 -lsuperset -lsepauxf90 -lsepmathf90 -lsep2df90 -lsep3df90 -lsep3d -lsepf90 -lsep -lsepgeef90 -openmp $(FFT) 

INCDIR = -I/PSPI -I./ -I/opt/intel/fce/10.0.023/include/ -I/opt/intel/fce/10.0.023/include/ -I$(gayeni)/include/$(MTYPE)  $(IFFT) 

grey = Grey >/dev/null title=' '
SRCDIR = ./Src
OBJDIR = ./Src
BINDIR = ./
DATDIR = ./
PARDIR = ./Src
RESDIR = ./fig


D = ${DATDIR}
R = ${RESDIR}
S = ${SRCDIR}
O = ${OBJDIR}
B = ${BINDIR}
P = ${PARDIR}
PW = ./
default: view	
#==============================================

#=============================

ER:
	make zig-perf
	make seg-perf

CR:
	make zig-sfimg
	make zig-largesfseg2
	make zig-canyonseg1
	make zig-canyonseg2
	make velstitch1
	make velstitch2
	make shortimg1
	make shortimg2
	make zmig-1p
	make zmig-mod1
	make zmig-mod2

zig-perf:
	Sep_cube img_perf.H

seg-perf: zig-perfmerge.H
	Sep_cube img_perf.H zig-perfmerge.H run_history=zig-perf.txt

zig-sfimg: zig-img_sed.H
	Sep_cube zig-img_sed.H

zig-largesfseg2: sedflood_largeseg_merge.H
	Sep_cube zig-img_sed.H sedflood_largeseg_merge.H run_history=z2d.txt

zig-canyonseg1: sedflood_z.H sedflood_zseg_merge.H
	Sep_cube sedflood_z.H sedflood_zseg_merge.H run_history=z2d.txt

zig-canyonseg2: sedflood_z.H sedflood_zseg_merge2.H
	Sep_cube sedflood_z.H sedflood_zseg_merge2.H run_history=z2d.txt

velstitch1: vel_stitch1.H
	< vel_stitch1.H Window min1=7500 max1=12000 min2=42000 max2=50000 | Grey title=' ' wantscalebar=y bartype=h barlabel='Vel (ft/s)' > /dev/null out=velstitch1bw.v labelfat=4

velstitch2: vel_stitch2.H
	< vel_stitch2.H Window min1=7500 max1=12000 min2=42000 max2=50000 | Grey title=' ' wantscalebar=y bartype=h barlabel='Vel (ft/s)' > /dev/null out=velstitch2bw.v labelfat=4

shortimg1: shortimg_stitch1.H
	< shortimg_stitch1.H Window3d | Transp | Window max1=13000 min2=40000 max2=50000 | Grey title=' ' out=/net/server/homes/sep/adam/Report/SEP143/adam2/Fig/shortimg1.v > /dev/null labelfat=4

shortimg2: shortimg_stitch2.H
	< shortimg_stitch2.H Window3d | Transp | Window max1=13000 min2=40000 max2=50000 | Grey title=' ' out=/net/server/homes/sep/adam/Report/SEP143/adam2/Fig/shortimg2.v > /dev/null labelfat=4

zmig-1p: zig
	< zig-img.H Window3d | Transp | Window max1=20000 min2=30000 max2=60000 | Grey title=' ' labelfat=4 > /dev/null out=zmig-1p.v

zmig-mod1: zig-m1
	< zig-m1-mig.H Window3d | Transp | Window max1=18000 min1=6500 min2=44000 max2=52000 | Grey title=' ' labelfat=4 > /dev/null out=zmig-mod1.v

zmig-mod2: zig-m2
	< zig-m2-mig.H Window3d | Transp | Window max1=18000 min1=6500 min2=44000 max2=52000 | Grey title=' ' labelfat=4 > /dev/null out=zmig-mod2.v

scaled_perf_amp2.H: img_perf.H
	< $< Envelope | Scale add=1. > imgsc.H
	Math file1=imgsc.H exp='file1+1' > $@
	Rm imgsc.H

zig-segfinal.H: scaled_perf_amp2.H segment_3d.x
	< $< segment_3d.x max_dist=5 min_size=5000 > $@

zig-perfmerge.H: zig-segfinal.H Merge_segments.x zig-saltpicks.H zig-wbpicks.H
	< $< Merge_segments.x picks=zig-saltpicks.H sval=50 > m1.H
	< m1.H Merge_segments.x picks=zig-wbpicks.H sval=.05 > $@
	Rm m1.H
	

segment_3d.x: Src/segment_3d.cpp Src/segment-image_3d.h Src/segment-graph.h Src/disjoint-set.h
	icc -g -O3 -I. -ISrc -I${SEPINC} -o $@ Src/segment_3d.cpp -lm -L${SEP}/lib -lsep3d -lsep -lsepaux


migvel_%pad.H: migvel_%.H
	< $< Pad beg1=100 extend=1 > $@

migvel_pad.H: migvel_act.H
	< $< Pad beg1=100 extend=1 > $@

shots.wpad.H: shots.w2.H
	< $< Pad beg1=50 > $@

spmwavelet2.H: spmwavelet.H
	< $< Pad end1=249 > $@
	echo "o1=10925 d1=150" >> $@

migvel-lloyd.H: migvel_pad.H
	Lloyd_vel < $< nref=2 | Math file1=in exp='1/file1' | Transp plane=23 > $@

zig: shots.wpad.H spmwavelet2.H joint_encode.x migvel_pad.H migvel-lloyd.H
	Transp reshape=2,3,4 < shots.wpad.H > junk0.$@ 
	Create3d < junk0.$@ keyname1=offset_x keyname2=offset_y keyname3=sx > junk1.$@
	Headermath < junk1.$@ > junk2.$@ key1=g_x key2=g_y eqn1="sx+offset_x" eqn2="offset_y"
	Sort3d  < junk2.$@  > junk3.$@ nkeys=3 copy_data=1 grid_data=1 verb=1 key1=g_x og1=7175. dg1=75 ng1=896 key2=g_y og2=0 dg2=75 ng2=1 key3=sx ng3=250 og3=10925 dg3=150  
	Infill3d < junk3.$@ > junk4.$@   
	Transp reshape=1,3,4 plane=23 < junk4.$@ | Stack3d | Transp | Transp plane=23 > $@.H
	echo n4=1 o4=10925 d4=150 label1=g_x label2=g_y label3=w label4=s_x >> $@.H
	Window3d n1=1 < spmwavelet2.H > $@-wav.H squeeze=n  
	$B/joint_encode.x vel=migvel_pad.H data=zig.H wavelet=$@-wav.H report=$@.log adj=y \
                modl1=$@-mig.H  data1=zig.H vel1=migvel_pad.H vel_ref=migvel-lloyd.H \
                jw=1 lloyd=y nsurv=1 code_it=n small=y ltscale=n use_greens=n spike=y wfld_d_out=n wfld_u_out=n encode=n code_it=n spatio=n offset=n \
                taper_pct=0.22 taper_type=2 use_greens=n verb=6 nodes=8 lfreq=y \
                jw=1 spike=n radian=  tmin=-0.5 tmax=0.5 spike_data=n lloyd=y wfld_d_out=n radian=n nsurv=1 code_it=n  small=y ltscale=y use_greens=n wfld_d_out=y wfld_u_out=y spatio=y \
                inv=n \
                min_hx= 100 max_hx= 100 sub_offset=y \
		vnum=`Get n1 parform=n < $@-loyd.H ` \
		lobc=n min_sz=0 min_rz=0 read_data=n phase_encode=y verb=6

zig-m1: shots.wpad.H spmwavelet2.H joint_encode.x migvel_stitch1pad.H migvel-lloyd.H
	Transp reshape=2,3,4 < shots.wpad.H > junk0.$@ 
	Create3d < junk0.$@ keyname1=offset_x keyname2=offset_y keyname3=sx > junk1.$@
	Headermath < junk1.$@ > junk2.$@ key1=g_x key2=g_y eqn1="sx+offset_x" eqn2="offset_y"
	Sort3d  < junk2.$@  > junk3.$@ nkeys=3 copy_data=1 grid_data=1 verb=1 key1=g_x og1=7175. dg1=75 ng1=896 key2=g_y og2=0 dg2=75 ng2=1 key3=sx ng3=250 og3=10925 dg3=150  
	Infill3d < junk3.$@ > junk4.$@   
	Transp reshape=1,3,4 plane=23 < junk4.$@ | Stack3d | Transp | Transp plane=23 > $@.H
	echo n4=1 o4=10925 d4=150 label1=g_x label2=g_y label3=w label4=s_x >> $@.H
	Window3d n1=1 < spmwavelet2.H > $@-wav.H squeeze=n  
	$B/joint_encode.x vel=migvel_stitch1pad.H data=zig.H wavelet=$@-wav.H report=$@.log adj=y \
                modl1=$@-mig.H  data1=zig.H vel1=migvel_stitch1pad.H vel_ref=migvel-lloyd.H \
                jw=1 lloyd=y nsurv=1 code_it=n small=y ltscale=n use_greens=n spike=y wfld_d_out=n wfld_u_out=n encode=n code_it=n spatio=n offset=n \
                taper_pct=0.22 taper_type=2 use_greens=n verb=6 nodes=8 lfreq=y \
                jw=1 spike=n radian=  tmin=-0.5 tmax=0.5 spike_data=n lloyd=y wfld_d_out=n radian=n nsurv=1 code_it=n  small=y ltscale=y use_greens=n wfld_d_out=y wfld_u_out=y spatio=y \
                inv=n \
                min_hx= 100 max_hx= 100 sub_offset=y \
		vnum=`Get n1 parform=n < $@-loyd.H ` \
		lobc=n min_sz=0 min_rz=0 read_data=n phase_encode=y verb=6

zig-m2: shots.wpad.H spmwavelet2.H joint_encode.x migvel_stitch2pad.H migvel-lloyd.H
	Transp reshape=2,3,4 < shots.wpad.H > junk0.$@ 
	Create3d < junk0.$@ keyname1=offset_x keyname2=offset_y keyname3=sx > junk1.$@
	Headermath < junk1.$@ > junk2.$@ key1=g_x key2=g_y eqn1="sx+offset_x" eqn2="offset_y"
	Sort3d  < junk2.$@  > junk3.$@ nkeys=3 copy_data=1 grid_data=1 verb=1 key1=g_x og1=7175. dg1=75 ng1=896 key2=g_y og2=0 dg2=75 ng2=1 key3=sx ng3=250 og3=10925 dg3=150  
	Infill3d < junk3.$@ > junk4.$@   
	Transp reshape=1,3,4 plane=23 < junk4.$@ | Stack3d | Transp | Transp plane=23 > $@.H
	echo n4=1 o4=10925 d4=150 label1=g_x label2=g_y label3=w label4=s_x >> $@.H
	Window3d n1=1 < spmwavelet2.H > $@-wav.H squeeze=n  
	$B/joint_encode.x vel=migvel_stitch2pad.H data=zig.H wavelet=$@-wav.H report=$@.log adj=y \
                modl1=$@-mig.H  data1=zig.H vel1=migvel_stitch2pad.H vel_ref=migvel-lloyd.H \
                jw=1 lloyd=y nsurv=1 code_it=n small=y ltscale=n use_greens=n spike=y wfld_d_out=n wfld_u_out=n encode=n code_it=n spatio=n offset=n \
                taper_pct=0.22 taper_type=2 use_greens=n verb=6 nodes=8 lfreq=y \
                jw=1 spike=n radian=  tmin=-0.5 tmax=0.5 spike_data=n lloyd=y wfld_d_out=n radian=n nsurv=1 code_it=n  small=y ltscale=y use_greens=n wfld_d_out=y wfld_u_out=y spatio=y \
                inv=n \
                min_hx= 100 max_hx= 100 sub_offset=y \
		vnum=`Get n1 parform=n < $@-loyd.H ` \
		lobc=n min_sz=0 min_rz=0 read_data=n phase_encode=y verb=6


%picks.H: %picks.txt
	/usr/bin/perl picks2h.pl < $*picks.txt $*picks.H 
	Dd esize=4 < $*picks.H > $*picks.HH
	Window f1=1 n1=3 < $*picks.HH > $@

clean:
	@-rm -f *.o *.mod
	@-rm -f ${SRCDIR}/*.mod
	@-rm -f ${OBJDIR}/*.o


include ${SEPINC}/SEP.bottom

