all: Out.osc.png Out.lotka.png Out.osc.gif

Out.osc.gif: out.data.txt Makefile
	>log.data
	echo '#m=1,S=2' >> log.data
	cat $< | while read x y1 y2; do \
		if [ -z $$x ]; then break; fi; \
		echo $$x $$y1; \
		done >> log.data
	echo '#m=2,S=3' >> log.data
	cat $< | while read x y1 y2; do \
		if [ -z $$x ]; then break; fi; \
		echo $$x $$y2; \
		done >> log.data
	graph \
		--output-format gif \
		--toggle-use-color \
		--title-font-size 0.05 \
		--top-label "oscillator example from scipy.integrate.odeint" \
		--x-label "\fIx" \
		--y-label "\fIy" \
		log.data > $@

Out.osc.png: out.data.txt Makefile
	echo '\
set term png notruecolor ;\
set out "$@" ;\
set tics out ;\
set xlabel "{/:Italic t}" ;\
set key bottom ;\
set grid ;\
set ytics 2 ;\
set title "oscillator example from scipy.integrate.odeint" ;\
plot \
 "$<" index 0 using 1:2 with linespoints pt 5 title "{/:Italic θ(t)}"\
,"$<" index 0 using 1:3 with linespoints pt 5 title "{/:Italic ω(t)}"\
	'| tee log.gpi |gnuplot

Out.lotka.png: out.data.txt Makefile
	echo '\
	set term png notruecolor ;\
	set out "$@" ;\
	set tics out ;\
	set xlabel "{/:Italic t}" ;\
	set key top left ;\
	set grid ;\
	set ytics 2 ;\
	set termoption enhanced ;\
	set title "Lotka-Volterra example from scipy.integrate.solve\\\_ivp" ;\
	plot [-1:][]\
 	"$<" index 1 using 1:2 with linespoints pt 5 pointsize 0.5 title "{/:Italic x}"\
	,"$<" index 1 using 1:3 with linespoints pt 5 pointsize 0.5 title "{/:Italic y}"\
	'| tee log.gpi |gnuplot

out.data.txt: main.py ode.py ../matrix/matrix.py
	python $< 1> $@ 2>log

clean:
	$(RM) __pycache__/* [Oo]ut* [Ll]og* *.png *.gif
