MODEL = aqm_fcst_5xpmwrf LIB_LOC = /nwprod #STENEX = /nwpara/lib/sorc/aqm_se-rc4n_10 STENEX = /nwpara/lib/ LSTENEX = -L$(STENEX) -laqm_sef90_10 # STENEX = /meso/save/wx20pl/5x_Project/nwpara/sorc/aqm_se-rc4n.fd LPARIO = -L$(LIB_LOC)/lib -laqm_pario LIOAPI = -L$(LIB_LOC)/lib -laqm_ioapi LNTCDF = -L$(LIB_LOC)/lib -laqm_notcdf LSMP = -L/usr/lib -lxlsmp MPI = /usr/lpp/ppe.poe/include/thread FC = /usr/bin/ncepmpxlf90 CC = /usr/bin/ncepcc FSTD = -d -qfixed=132 -qspillsize=4096 -qarch=auto -qmaxmem=-1 # on by default at ncep: # -O (-O2), -g, -qarch=auto, -q64, -qstrict # -qstrict applies to -O3 and higher, # -g does NOT imply no optimization. -O0 ("oh zero") is no optimization HPM_DIR = /usr/local/bin/hpm HPM_INC = -I$(HPM_DIR)/include HPM_LIB = -L$(HPM_DIR)/lib -lhpm_r -lpmapi -lm #HPM_LIB = -L$(HPM_DIR)/lib -lhpm -lpmapi -lm #-qflttrap=zerodivide:overflow:underflow:invalid:imprecise:enable -qsigtrap #FLT = -qflttrap=zero:und:ov:inv:en -qsigtrap FLT = -qflttrap=zero:ov:inv:en -qsigtrap #FLT = # Adding "imprecise" lessens the overhead considerably, but tells you only the # subroutine in which the signal is trapped. Leaving it out gives you the line # of code, but is very costly timewise. #DBG = -qcheck -qfloat=nans -qinit=f90ptr -qinitauto=00 -qextchk DBG = -C -qfloat=nans -qinit=f90ptr -qinitauto=FF911299 -qextchk $(FLT) #DBG = -C -qfloat=nans -qinit=f90ptr -qinitauto=FF911299 $(FLT) # -qfloat=nans Detects operations involving signaling NaN values # -qinitauto=FF911299 Initializes storage for automatic variables to signal Nan # -C same as -qcheck # Compiler Flags #F_FLAGS = $(FSTD) -Q -O3 -qstrict -I$(STENEX) -I . F_FLAGS = $(FSTD) -Q -O3 -qstrict -I$(STENEX)/incmod/aqm_se-rc4n_10 -I . #### add -qarch=pwr5 by WANG 20090430 #F_FLAGS = $(FSTD) -Q -O3 -qarch=pwr5 -qstrict -I$(STENEX)/incmod/aqm_se-rc4n -I . C_FLAGS = -O3 LINK_FLAGS = #LINK_FLAGS = -bnoquiet CPP_FLAGS = \ -WF,-Dparallel \ -WF,-DINTERPB=PINTERPB \ -WF,-DSUBST_MODULES=SE_MODULES \ -WF,-DSUBST_BARRIER=SE_BARRIER \ -WF,-DSUBST_GLOBAL_MAX=SE_GLOBAL_MAX \ -WF,-DSUBST_GLOBAL_SUM=SE_GLOBAL_SUM \ -WF,-DSUBST_GLOBAL_MIN_DATA=SE_GLOBAL_MIN_DATA \ -WF,-DSUBST_LOOP_INDEX=SE_LOOP_INDEX \ -WF,-DSUBST_SUBGRID_INDEX=SE_SUBGRID_INDEX \ -WF,-DSUBST_HI_LO_BND_PE=SE_HI_LO_BND_PE \ -WF,-DSUBST_SUM_CHK=SE_SUM_CHK \ -WF,-DSUBST_COMM=SE_COMM \ -WF,-DSUBST_DATA_COPY=SE_DATA_COPY LIBRARIES = \ $(LSTENEX) \ $(LIOAPI) \ $(LNTCDF) \ $(LPARIO) #### INCL1 = /nwpara/sorc/aqm_fcst_5xpmwrf.fd #INCL1 = /meso/save/wx20pl/5x_Project/nwpara/sorc/aqm_fcst_5xpmwrf.fd INCL1 = /nwpara/sorc/aqm_fcst_5xpmwrf.fd INCL2 = $(INCL1) INCL3 = $(INCL1) INCL4 = $(INCL1) INCLUDES = \ -WF,-DSUBST_PE_COMM=\"$(INCL1)/PE_COMM.EXT\" \ -WF,-DSUBST_FILES_ID=\"$(INCL1)/FILES_CTM.EXT\" \ -WF,-DSUBST_IOPARMS=\"$(INCL1)/PARMS3.EXT\" \ -WF,-DSUBST_IOFDESC=\"$(INCL1)/FDESC3.EXT\" \ -WF,-DSUBST_IODECL=\"$(INCL1)/IODECL3.EXT\" \ -WF,-DSUBST_CONST=\"$(INCL1)/CONST.EXT\" \ -WF,-DSUBST_EMPR_VD=\"$(INCL1)/EMISPRM.vdif.EXT\" \ -WF,-DSUBST_EMPR_CH=\"$(INCL1)/EMISPRM.chem.EXT\" \ -WF,-DSUBST_RXCMMN=\"$(INCL2)/RXCM.EXT\" \ -WF,-DSUBST_RXDATA=\"$(INCL2)/RXDT.EXT\" \ -WF,-DSUBST_GC_SPC=\"$(INCL2)/GC_SPC.EXT\" \ -WF,-DSUBST_GC_EMIS=\"$(INCL2)/GC_EMIS.EXT\" \ -WF,-DSUBST_GC_ICBC=\"$(INCL2)/GC_ICBC.EXT\" \ -WF,-DSUBST_GC_DIFF=\"$(INCL2)/GC_DIFF.EXT\" \ -WF,-DSUBST_GC_DDEP=\"$(INCL2)/GC_DDEP.EXT\" \ -WF,-DSUBST_GC_DEPV=\"$(INCL2)/GC_DEPV.EXT\" \ -WF,-DSUBST_GC_ADV=\"$(INCL2)/GC_ADV.EXT\" \ -WF,-DSUBST_GC_CONC=\"$(INCL2)/GC_CONC.EXT\" \ -WF,-DSUBST_GC_G2AE=\"$(INCL2)/GC_G2AE.EXT\" \ -WF,-DSUBST_GC_G2AQ=\"$(INCL2)/GC_G2AQ.EXT\" \ -WF,-DSUBST_GC_SCAV=\"$(INCL2)/GC_SCAV.EXT\" \ -WF,-DSUBST_GC_WDEP=\"$(INCL2)/GC_WDEP.EXT\" \ -WF,-DSUBST_AE_SPC=\"$(INCL2)/AE_SPC.EXT\" \ -WF,-DSUBST_AE_EMIS=\"$(INCL2)/AE_EMIS.EXT\" \ -WF,-DSUBST_AE_ICBC=\"$(INCL2)/AE_ICBC.EXT\" \ -WF,-DSUBST_AE_DIFF=\"$(INCL2)/AE_DIFF.EXT\" \ -WF,-DSUBST_AE_DDEP=\"$(INCL2)/AE_DDEP.EXT\" \ -WF,-DSUBST_AE_DEPV=\"$(INCL2)/AE_DEPV.EXT\" \ -WF,-DSUBST_AE_ADV=\"$(INCL2)/AE_ADV.EXT\" \ -WF,-DSUBST_AE_CONC=\"$(INCL2)/AE_CONC.EXT\" \ -WF,-DSUBST_AE_A2AQ=\"$(INCL2)/AE_A2AQ.EXT\" \ -WF,-DSUBST_AE_SCAV=\"$(INCL2)/AE_SCAV.EXT\" \ -WF,-DSUBST_AE_WDEP=\"$(INCL2)/AE_WDEP.EXT\" \ -WF,-DSUBST_NR_SPC=\"$(INCL2)/NR_SPC.EXT\" \ -WF,-DSUBST_NR_EMIS=\"$(INCL2)/NR_EMIS.EXT\" \ -WF,-DSUBST_NR_ICBC=\"$(INCL2)/NR_ICBC.EXT\" \ -WF,-DSUBST_NR_DIFF=\"$(INCL2)/NR_DIFF.EXT\" \ -WF,-DSUBST_NR_DDEP=\"$(INCL2)/NR_DDEP.EXT\" \ -WF,-DSUBST_NR_DEPV=\"$(INCL2)/NR_DEPV.EXT\" \ -WF,-DSUBST_NR_ADV=\"$(INCL2)/NR_ADV.EXT\" \ -WF,-DSUBST_NR_N2AE=\"$(INCL2)/NR_N2AE.EXT\" \ -WF,-DSUBST_NR_N2AQ=\"$(INCL2)/NR_N2AQ.EXT\" \ -WF,-DSUBST_NR_SCAV=\"$(INCL2)/NR_SCAV.EXT\" \ -WF,-DSUBST_NR_WDEP=\"$(INCL2)/NR_WDEP.EXT\" \ -WF,-DSUBST_TR_SPC=\"$(INCL3)/TR_SPC.EXT\" \ -WF,-DSUBST_TR_EMIS=\"$(INCL3)/TR_EMIS.EXT\" \ -WF,-DSUBST_TR_ICBC=\"$(INCL3)/TR_ICBC.EXT\" \ -WF,-DSUBST_TR_DIFF=\"$(INCL3)/TR_DIFF.EXT\" \ -WF,-DSUBST_TR_DDEP=\"$(INCL3)/TR_DDEP.EXT\" \ -WF,-DSUBST_TR_DEPV=\"$(INCL3)/TR_DEPV.EXT\" \ -WF,-DSUBST_TR_ADV=\"$(INCL3)/TR_ADV.EXT\" \ -WF,-DSUBST_TR_T2AQ=\"$(INCL3)/TR_T2AQ.EXT\" \ -WF,-DSUBST_TR_SCAV=\"$(INCL3)/TR_SCAV.EXT\" \ -WF,-DSUBST_TR_WDEP=\"$(INCL3)/TR_WDEP.EXT\" \ -WF,-DSUBST_PACTL_ID=\"$(INCL4)/PA_CTL.EXT\" \ -WF,-DSUBST_PACMN_ID=\"$(INCL4)/PA_CMN.EXT\" \ -WF,-DSUBST_PADAT_ID=\"$(INCL4)/PA_DAT.EXT\" \ -WF,-DSUBST_MPICH=\"$(MPI)/mpif.h\" F90_MODULES = \ VGRD_DEFN.o \ CGRID_SPCS.o \ HGRD_DEFN.o \ GRID_CONF.o \ cgrid_defn.o \ ddep_defn.o \ wdep_defn.o \ aconc_defn.o \ vis_defn.o \ wvel_defn.o \ AERO_EMIS.o \ AERO_INFO_AE4.o \ SOA_NEWT.o \ mpim.o DRIVER = \ driver.o \ ctk.o \ advstep.o \ sciproc_yamo.o \ collect.o \ assemble.o INIT = \ initscen.o \ load_cgrid.o \ opconc_yamo.o \ opaconc.o COUPLE = \ couple.o #opssemis.o \# VDIFF_BASE = \ eddyread.o \ opddep.o \ opemis.o \ opmet.o \ rddepv.o \ rdemis.o \ ssemis.o \ rdmet.o \ tridiag.o \ vdiff_map.o \ conv_cgrid.o VDIFF = \ vdiffacm2.o \ eddyx.o \ matrix.o \ tri.o \ $(VDIFF_BASE) #DIFF = \# #vdiffim.o \# #edyintb.o \# #$(VDIFF_BASE) ADV_BASE = \ hcontvel.o \ hadvyppm.o \ rdbcon.o \ advbc_map.o \ zfdbc.o \ zadvyamo.o #DV = \# #hppm.o \# #x_ppm.o \# #x_yamo.o \# #y_ppm.o \# #y_yamo.o \# #$(ADV_BASE) ADV = \ hppm_swap.o \ x_ppm_swap.o \ x_yamo_swap.o \ y_ppm_swap.o \ y_yamo_swap.o \ $(ADV_BASE) HDIFF = \ hdiff.o \ rho_j.o \ hcdiff3d.o \ deform.o CLOUD = \ cldproc_acm.o \ convcld_acm.o \ acmcld.o \ set_aeconcmin.o \ rescld.o \ aq_map.o \ aqchem.o \ getalpha.o \ hlconst.o \ indexn.o \ scavwdep.o \ opwdep.o CHEM = \ hrdata_mod.o \ hrdriver.o \ hrinit.o \ hrsolver.o \ hrprodloss.o \ hrrates.o \ hrcalcks.o \ hrg1.o \ hrg2.o \ hrg3.o \ hrg4.o \ phot_radatt.o AERO = \ aero_depv.o \ aero_driver.o \ aero_subs_nohet_n2o5.o \ isocom.o \ isofwd.o \ isorev.o \ opvis.o UTIL = \ cksummer.o \ findex.o \ get_envlist.o \ subhfile.o \ lstepf.o \ setup_logdev.o OBJECTS = $(F90_MODULES) $(DRIVER) $(INIT) $(COUPLE) $(ADV) $(HDIFF) \ $(VDIFF) $(CHEM) $(AERO) $(CLOUD) $(PROCAN) $(UTIL) .SUFFIXES: .F .f .c $(MODEL) : $(OBJECTS) $(FC) $(LINK_FLAGS) $(OBJECTS) $(LIBRARIES) -o $@ .c.o: $(CC) $(C_FLAGS) -c $< .F.o: $(FC) -c $(F_FLAGS) $(CPP_FLAGS) $(INCLUDES) $< .f.o: $(FC) -c $(F_FLAGS) $(CPP_FLAGS) $(INCLUDES) $< clean: /bin/rm -f $(OBJECTS) F*.f *.mod