#define DEBUG
#define FIGDIR ./Fig
#define BINDIR /hector/Bin/MTYPE

#define BASEDIR ../../..
#include "../../../include/cake/SEP.clop.defs"

#include <SEP.defs>

$ define figures to be produced
#define FIGLIST stackout stackadj stackiters stackinv

$ define objects to be added to the global library
#define LIBSOURCE fopnmostk 

$ programs to be built
#define PROGLIST Nmostack Dottest 

$ default to run in this directory
default&: tube


$ input
stackin.H: if not exist stackin.H
	Spike n1=100 d1=.004 nsp=3 k1=20,50,80 d3=1 label1=Time label2=Offset >stackin.H

$ modeling
stackout.H: BINDIR/Nmostack stackin.H 
	BINDIR/Nmostack <stackin.H adj=0 vel=1.5 dx=.025 nx=20 >stackout.H

FIGDIR/stackout.v: stackin.H stackout.H
	Graph <stackin.H transp=y yreverse=y title="Original input" label2=amplitude >/dev/null out=FIGDIR/tmp1.v
	Wiggle <stackout.H transp=y yreverse=y title="Modeled data" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideAniso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/stackout.v
	RM_CMD FIGDIR/tmp1.v FIGDIR/tmp2.v

$ processing
stackadj.H: BINDIR/Nmostack stackout.H 
	BINDIR/Nmostack <stackout.H adj=1 vel=1.5 >stackadj.H

stackadjmod.H: BINDIR/Nmostack stackadj.H 
	BINDIR/Nmostack <stackadj.H adj=0 vel=1.5 >stackadjmod.H

FIGDIR/stackadj.v: stackadj.H stackadjmod.H
	Graph <stackadj.H transp=y yreverse=y title="Adjoint processing" label2=amplitude >/dev/null out=FIGDIR/tmp1.v
	Wiggle <stackadjmod.H transp=y yreverse=y title="Adjoint + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideAniso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/stackadj.v
	RM_CMD FIGDIR/tmp1.v FIGDIR/tmp2.v

$ inversion iterations
stackiters.H stackinv.H : BINDIR/Nmostack stackout.H 
	BINDIR/Nmostack <stackout.H niter=2 inv=1 vel=1.5 >tmp1.H
	BINDIR/Nmostack <stackout.H niter=5 inv=1 vel=1.5 >tmp2.H
	BINDIR/Nmostack <stackout.H niter=10 inv=1 vel=1.5 >stackinv.H
	Merge tmp1.H tmp2.H stackinv.H axis=2 space=no >stackiters.H
	Rm  tmp1.H tmp2.H 

FIGDIR/stackiters.v: stackiters.H
	Merge stackin.H stackiters.H axis=2 space=no |  Dots title="NMO + Stack inversion" labels="original:2 iterations:5 iterations:10 iterations" gaineach=0  >/dev/null out=FIGDIR/stackiters.v

stackinvmod.H:  BINDIR/Nmostack stackinv.H
	BINDIR/Nmostack <stackinv.H adj=0 vel=1.5 >stackinvmod.H

FIGDIR/stackinv.v: stackinv.H stackinvmod.H
	Graph <stackinv.H transp=y yreverse=y title="Inverse processing" label2=amplitude >/dev/null out=FIGDIR/tmp1.v
	Wiggle <stackinvmod.H transp=y yreverse=y title="Inverse + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideAniso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/stackinv.v
	RM_CMD FIGDIR/tmp1.v FIGDIR/tmp2.v

$ inversion iterations

BINDIR/Nmostack : OBJDIR/Nmostack.o
	CPPLINK(OBJDIR/Nmostack.o,a.out)
	CPPINST(BINDIR/Nmostack)

BINDIR/Dottest : OBJDIR/Dottest.o
	CPPLINK(OBJDIR/Dottest.o,a.out)
	CPPINST(BINDIR/Dottest)


clean&: texclean clopclean jclean

#include <SEP.idoc.rules>
#include <SEP.obj.rules>
#include "../../../include/cake/SEP.clop.rules"
