include ${SEPINC}/SEP.top

FFTWLIBS = -L/opt/FFTW/lib/ -lfftw3f
YAXUNLIBS= -lsupersetf90 -lsuperset -lsep3df90 -lsep3d -lsep2df90 -L/opt/intel/mkl/8.0.1/lib/32 ${FFTWLIBS} -lsvml
UF90LIBS = -lsepgeef90 -lsep2df90 -lsep3df90 -lsepfftf90 ${FFTWLIBS} ${YAXUNLIBS}

##  -lmkl_lapack32 -lmkl_ia32
# Define Directories
INCDIR = ./
SRCDIR = ./Src
BINDIR = ./Bin
OBJDIR = ./Obj
RESDIR = ./Fig
PARDIR = ./Par
DATDIR = ./Res

# Define Variables
S = ${SRCDIR}
B = ${BINDIR}
O = ${OBJDIR}
R = ${RESDIR}
P = ${PARDIR}
D = ${DATDIR}

RESULTSER = 
RESULTSCR = nmo init-over-true.vel final-over-true.vel true-eta final-eta image
RESULTSNR =
labelvel= label2='x(m)' label1='depth(m)' wantscalebar=y color=j newclip=y wheretitle=b barlabel='velocity m/s' max1=2100
labelmdl= label2='x(m)' label1='depth(m)' wantscalebar=y color=j newclip=y wheretitle=b 
labeleta= label2='x(m)' label1='depth(m)' wantscalebar=y color=j wheretitle=b barlabel=' eta ' max1=2100
labelimg = label2='x(m)' label1='depth(m)'

# =====================================
#       Ani data
# =====================================

record%.HH: ~/Data/hess_syn/shots_right.H $P/win-rec%.P
	Window3d < $< par=$P/win-rec$*.P > $@

src_ani%.HH: $P/src%.P
	Wavelet par=$P/src$*.P > junk.H
	< junk.H ~/Research/4eyl/Bin/XTransf.x forward=1 > junk1.H
	Window3d min1=10 max1=40 < junk1.H > $@; 

crec_ani%.HH: record%.HH 
	< record$*.HH ~/Research/4eyl/Bin/XTransf.x forward=1 > junk1.H
	Window3d min3=10 max3=40 < junk1.H | Transp plane=23 > $@; #rm -f junk*.H

# =====================================
#       Initial model and mask
# =====================================

vnani.H: 
	cp ~/Data/hess_syn/vnani.H $@

# the streched nmo velocity according to delta
vnani_str.H: $B/StrchNMOvel.x vnani.H 
	cp ~/Data/hess_syn/dltani.H dltani.H
	$B/StrchNMOvel.x < vnani.H dlt=dltani.H > $@

init.mdl.H mask.H: $B/InitVelBuild.x vnani_str.H
	$B/InitVelBuild.x < vnani_str.H vmax=3000 vwater=1524 minv_sed=1600 vmin_eta=2100 beta=0. mask=mask.H > init.mdl2.H
	Vel par=vnani_str.H vc=0 > dlt0.H 
	Cat init.mdl2.H ~/Data/hess_syn/dltani.H axis=3 > init.mdl.H
#	Cat init.mdl2.H dlt0.H axis=3 > init.mdl.H

model.%.H: $P/win-vel.%.P init.mdl.H $P/pad-vel.%.P 
	Window3d < init.mdl.H par=$P/win-vel.$*.P | Pad par=$P/pad-vel.$*.P | Transp > model.$*.H

mask.%.H : mask.H $P/win-vel.%.P $P/pad-vel.%.P 
	Window3d < mask.H par=$P/win-vel.$*.P | Pad par=$P/pad-vel.$*.P | Transp > $@ 

# =====================================
#       True model
# =====================================

tmodel.H: vnani.H ~/Data/hess_syn/etaani.H $B/TrueVelBuild.x
	Cat vnani.H ~/Data/hess_syn/etaani.H ~/Data/hess_syn/dltani.H axis=3 > $@

tmodel.%.H: tmodel.H $P/win-vel.%.P $P/pad-vel.%.P
	Window3d < tmodel.H par=$P/win-vel.$*.P | Pad par=$P/pad-vel.$*.P | Transp > $@

# =====================================
#       Two MVA inversion
# =====================================

DAmdl%.H:  model%.H $P/WETpar%.P src_ani%.HH crec_ani%.HH $B/Aniwemva_steepds.x mask%.H
	$B/Aniwemva_steepds.x par=$P/WETpar$*.P adj=1 sou=src_ani$*.HH rec=crec_ani$*.HH mdl=model$*.H mask=mask$*.H bgimage=Bimage$*.H dimage=Dimage$*.H grad=grad$*.H fun=fun$*.H grad_ns=grad_ns$*.H > $@ 

tDAmdl%.H:  tmodel%.H $P/WETpar%.P src_ani%.HH crec_ani%.HH $B/Aniwemva_steepds.x mask%.H
	$B/Aniwemva_steepds.x par=$P/WETpar$*.P adj=1 sou=src_ani$*.HH rec=crec_ani$*.HH mdl=tmodel$*.H mask=mask$*.H bgimage=tBimage$*.H grad=tgrad$*.H fun=tfun$*.H grad_ns=tgrad_ns$*.H illum=tillum$*.H > $@

# =====================================
#       Produce the result 
# =====================================
init-over-true.vel.H: tmodel.hess.H model.hess.H
	Window3d < tmodel.hess.H n3=1 n1=500 f1=100 max2=2200 | Transp | Smooth rect1=10 rect2=100 repeat=5 > vel1.H 
	Window3d < model.hess.H  n3=1 n1=500 f1=100 max2=2200 | Transp | Smooth rect1=10 rect2=100 repeat=5 > vel2.H 
	Math file1=vel2.H file2=vel1.H exp='file1/file2' > $@

final-over-true.vel.H: tmodel.hess.H model.hess.H tDAmdl.hess.H DAmdl.hess.H
	Window3d < tmodel.hess.H n3=1 n1=500 f1=100 max2=2200 | Transp | Smooth rect1=10 rect2=100 repeat=5 > vel1.H 
	Window3d < DAmdl.hess.H f4=15 n3=1 n1=500 f1=100 max2=2200 | Transp \
		| Pow pow=-1 | Smooth rect1=10 rect2=100 repeat=5 > vel2.H 
	Math file1=vel2.H file2=vel1.H exp='file1/file2' > $@

true-eta.H: tmodel.hess.H
	Window3d < tmodel.hess.H f3=1 n3=1 n1=500 f1=100 max2=2200 | Transp | Smooth rect1=10 repeat=5 > $@ 

final-eta.H: DAmdl.hess.H
	Window3d < DAmdl.hess.H f4=15 n3=1 f3=1 n1=500 f1=100 max2=2200 | Transp | \
		Smooth rect1=10 repeat=5 > $@ 
# =====================================
#       Figures
# =====================================
dn= >/dev/null
dnp= title="  " >/dev/null
label= label2='x(m)' label1='depth(m)' wantscalebar=y
# Model
$R/hess.v:
	Grey < ~/Data/hess_syn/vpani.H $(labelvel) $(dn) title=" True vp model " out=$@
	pstexpen $R/hess.v $R/hess.ps color=1 fat=2 fatmult=1.2 invras=n force=n invras=n big=y scale=0.6
	epstopdf $R/hess.ps

# Inversion resutls for perturbation
$R/%-over-true.vel.v: %-over-true.vel.H  
	Grey < $< $(labelvel) $(dn) newclip=1 out=$@
	pstexpen $@ $R/$*-over-true.vel.ps color=1 fat=2 fatmult=1.2 invras=n force=n invras=n big=y scale=0.6
	epstopdf $R/$*-over-true.vel.ps

$R/%-eta.v: %-eta.H  
	Grey < $< $(labeleta) $(dn) newclip=1 out=$@
	pstexpen $@ $R/$*-eta.ps color=1 fat=2 fatmult=1.2 invras=n force=n invras=n big=y scale=0.6
	epstopdf $R/$*-eta.ps

$R/orgnmo.v: vnani.H
	Grey < $< $(labelvel) $(dn) newclip=1 out=$@

$R/strnmo.v: vnani_str.H
	Grey < $< $(labelvel) $(dn) newclip=1 out=$@

$R/nmo.v: $R/strnmo.v  $R/orgnmo.v
	vp_SideBySideAniso  $R/orgnmo.v $R/strnmo.v > $@
	pstexpen $@ $R/nmo.ps color=1 fat=2 fatmult=1.2 invras=n force=n invras=n big=y scale=0.6
	epstopdf $R/nmo.ps

$R/image.v: DAmdl.hess.H tDAmdl.hess.H 
	Window3d < Bimage.hess.H n4=1 n1=501 f1=100 | Transp plane=23 | Transp > 0iter-hess.Bimage.H 
	Window3d < Bimage.hess.H n4=1 f4=16 n1=501 f1=100 | Transp plane=23 | Transp > 16iter-hess.Bimage.H 
	Window3d < tBimage.hess.H n4=1 n1=501 f1=100 | Transp plane=23 | Transp > tBimage.H 
	Grey < 0iter-hess.Bimage.H eout=1 gainpanel=a pclip=100 title = ' ' | \  
	Cubeplot movie=0 frame1=900 frame2=5 frame3=2 >/dev/null out=0iter.Bimage.v
	Grey < 16iter-hess.Bimage.H eout=1 gainpanel=a pclip=100 title = ' ' | \  
	Cubeplot movie=0 frame1=900 frame2=5 frame3=2 >/dev/null out=16iter.Bimage.v
	Grey < tBimage.H eout=1 gainpanel=a pclip=100 title = ' ' | \  
	Cubeplot movie=0 frame1=900 frame2=5 frame3=2 >/dev/null out=tBimage.v
	vp_SideBySideAniso 0iter.Bimage.v 16iter.Bimage.v tBimage.v > $@

FigureCR:
	make $R/nmo.v
	make $R/init-over-true.vel.v
	make $R/final-over-true.vel.v
	make $R/true-eta.v
	make $R/inv-eta.v
	make $R/image.v

CR:
	cp FCR/*.pdf $R/

cleanb: bclean
	rm -f  $B/* $O/*  

clean: jclean
	rm -f *.fix* *.mod *.H
	rm -f *.pdf *.log *.dvi *.aux *.ltx
	rm -f $R/*

purge: cleanb  clean


include ${SEPINC}/SEP.bottom

