# -------------------Compiler & Flags------------------------------------------
F90COMPILER = mpif90
F90LINKER   = mpif90
F90COMPILEOPTS=-O2 -fPIC -m64 -convert big_endian
PNETCDF = /cluster/intel-13.1/pnetcdf-1.3.1-openmpi
MKL = /cluster/intel/composer_xe_2013.5.192/mkl/lib/intel64
F90COMPILEPATHS=-I${PNETCDF}/include 
#F90COMPILECPPFLAGS=-DDEBUG=1 -DNETCDF=1 -DPNETCDF=1
F90COMPILECPPFLAGS=
F90LINKOPTS= -m64 -Wl,--no-as-needed
F90LINKPATHS=-L${PNETCDF}/lib -L${MKL}
F90LINKLIBS=-lnetcdff -lnetcdf -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) $<
       
      
# -----------------------------------------------------------------------------
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
	$(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 96 -o output.%J -e errors.%J  mpirun.lsf ./main.exe 
cess:
	qsub run.job
run:
	mpiexec -n 96 ./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
