#define DEBUG
#define BINDIR /hector/Bin/MTYPE

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

#include <SEP.defs>

#undef CC

#define FIGDIR ./Fig

$ define figure to be produced
#define FIGLIST  out.1 adj.1 inv.1 adjrho.1 invrho.1

$ define object to be added to the global library
#define LIBSOURCE fopsstack

$ programs to be built
#define PROGLIST SStack 

$ default to run in this directory
default&: tube

#define WIGOPTS pclip=100. alpha=70 sz=5 label3=" "

$plots
FIGDIR/out.%.v: ssin.%.H ssout.%.H
	Thplot <ssin.%.H WIGOPTS title="Initial slowness model" >/dev/null out=FIGDIR/tmp1.v
	Thplot <ssout.%.H WIGOPTS title="Initial model" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/out.%.v

$	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v

FIGDIR/adj.%.v: ssadj.%.H ssadj.mod.%.H
	Thplot <ssadj.%.H WIGOPTS title="Adjoint" >/dev/null out=FIGDIR/tmp1.v
	Thplot <ssadj.mod.%.H WIGOPTS title="Adjoint + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/adj.%.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v

FIGDIR/inv.%.v: ssinv.%.H ssinv.mod.%.H
	Thplot <ssinv.%.H WIGOPTS title="Inverse" >/dev/null out=FIGDIR/tmp1.v
	Thplot <ssinv.mod.%.H WIGOPTS title="Inverse + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/inv.%.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v

FIGDIR/adjrho.%.v: ssadjrho.%.H ssadjrho.mod.%.H
	Thplot <ssadjrho.%.H WIGOPTS title="Adjoint + rho filter" >/dev/null out=FIGDIR/tmp1.v
	Thplot <ssadjrho.mod.%.H WIGOPTS title="Adjoint + rho filter + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/adjrho.%.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v

FIGDIR/invrho.%.v: ssinvrho.%.H ssinvrho.mod.%.H
	Thplot <ssinvrho.%.H WIGOPTS title="Preconditioned inverse" >/dev/null out=FIGDIR/tmp1.v
	Thplot <ssinvrho.mod.%.H WIGOPTS title="Preconditioned inverse + modeling" >/dev/null out=FIGDIR/tmp2.v
	vp_SideBySideIso FIGDIR/tmp1.v FIGDIR/tmp2.v >FIGDIR/invrho.%.v
	@RM_CMD  FIGDIR/tmp1.v FIGDIR/tmp2.v

$ input
ssin.%.H: inpar-%
	Spike par=inpar-% >ssin.%.H

$ modeling 
ssout.%.H: ssin.%.H spacepar-% BINDIR/SStack
	BINDIR/SStack < ssin.%.H adj=0 par=spacepar-% > ssout.%.H

%1.mod.%2.H: %1.%2.H spacepar-%2 BINDIR/SStack
	BINDIR/SStack < %1.%2.H adj=0 par=spacepar-%2 > %1.mod.%2.H

$ adjoint 
ssadj.%.H: ssout.%.H BINDIR/SStack slowpar-%
	BINDIR/SStack < ssout.%.H adj=1 par=slowpar-% > ssadj.%.H

$ adjoint with rho
ssadjrho.%.H: ssout.%.H BINDIR/SStack slowpar-%
	BINDIR/SStack < ssout.%.H adj=1 rho=1 par=slowpar-% > ssadjrho.%.H

$ inverse 
ssinv.%.H: ssout.%.H BINDIR/SStack slowpar-%
	BINDIR/SStack < ssout.%.H adj=0 inv=1 par=slowpar-% > ssinv.%.H

$ inverse with rho preconditioner
ssinvrho.%.H: ssout.%.H BINDIR/SStack slowpar-%
	BINDIR/SStack < ssout.%.H adj=0 inv=1 rho=1 par=slowpar-% > ssinvrho.%.H

$ make executables
BINDIR/SStack : OBJDIR/SStack.o
        CPPLINK(OBJDIR/SStack.o,a.out)
        CPPINST(BINDIR/SStack)

clean&: texclean clopclean jclean

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

