# Make file for radiative/convective climate model

###############################
# Set variables
###############################

PLATFORM = linux_pgi
FC = ifort
FCFLAG = -r8 -align all -i-static
OUTPUT = clima
CDOTOC = CLIMA.o
CDOTOR = RRTM.o

# Main file
CSUR = Clima

# Subdirectories (CAPS) and subroutines (lower case)
CPATHR = RRTM
CRTM = rrtm
CREG = rtreg
CRTR = rtr
CATM = rrtatm
CSET = setcoef
CTAU = taumol
CRGC = rtregcld
CRTC = rtrcld
CUTL = util_$(PLATFORM)
CEXT = extra
CRTX = rtrcldmr
CRGX = rtregcldmr
CKGS = k_g
CCLD = cldprop

# These are the climate code files
CPATH1 = SETUP
CPROF = profile
CREAD = readsol
CSTAR = choose_star
CGRID = grid
CIRES = irexpsums
CINTP = interp
CINOZ = interpozone
COZON = ozone

CPATH2 = CONVEC
CCONV = convec
CSATH = satrat
CRELH = relhum
CSATC = satco2

CPATH3 = RADTRANS
CGASC = gascon
CSOL  = solar
CINFR = ir
CRAYL = rayley
CDSTI = delta2strir
CDSTS = delta2str
CMTRX = tridag
CPLAN = planck

CPATH4 = PRTCL
CGRDA = gridaer
CADAT = aerabsdata
CINPA = interpar1

CPATH5 = COUPLE
CTRNT = translatem
COUTP = output_photo
CINPI = input_interp

CPATH6 = PLUME
CPLM = plume
CZERO = zero
CSCPY = scopy
CVINT = vinterp
CRSET = resetr
CSTBC = stabco

OBPATH = $(CDOTOC)/$(CSUR).o \
	 $(CDOTOR)/$(CRTM).o \
	 $(CDOTOR)/$(CREG).o \
	 $(CDOTOR)/$(CRTR).o \
	 $(CDOTOR)/$(CATM).o \
	 $(CDOTOR)/$(CSET).o \
	 $(CDOTOR)/$(CTAU).o \
	 $(CDOTOR)/$(CRGC).o \
	 $(CDOTOR)/$(CRTC).o \
	 $(CDOTOR)/$(CUTL).o \
	 $(CDOTOR)/$(CEXT).o \
	 $(CDOTOR)/$(CRTX).o \
	 $(CDOTOR)/$(CRGX).o \
	 $(CDOTOR)/$(CCLD).o \
	 $(CDOTOR)/$(CKGS).o \
	 $(CDOTOC)/$(CPROF).o \
	 $(CDOTOC)/$(CREAD).o \
	 $(CDOTOC)/$(CSTAR).o \
	 $(CDOTOC)/$(CGRID).o \
	 $(CDOTOC)/$(CIRES).o \
	 $(CDOTOC)/$(CINTP).o \
	 $(CDOTOC)/$(CINOZ).o \
	 $(CDOTOC)/$(COZON).o \
	 $(CDOTOC)/$(CCONV).o \
	 $(CDOTOC)/$(CSATH).o \
	 $(CDOTOC)/$(CRELH).o \
 	 $(CDOTOC)/$(CSATC).o \
	 $(CDOTOC)/$(CGASC).o \
	 $(CDOTOC)/$(CSOL).o  \
	 $(CDOTOC)/$(CINFR).o \
	 $(CDOTOC)/$(CRAYL).o \
	 $(CDOTOC)/$(CDSTI).o \
	 $(CDOTOC)/$(CDSTS).o \
	 $(CDOTOC)/$(CMTRX).o \
	 $(CDOTOC)/$(CPLAN).o \
	 $(CDOTOC)/$(CGRDA).o \
	 $(CDOTOC)/$(CADAT).o \
	 $(CDOTOC)/$(CINPA).o \
	 $(CDOTOC)/$(CTRNT).o \
	 $(CDOTOC)/$(COUTP).o \
	 $(CDOTOC)/$(CINPI).o \
	 $(CDOTOC)/$(CPLM).o \
	 $(CDOTOC)/$(CZERO).o \
	 $(CDOTOC)/$(CSCPY).o \
	 $(CDOTOC)/$(CVINT).o \
	 $(CDOTOC)/$(CRSET).o \
	 $(CDOTOC)/$(CSTBC).o

###############################
# Load line
###############################

$(OUTPUT) : $(OBPATH) 
	$(FC) $(FCFLAG) -o $(OUTPUT) $(OBPATH)

###############################
# Object compile lines
###############################

$(CDOTOC)/$(CSUR).o : $(CSUR).f
	$(FC) $(FCFLAG) -c $(CSUR).f
	\mv $(CSUR).o $(CDOTOC)

$(CDOTOC)/$(CPROF).o : $(CPATH1)/$(CPROF).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CPROF).f
	\mv $(CPROF).o $(CDOTOC)

$(CDOTOC)/$(CREAD).o : $(CPATH1)/$(CREAD).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CREAD).f
	\mv $(CREAD).o $(CDOTOC)

$(CDOTOC)/$(CSTAR).o : $(CPATH1)/$(CSTAR).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CSTAR).f
	\mv $(CSTAR).o $(CDOTOC)

$(CDOTOC)/$(CGRID).o : $(CPATH1)/$(CGRID).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CGRID).f
	\mv $(CGRID).o $(CDOTOC)

$(CDOTOC)/$(CIRES).o : $(CPATH1)/$(CIRES).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CIRES).f
	\mv $(CIRES).o $(CDOTOC)

$(CDOTOC)/$(CINTP).o : $(CPATH1)/$(CINTP).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CINTP).f
	\mv $(CINTP).o $(CDOTOC)

$(CDOTOC)/$(CINOZ).o : $(CPATH1)/$(CINOZ).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(CINOZ).f
	\mv $(CINOZ).o $(CDOTOC)

$(CDOTOC)/$(COZON).o : $(CPATH1)/$(COZON).f
	$(FC) $(FCFLAG) -c $(CPATH1)/$(COZON).f
	\mv $(COZON).o $(CDOTOC)

$(CDOTOC)/$(CCONV).o : $(CPATH2)/$(CCONV).f
	$(FC) $(FCFLAG) -c $(CPATH2)/$(CCONV).f
	\mv $(CCONV).o $(CDOTOC)

$(CDOTOC)/$(CSATH).o : $(CPATH2)/$(CSATH).f
	$(FC) $(FCFLAG) -c $(CPATH2)/$(CSATH).f
	\mv $(CSATH).o $(CDOTOC)

$(CDOTOC)/$(CRELH).o : $(CPATH2)/$(CRELH).f
	$(FC) $(FCFLAG) -c $(CPATH2)/$(CRELH).f
	\mv $(CRELH).o $(CDOTOC)

$(CDOTOC)/$(CSATC).o : $(CPATH2)/$(CSATC).f
	$(FC) $(FCFLAG) -c $(CPATH2)/$(CSATC).f
	\mv $(CSATC).o $(CDOTOC)

$(CDOTOC)/$(CGASC).o : $(CPATH3)/$(CGASC).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CGASC).f
	\mv $(CGASC).o $(CDOTOC)

$(CDOTOC)/$(CSOL).o : $(CPATH3)/$(CSOL).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CSOL).f
	\mv $(CSOL).o $(CDOTOC)

$(CDOTOC)/$(CINFR).o : $(CPATH3)/$(CINFR).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CINFR).f
	\mv $(CINFR).o $(CDOTOC)

$(CDOTOC)/$(CRAYL).o : $(CPATH3)/$(CRAYL).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CRAYL).f
	\mv $(CRAYL).o $(CDOTOC)

$(CDOTOC)/$(CDSTI).o : $(CPATH3)/$(CDSTI).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CDSTI).f
	\mv $(CDSTI).o $(CDOTOC)

$(CDOTOC)/$(CDSTS).o : $(CPATH3)/$(CDSTS).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CDSTS).f
	\mv $(CDSTS).o $(CDOTOC)

$(CDOTOC)/$(CMTRX).o : $(CPATH3)/$(CMTRX).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CMTRX).f
	\mv $(CMTRX).o $(CDOTOC)

$(CDOTOC)/$(CPLAN).o : $(CPATH3)/$(CPLAN).f
	$(FC) $(FCFLAG) -c $(CPATH3)/$(CPLAN).f
	\mv $(CPLAN).o $(CDOTOC)

$(CDOTOC)/$(CGRDA).o : $(CPATH4)/$(CGRDA).f
	$(FC) $(FCFLAG) -c $(CPATH4)/$(CGRDA).f
	\mv $(CGRDA).o $(CDOTOC)

$(CDOTOC)/$(CADAT).o : $(CPATH4)/$(CADAT).f
	$(FC) $(FCFLAG) -c $(CPATH4)/$(CADAT).f
	\mv $(CADAT).o $(CDOTOC)

$(CDOTOC)/$(CINPA).o : $(CPATH4)/$(CINPA).f
	$(FC) $(FCFLAG) -c $(CPATH4)/$(CINPA).f
	\mv $(CINPA).o $(CDOTOC)

$(CDOTOC)/$(CTRNT).o : $(CPATH5)/$(CTRNT).f
	$(FC) $(FCFLAG) -c $(CPATH5)/$(CTRNT).f
	\mv $(CTRNT).o $(CDOTOC)

$(CDOTOC)/$(COUTP).o : $(CPATH5)/$(COUTP).f
	$(FC) $(FCFLAG) -c $(CPATH5)/$(COUTP).f
	\mv $(COUTP).o $(CDOTOC)

$(CDOTOC)/$(CINPI).o : $(CPATH5)/$(CINPI).f
	$(FC) $(FCFLAG) -c $(CPATH5)/$(CINPI).f
	\mv $(CINPI).o $(CDOTOC)

$(CDOTOC)/$(CPLM).o : $(CPATH6)/$(CPLM).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CPLM).f
	\mv $(CPLM).o $(CDOTOC)

$(CDOTOC)/$(CZERO).o : $(CPATH6)/$(CZERO).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CZERO).f
	\mv $(CZERO).o $(CDOTOC)

$(CDOTOC)/$(CSCPY).o : $(CPATH6)/$(CSCPY).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CSCPY).f
	\mv $(CSCPY).o $(CDOTOC)

$(CDOTOC)/$(CVINT).o : $(CPATH6)/$(CVINT).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CVINT).f
	\mv $(CVINT).o $(CDOTOC)
 
$(CDOTOC)/$(CRSET).o : $(CPATH6)/$(CRSET).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CRSET).f
	\mv $(CRSET).o $(CDOTOC)

$(CDOTOC)/$(CSTBC).o : $(CPATH6)/$(CSTBC).f
	$(FC) $(FCFLAG) -c $(CPATH6)/$(CSTBC).f
	\mv $(CSTBC).o $(CDOTOC)

# RRTM files
$(CDOTOR)/$(CRTM).o : $(CPATHR)/$(CRTM).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRTM).f
	\mv $(CRTM).o $(CDOTOR)

$(CDOTOR)/$(CRTR).o : $(CPATHR)/$(CRTR).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRTR).f
	\mv $(CRTR).o $(CDOTOR)

$(CDOTOR)/$(CREG).o : $(CPATHR)/$(CREG).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CREG).f
	\mv $(CREG).o $(CDOTOR)

$(CDOTOR)/$(CATM).o : $(CPATHR)/$(CATM).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CATM).f
	\mv $(CATM).o $(CDOTOR)

$(CDOTOR)/$(CSET).o : $(CPATHR)/$(CSET).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CSET).f
	\mv $(CSET).o $(CDOTOR)

$(CDOTOR)/$(CTAU).o : $(CPATHR)/$(CTAU).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CTAU).f
	\mv $(CTAU).o $(CDOTOR)

$(CDOTOR)/$(CRGC).o : $(CPATHR)/$(CRGC).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRGC).f
	\mv $(CRGC).o $(CDOTOR)

$(CDOTOR)/$(CRTC).o : $(CPATHR)/$(CRTC).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRTC).f
	\mv $(CRTC).o $(CDOTOR)

$(CDOTOR)/$(CUTL).o : $(CPATHR)/$(CUTL).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CUTL).f
	\mv $(CUTL).o $(CDOTOR)

$(CDOTOR)/$(CEXT).o : $(CPATHR)/$(CEXT).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CEXT).f
	\mv $(CEXT).o $(CDOTOR)

$(CDOTOR)/$(CRTX).o : $(CPATHR)/$(CRTX).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRTX).f
	\mv $(CRTX).o $(CDOTOR)

$(CDOTOR)/$(CRGX).o : $(CPATHR)/$(CRGX).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CRGX).f
	\mv $(CRGX).o $(CDOTOR)

$(CDOTOR)/$(CCLD).o : $(CPATHR)/$(CCLD).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CCLD).f
	\mv $(CCLD).o $(CDOTOR)

$(CDOTOR)/$(CKGS).o : $(CPATHR)/$(CKGS).f
	$(FC) $(FCFLAG) -c $(CPATHR)/$(CKGS).f
	\mv $(CKGS).o $(CDOTOR)

conclude :
	echo
	echo '================='
	echo '  Makefile done'
	echo '================='

clean:
	rm -rf $(OUTPUT)
	rm -rf $(CDOTOC)/*.o
	rm -rf $(CDOTOR)/*.o

new:
	$(MAKE) clean
	$(MAKE)
