#=======================================================================
# User definitions
#

NAME = les.go

F90FILES = types.f90 param.f90 sim_param.f90 sgsmodule.f90 \
	immersedbc.f90 io.f90 fft.f90 test_filtermodule.f90 \
	bottombc.f90 topbc.f90 \
	main.f90 initial.f90 \
	ic_dns.f90 ic.f90 filt_da.f90 \
	ddz_uv.f90 ddz_w.f90 \
	wallstress_dns.f90 wallstress.f90 \
	derivwall_dns.f90 derivwall.f90 convec.f90 padd.f90 unpadd.f90 \
	dns_stress.f90 sgs_stag.f90 scaledep_dynamic.f90 \
	std_dynamic.f90 lagrange_Ssim.f90 lagrange_Sdep.f90 \
	interpolag_Sdep.f90 interpolag_Ssim.f90 \
	 ddx.f90 ddxy.f90 ddy.f90 dealias1.f90 dealias2.f90 \
	divstress_uv.f90 divstress_w.f90 \
	press_stag.f90 press_stag_bldg.f90 tridag.f90 \
	stepbl_w.f90 rmsdiv.f90 energy.f90 forcing.f90

LIBFILES =
F77FILES = ran3.f rg.f

CFILES = 
#LIBS = -lcomplib.sgimath
#LIBS = -ldrfftw -ldfftw -lm
LIBS = -lintel_drfftw -lintel_dfftw -lm
#=======================================================================
# Standard definitions
#
OFILESF90 = $(F90FILES:.f90=.o)
OFILESF77 = $(F77FILES:.f=.o)

# LINUX compilers
F90 = ifc
F77 = ifc
FC = ifc
CC = cc
LD = ifc 

VPATH = obj
.SUFFIXES:
.SUFFIXES: .out .o .f90 .f .c .inc .h

#=======================================================================
# Targets and dependencies
#
default: opt
all: a.out
debug:
	@make all "FLAGS = -g $(FLAGS)"
prof:
	@make all "LIBS = -p $(LIBS)"
opt:
	@make all "FLAGS = -O3 $(FLAGS)"
#	@make all "FLAGS = -O3 -ip $(FLAGS)"
clean:
	rm -rf obj a.out *.o *.kmo *.mod $(NAME)

a.out: obj $(OFILESF77) $(OFILESF90)
	@echo "$(LD) $(OFILESF77) $(OFILESF90) $(LIBS)"
	@cd obj; $(LD) $(OFILESF77) $(OFILESF90) $(LIBS); mv a.out ../$(NAME)
	-rm -r output
	-mkdir output
obj:
	mkdir obj
deps :
	./makedeps.sh "$(F90FILES)"

FFLAGS 	= 	$(opt)
#=======================================================================
# Compilation rules
#
.f90.o:
	$(F90) $(FLAGS) -c $*.f90 -o obj/$*.o
.f.o:
	$(F77) $(FLAGS) -c $*.f -o obj/$*.o
.c.o:
	$(CC) $(FLAGS) -c $*.c -o obj/$*.o

#deps
param.o : types.o
sim_param.o : param.o types.o
sgsmodule.o : param.o types.o
immersedbc.o : param.o types.o
io.o : param.o param.o param.o param.o param.o sgsmodule.o sgsmodule.o sgsmodule.o sim_param.o sim_param.o sim_param.o sim_param.o sim_param.o types.o
fft.o : param.o param.o param.o types.o
test_filtermodule.o : fft.o param.o param.o types.o
bottombc.o : param.o param.o sim_param.o types.o
topbc.o : param.o param.o types.o
main.o : bottombc.o fft.o immersedbc.o io.o param.o sgsmodule.o sim_param.o test_filtermodule.o topbc.o types.o
initial.o : immersedbc.o io.o param.o sgsmodule.o sim_param.o types.o
ic_dns.o : param.o sim_param.o types.o
ic.o : bottombc.o param.o sim_param.o types.o
filt_da.o : fft.o param.o types.o
ddz_uv.o : param.o types.o
ddz_w.o : param.o types.o
wallstress_dns.o : param.o sim_param.o types.o
wallstress.o : bottombc.o param.o sim_param.o test_filtermodule.o types.o
derivwall_dns.o : param.o sim_param.o types.o
derivwall.o : bottombc.o param.o sim_param.o types.o
convec.o : fft.o param.o types.o
padd.o : param.o types.o
unpadd.o : param.o types.o
dns_stress.o : param.o sim_param.o types.o
sgs_stag.o : bottombc.o param.o sgsmodule.o sim_param.o types.o
scaledep_dynamic.o : param.o sgsmodule.o sim_param.o test_filtermodule.o types.o
std_dynamic.o : param.o sim_param.o test_filtermodule.o types.o
lagrange_Ssim.o : param.o sgsmodule.o sim_param.o test_filtermodule.o types.o
lagrange_Sdep.o : param.o sgsmodule.o sim_param.o test_filtermodule.o types.o
interpolag_Sdep.o : param.o sgsmodule.o types.o
interpolag_Ssim.o : param.o sgsmodule.o types.o
ddx.o : fft.o param.o types.o
ddxy.o : fft.o param.o types.o
ddy.o : fft.o param.o types.o
dealias1.o : fft.o param.o types.o
dealias2.o : fft.o param.o types.o
divstress_uv.o : param.o types.o
divstress_w.o : param.o types.o
press_stag.o : fft.o param.o sim_param.o types.o
press_stag_bldg.o : fft.o immersedbc.o param.o sim_param.o types.o
tridag.o : types.o
stepbl_w.o : param.o types.o
rmsdiv.o : param.o types.o
energy.o : param.o sim_param.o types.o
forcing.o : immersedbc.o param.o sim_param.o types.o
#end deps
