#=======================================================================
#
#
#  MAKEFILE FOR ZEUS-MP
#
#
#-------------------  macro definitions  -------------------------------
#
ZMP_EXE    = ../exe/
ZMP_FC     = f77
ZMP_OPTS   = -c -O3 -g3 -64 -mips4 -r10000 -OPT:IEEE_arithmetic=3 -OPT:roundoff=3 -I/usr/apps/math/fftw/fftw-2.1.2/mpi -I/usr/apps/math/fftw/fftw-2.1.2/include
ZMP_CC     = cc -c -g3 -64 -mips4 -r10000
ZMP_LDR    = f77 -64 -mips4 -r10000
ZMP_LIB    = -L/afs/ncsa.uiuc.edu/packages/hdf/4.1r3_irix64-64/lib -ldf -ljpeg -lz -L/usr/apps/math/fftw/fftw-2.1.2/lib -lrfftw_mpi -lfftw_mpi -lrfftw -lfftw -lmpi
ZMP_CPP    = /lib/cpp -DTLB=128 -DUNROLL_I=4 -DUNROLL_J=4 -DUNROLL_K=4
#
#--------------------  implicit rules  ---------------------------------
#
.SUFFIXES: .F .f .c .o

.f.o:
	${ZMP_CPP} -P $*.F | tr -s "" "\012" > $*.f
	${ZMP_FC} ${ZMP_OPTS} $*.f

.F.o:
	${ZMP_CPP} -P $*.F | tr -s "" "\012" > $*.f
	${ZMP_FC} ${ZMP_OPTS} $*.f

zeusmp.o:
	${ZMP_CPP} -P $*.F | tr -s "" "\012" > $*.f
	${ZMP_FC} -c -O0 -g3 -64 -mips4 -r10000 -OPT:IEEE_arithmetic=3 -OPT:roundoff=3 -I/usr/apps/math/fftw/fftw-2.1.2/mpi -I/usr/apps/math/fftw/fftw-2.1.2/include $*.f

msave.o:
	${ZMP_CPP} -P $*.F | tr -s "" "\012" > $*.f
	${ZMP_FC} -c -O0 -g3 -64 -mips4 -r10000 -OPT:IEEE_arithmetic=3 -OPT:roundoff=3 -I/usr/apps/math/fftw/fftw-2.1.2/mpi -I/usr/apps/math/fftw/fftw-2.1.2/include $*.f

.c.o:
	${ZMP_CC} -c -O0 -g3 -64 -mips4 -r10000 -OPT:IEEE_arithmetic=3 -OPT:roundoff=3 -I/usr/apps/math/fftw/fftw-2.1.2/mpi -I/usr/apps/math/fftw/fftw-2.1.2/include $<

#
#-------------------  Fortran object files  ----------------------------
#
FOBJ = advx1.o advx2.o advx3.o avisc.o avisc_d.o bndyflgs.o bval3d.o bvalemf.o clocks.o ct.o dataio.o diverg.o empty.o findno.o forces.o forces_d.o fourn.o ggen.o gravity.o grdv.o hdfall.o hsmoc.o intchk.o lorentz.o lorentz_d.o maxmin.o mgmpi.o mnmx.o momx1.o momx2.o momx3.o movie.o msave.o mstart.o newdt.o newgrid.o newvg.o newx1.o newx2.o nudt.o pdv.o pdv_d.o gpbv.o pressure.o printd.o restart.o setup.o spenergy.o srcstep.o strtoi.o transprt.o tranx1.o tranx2.o tranx3.o tslice.o zeusmp.o blast.o  textdmp.o  linpck.o
#
#-------------------  C object files  ----------------------------------
#
COBJ = bcdflt.o checkin.o fftw_ps.o fftwplan.o mmIsFinite.o mmIsNan.o
#
#---------------------  targets  ---------------------------------------
#
help:
	@echo Type "'make help'             to see this menu"
	@echo Type "'make compile           to create executable
	@echo Type "'make clean'            to remove '*.f' and '*.o' files"
	@echo Type "'make cleaner'          to remove '*.f' '*.o' zeusmp.def"
	@echo "                             ${ZMP_EXE}zmp_inp ${ZMP_EXE}zeusmp.x"
	@echo Type "'make listing'          to create listing of code"
#
#-----------------------------------------------------------------------
#
clean:
	echo "\rm -f *.o *.f"
	\rm -f *.o *.f
#
#-----------------------------------------------------------------------
#
cleaner:
	echo "\rm -f *.o *.f zeusmp.def ${ZMP_EXE}zmp_inp ${ZMP_EXE}zeusmp.x"
	\rm -f *.o *.f zeusmp.def ${ZMP_EXE}zmp_inp ${ZMP_EXE}zeusmp.x
#
#-----------------------------------------------------------------------
#
listing:
	echo "cat Makefile zeusmp.def *.h *.F *.c > listing"
	cat Makefile zeusmp.def *.h *.F *.c > listing
#
#-----------------------------------------------------------------------
#
compile: ${ZMP_EXE}zeusmp.x

${ZMP_EXE}zeusmp.x: ${FOBJ} ${COBJ}
	${ZMP_LDR} -o ${ZMP_EXE}zeusmp.x ${FOBJ} ${COBJ} ${ZMP_LIB}

#
#----------------------  dependencies  ---------------------------------
#
advx1.o: advx1.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h zeusmp.def 

advx2.o: advx2.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h zeusmp.def 

advx3.o: advx3.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h zeusmp.def 

avisc.o: avisc.F field.h grid.h param.h root.h scratch.h zeusmp.def 

avisc_d.o: avisc_d.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h zeusmp.def 

bndyflgs.o: bndyflgs.F bndry.h grid.h param.h root.h zeusmp.def 

bval3d.o: bval3d.F bndry.h grid.h mpicom.h param.h root.h zeusmp.def 

bvalemf.o: bvalemf.F bndry.h grid.h mpicom.h param.h root.h zeusmp.def 

clocks.o: clocks.F clocks.h mod_names.h param.h zeusmp.def 

ct.o: ct.F field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

dataio.o: dataio.F mpicom.h param.h root.h zeusmp.def 

diverg.o: diverg.F grid.h param.h zeusmp.def 

empty.o: empty.F zeusmp.def 

findno.o: findno.F zeusmp.def 

forces.o: forces.F cons.h field.h gravity.h grid.h mpicom.h opac.h param.h radexp.h root.h scratch.h zeusmp.def 

forces_d.o: forces_d.F bndry.h clocks.h field.h grid.h mpicom.h param.h radexp.h root.h scratch.h zeusmp.def 

fourn.o: fourn.F zeusmp.def 

ggen.o: ggen.F bndry.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

gravity.o: gravity.F bndry.h field.h gravity.h grid.h mgmpi.h mpicom.h param.h root.h scratch.h zeusmp.def 

grdv.o: grdv.F cons.h field.h grid.h mpicom.h opac.h param.h radexp.h root.h zeusmp.def 

hdfall.o: hdfall.F cons.h field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

hsmoc.o: hsmoc.F field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

intchk.o: intchk.F clocks.h mod_names.h mpicom.h param.h root.h zeusmp.def 

lorentz.o: lorentz.F field.h grid.h param.h root.h scratch.h zeusmp.def 

lorentz_d.o: lorentz_d.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

maxmin.o: maxmin.F param.h zeusmp.def 

mgmpi.o: mgmpi.F mgmpi.cpp mgmpi_internal.h 

mnmx.o: mnmx.F grid.h param.h scratch.h zeusmp.def 

momx1.o: momx1.F field.h grid.h param.h root.h scratch.h zeusmp.def 

momx2.o: momx2.F field.h grid.h param.h root.h scratch.h zeusmp.def 

momx3.o: momx3.F field.h grid.h param.h root.h scratch.h zeusmp.def 

movie.o: movie.F field.h grid.h param.h root.h zeusmp.def 

msave.o: msave.F bndry.h field.h gravity.h grid.h mpicom.h param.h root.h zeusmp.def 

mstart.o: mstart.F mpicom.h param.h root.h zeusmp.def 

newdt.o: newdt.F field.h grid.h param.h root.h scratch.h zeusmp.def 

newgrid.o: newgrid.F grid.h param.h root.h zeusmp.def 

newvg.o: newvg.F bndry.h field.h grid.h param.h root.h zeusmp.def 

newx1.o: newx1.F grid.h param.h root.h scratch.h zeusmp.def 

newx2.o: newx2.F grid.h param.h root.h scratch.h zeusmp.def 

nudt.o: nudt.F bndry.h clocks.h field.h grid.h mpicom.h param.h radexp.h radiation.h root.h scratch.h zeusmp.def 

pdv.o: pdv.F field.h grid.h param.h root.h zeusmp.def 

pdv_d.o: pdv_d.F bndry.h clocks.h field.h grid.h mpicom.h param.h root.h zeusmp.def 

gpbv.o: gpbv.F bndry.h field.h gravity.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

pressure.o: pressure.F field.h grid.h mpicom.h param.h root.h zeusmp.def 

printd.o: printd.F cons.h field.h gravity.h grid.h mpicom.h param.h radexp.h root.h zeusmp.def 

restart.o: restart.F bndry.h cons.h field.h gravity.h grid.h mgmpi.h mpicom.h opac.h param.h radexp.h radiation.h root.h scratch.h zeusmp.def 

setup.o: setup.F bndry.h cons.h field.h gravity.h grid.h mgmpi.h mpicom.h opac.h param.h radexp.h radiation.h root.h scratch.h zeusmp.def 

spenergy.o: spenergy.F field.h grid.h mpicom.h param.h root.h zeusmp.def 

srcstep.o: srcstep.F bndry.h clocks.h cons.h field.h grid.h mpicom.h opac.h param.h radexp.h radiation.h root.h scratch.h zeusmp.def 

strtoi.o: strtoi.F zeusmp.def 

transprt.o: transprt.F bndry.h field.h grid.h param.h root.h scratch.h zeusmp.def 

tranx1.o: tranx1.F bndry.h field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

tranx2.o: tranx2.F bndry.h field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

tranx3.o: tranx3.F bndry.h field.h grid.h mpicom.h param.h root.h scratch.h zeusmp.def 

tslice.o: tslice.F cons.h field.h gravity.h grid.h mpicom.h param.h radexp.h root.h scratch.h zeusmp.def 

zeusmp.o: zeusmp.F clocks.h field.h gravity.h grid.h impsoln.h mod_names.h mpicom.h options.h param.h radiation.h root.h scratch.h zeusmp.def 

blast.o: blast.F bndry.h cons.h field.h grid.h mod_names.h mpicom.h opac.h param.h radexp.h radiation.h root.h scratch.h zeusmp.def 

textdmp.o: textdmp.F bndry.h cons.h field.h grid.h param.h radexp.h root.h scratch.h zeusmp.def 

linpck.o: linpck.F param.h zeusmp.def 

bcdflt.o: bcdflt.c zeusmp.def 

checkin.o: checkin.c zeusmp.def 

fftw_ps.o: fftw_ps.c 

fftwplan.o: fftwplan.c 

mmIsFinite.o: mmIsFinite.c 

mmIsNan.o: mmIsNan.c 

