################################################################################
#makefile for CYTRAN, Wayne A. Houlberg, ORNL
################################################################################
#Options:
#  make cytran      -compile and load cytran
#  make test        -run with default namelist file
#  make fire        -run FIRE test case
#  make ignitor     -run IGNITOR test case
#  make iter        -run ITER test case
#  make all         -run all test cases
#  make clean       -remove all .o and .mod files
################################################################################
#Directory structure:
#  \cytran          -main directory plus make file
#    \bin           -binaries
#    \dat           -data
#    \doc           -documentation
#    \results       -results
#    \src           -source code
################################################################################
#Environment variable CPU used to set platform-dependent make variables
#  Set the CPU environment variable before executing make, e.g.,
#  setenv CPU 'DEC'
################################################################################
SHELL     = /bin/sh
OBJECTS   = cytran_dr.o \
            spec_kind_mod.o \
            cytran_mod.o \
            linear1_mod.o \
            spline1_mod.o \
            write_mod.o \
            x_mod.o \
            ajax_mod.o \
            setup_ajax.o
################################################################################
#Set compiler options:
################################################################################
# DEC-alpha
FCDEC     = f90 -O
COPDEC    = -c
##########
# HP
FCHP     = f90 -C +DA1.1 +DS1.1
COPHP    = -c
##########
# RS6000
FCIBM     = xlf90 -O
COPIBM    = -c
##########
# Cray J-90
FCJ90     = f90 -O -D__CRAY
COPJ90    = -c
##########
# NagWare (Linux)
FCNAG     = f95 -O -dusty -D__NAGWARE
COPNAG    = -c
##########
# PGI (Linux), Pentium optimization
FCPGI     = pgf90 -O -fast -tp p6
COPPGI    = -c
##########
# Solaris
FCSOL     = f90 -O2
COPSOL    = -c
##########
# SGI
FCSGI     = f90 -O -ftpp -macro_expand
COPSGI    = -c
##########
#Select relevant set of switches
FC        = $(FC$(CPU))
COP       = $(COP$(CPU))
################################################################################
# Compiling and linking commands
################################################################################
COMPILE   = $(FC) $(COP)
LINK      = $(FC)
################################################################################
# Targets and rules
################################################################################
#  make cytran      -compile and load cytran
cytran:     $(OBJECTS)
	@echo "starting option cytran"
	$(LINK) -o cytran $(OBJECTS)
	mv cytran ../bin/cytran
	@echo "done with option cytran"
##########
#  make test        -run with default namelist file
test: cytran
	@echo "starting option test"
	cd ../dat ; \
    ../bin/cytran
	@echo "done with option test"
##########
#  make fire        -run FIRE test case
fire: cytran
	@echo "starting option fire"
	cd ../dat ; \
    cp nml_cytran_FIRE.dat nml_cytran.dat ; \
    ../bin/cytran
	cp ../dat/sum_cytran.dat ../results/sum_cytran_FIRE.dat
	@echo "summary is saved in results/sum_cytran_FIRE.dat"
	cp ../dat/1d_cytran.dat ../results/1d_cytran_FIRE.dat
	@echo "1d profiles are saved in results/1d_cytran_FIRE.dat"
	cp ../dat/msg_cytran.dat ../results/msg_cytran_FIRE.dat
	@echo "messages are saved in results/msg_cytran_FIRE.dat"
	@echo "done with option fire"
##########
#  make ignitor     -run IGNITOR test case
ignitor: cytran
	@echo "starting option ignitor"
	cd ../dat ; \
    cp nml_cytran_IGNITOR.dat nml_cytran.dat ; \
    ../bin/cytran
	cp ../dat/sum_cytran.dat ../results/sum_cytran_IGNITOR.dat
	@echo "summary is saved in results/sum_cytran_IGNITOR.dat"
	cp ../dat/1d_cytran.dat ../results/1d_cytran_IGNITOR.dat
	@echo "1d profiles are saved in results/1d_cytran_IGNITOR.dat"
	cp ../dat/msg_cytran.dat ../results/msg_cytran_IGNITOR.dat
	@echo "messages are saved in results/msg_cytran_IGNITOR.dat"
	@echo "done with option ignitor"
##########
#  make iter        -run ITER test case
iter: cytran
	@echo "starting option iter"
	cd ../dat ; \
    cp nml_cytran_ITER.dat nml_cytran.dat ; \
    ../bin/cytran
	cp ../dat/sum_cytran.dat ../results/sum_cytran_ITER.dat
	@echo "summary is saved in results/sum_cytran_ITER.dat"
	cp ../dat/1d_cytran.dat ../results/1d_cytran_ITER.dat
	@echo "1d profiles are saved in results/1d_cytran_ITER.dat"
	cp ../dat/msg_cytran.dat ../results/msg_cytran_ITER.dat
	@echo "messages are saved in results/msg_cytran_ITER.dat"
	@echo "done with option iter"
##########
#  make all         -run all test cases
all: fire ignitor iter
	@echo "done with option all"
##########
#  make clean       -remove all .o and .mod files
clean:
	@echo "starting option clean"
	rm -f *.o *.mod 
	@echo "done with option clean"
################################################################################
# Dependencies:
################################################################################
spec_kind_mod.o: spec_kind_mod.f90
	$(COMPILE) -o   spec_kind_mod.o spec_kind_mod.f90
##########
cytran_mod.o:    cytran_mod.f90 \
                 spec_kind_mod.o
	$(COMPILE) -o   cytran_mod.o cytran_mod.f90
##########
linear1_mod.o:   linear1_mod.f90 \
                 spec_kind_mod.o
	$(COMPILE) -o   linear1_mod.o linear1_mod.f90
##########
spline1_mod.o:   spline1_mod.f90 \
                 spec_kind_mod.o
	$(COMPILE) -o   spline1_mod.o spline1_mod.f90
##########
x_mod.o:         x_mod.f90 \
                 spec_kind_mod.o
	$(COMPILE) -o   x_mod.o x_mod.f90
##########
write_mod.o:     write_mod.f90 \
                 spec_kind_mod.o
	$(COMPILE) -o   write_mod.o write_mod.f90
##########
ajax_mod.o:      ajax_mod.f90 \
                 spec_kind_mod.o \
                 linear1_mod.o \
                 spline1_mod.o
	$(COMPILE) -o   ajax_mod.o ajax_mod.f90
##########
setup_ajax.o:    setup_ajax.f90 \
                 spec_kind_mod.o \
                 ajax_mod.o
	$(COMPILE) -o   setup_ajax.o setup_ajax.f90
##########
cytran_dr.o:     cytran_dr.f90 \
                 spec_kind_mod.o \
                 cytran_mod.o \
                 linear1_mod.o \
                 spline1_mod.o \
                 write_mod.o \
                 x_mod.o \
                 ajax_mod.o \
                 setup_ajax.o
	$(COMPILE) -o   cytran_dr.o cytran_dr.f90
