# -------------------Compiler & Flags------------------------------------------
F90COMPILER = mpif90
F90LINKER   = mpif90
F90COMPILEOPTS= -C -O2 -fPIC -convert big_endian -traceback
NETCDF =  /pkg/user/j07hsu00/opt/netcdf/4.2.1.1/intel-2015
PNETCDF = /pkg/user/j07hsu00/opt/pnetcdf/1.7.0/intel-2015_mvapich2-2.1
MKL = /pkg/intel/2015/composer_xe_2015.5.223/mkl/lib/intel64
F90COMPILEPATHS=-I${PNETCDF}/include -I${NETCDF}/include
#F90COMPILECPPFLAGS=-DDEBUG=1 -DNETCDF=1 -DPNETCDF=1
F90COMPILECPPFLAGS=
F90LINKOPTS= -m64 -Wl,--no-as-needed
F90LINKPATHS=-L${PNETCDF}/lib -L${NETCDF}/lib -L${MKL}
F90LINKLIBS=-lpnetcdf -lhdf5 -lhdf5_hl -ldl -lm -lz -lcurl -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

# -----------------------------------------------------------------------------
SRCDIR =  src
OBJDIR =  obj 
LOGDIR =  log 

VPATH= $(SRCDIR)

.SUFFIXES: .F .f .f90 .F90 

%.o : %.f90
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $<

%.o : %.F90
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $(F90COMPILECPPFLAGS) $<
 
%.o : %.f
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $<
 
%.o : %.F
	$(F90COMPILER) -c $(F90COMPILEOPTS) $(F90COMPILEPATHS) $(F90COMPILECPPFLAGS) $<
       
SHELL:=/bin/bash 
# -----------------------------------------------------------------------------
all: main.exe move log1 

main.exe: const.o var.o comm.o io.o util.o physics.o filter.o solver.o driver.o main.o
	. /usr/share/Modules/init/bash; \
	module load compiler/intel/2015; \
	module load mpi/intel/2015/mvapich2/2.1; \
	$(F90LINKER) $(F90LINKOPTS) $(F90LINKPATHS) -o $@ $^ $(F90LINKLIBS)
move:	
	mv *.o *.mod ./$(OBJDIR)
log1:
#	mv *.log ./$(LOGDIR)
# -----------------------------------------------------------------------------
.PHONY: dust clean distclean
dust:
	rm -f *.log 
clean:
	rm -f *.exe ./obj/*.o ./obj/*.mod *.log 
distclean: dust clean

submit:
	bsub -a intelmpi -n 48 -o output.%J -e errors.%J  mpirun.lsf ./main.exe 
cess:
	qsub run.job
run:
	mpiexec -n 48 ./main.exe
#	bsub -a intelmpi -n 64 mpirun.lsf ./main.exe 2>&1 | tee log.txt
#	bsub -a intelmpi -n 64 –R "span[hosts=6]" -o output.%J -e errors.%J  mpirun.lsf ./main.exe 
#	bsub -a intelmpi -n 64 -o output.%J -e errors.%J  mpirun.lsf ./main.exe
