## NEMS configuration file ## ## Platform: STAMPEDE ## Compiler: Intel with IntelMPI SHELL=/bin/sh ################################################################################ ## Include the common configuration parts ifdef InNemsMakefile include $(TOP)/conf/configure.nems.NUOPC endif ###################### PHYS_MODE ##### CHEM_MODE ############################### # # # PHYS_MODE =compile CHEM_MODE =compile ifeq ($(PHYS_MODE),compile) PHYS_LIB = $(TOP)/atmos/gsm/gsmphys PHYS_INC = $(TOP)/atmos/gsm/gsmphys PHYS_DIR = $(TOP)/atmos/gsm/gsmphys endif ifeq ($(CHEM_MODE),compile) CHEM_LIB = $(TOP)/chem CHEM_INC = $(TOP)/chem/gocart/src/Config/ CHEM_DIR = $(TOP)/chem CHEM_MOD = $(TOP)/chem/gocart/${ARCH}/include ESMADIR = chem/gocart endif ############ # commands # ############ FC = mpiifort CC = mpiicc CXX = mpiicpc LD = mpiifort -mkl=sequential ######### # flags # ######### # default is 64-bit OpenMP non-hydrostatic build using AVX2 DEBUG = REPRO = VERBOSE = OPENMP = Y AVX2 = Y HYDRO = N CCPP = N STATIC = N include $(ESMFMKFILE) ESMF_INC = $(ESMF_F90COMPILEPATHS) NEMSIOINC = -I$(NEMSIO_INC) NCEPLIBS = $(NEMSIO_LIB) $(BACIO_LIB4) $(SP_LIBd) $(W3EMC_LIBd) $(W3NCO_LIBd) ############################################## # Need to use at least GNU Make version 3.81 # ############################################## need := 3.81 ok := $(filter $(need),$(firstword $(sort $(MAKE_VERSION) $(need)))) ifneq ($(need),$(ok)) $(error Need at least make version $(need). Load module gmake/3.81) endif NETCDF_ROOT = $(NETCDF) INCLUDE = -I$(NETCDF_ROOT)/include NETCDF_INC = -I$(NETCDF_ROOT)/include ifneq ($(findstring netcdf/4,$(LOADEDMODULES)),) NETCDF_LIB += -L$(NETCDF_ROOT)/lib -lnetcdff -lnetcdf else NETCDF_LIB += -L$(NETCDF_ROOT)/lib -lnetcdff -lnetcdf endif FPPFLAGS := -fpp -Wp,-w $(INCLUDE) CFLAGS := $(INCLUDE) FFLAGS := $(INCLUDE) -fno-alias -auto -safe-cray-ptr -save-temps -ftz -assume byterecl -nowarn -sox -align array64byte CPPDEFS += -Duse_libMPI -Duse_netCDF -DSPMD -DUSE_LOG_DIAG_FIELD_INFO -DUSE_GFSL63 -DGFS_PHYS -Duse_WRTCOMP CPPDEFS += -DNEW_TAUCTMAX -DINTERNAL_FILE_NML -DNO_INLINE_POST ifeq ($(HYDRO),Y) CPPDEFS += else CPPDEFS += -DMOIST_CAPPA -DUSE_COND endif ifeq ($(NAM_phys),Y) CPPDEFS += -DNAM_phys endif ifeq ($(32BIT),Y) CPPDEFS += -DOVERLOAD_R4 -DOVERLOAD_R8 FFLAGS += -i4 -real-size 32 else ifeq ($(REPRO),Y) FFLAGS += -i4 -real-size 64 else FFLAGS += -i4 -real-size 64 -no-prec-div -no-prec-sqrt endif endif ifeq ($(REPRO),Y) FFLAGS += -qno-opt-dynamic-align CFLAGS += -qno-opt-dynamic-align else ifeq ($(AVX2),Y) FFLAGS += -xCORE-AVX2 -qno-opt-dynamic-align CFLAGS += -xCORE-AVX2 -qno-opt-dynamic-align else FFLAGS += -xHOST -qno-opt-dynamic-align CFLAGS += -xHOST -qno-opt-dynamic-align endif endif ifeq ($(MULTI_GASES),Y) CPPDEFS += -DMULTI_GASES endif FFLAGS_OPT = -O2 -debug minimal -fp-model source -qoverride-limits -qopt-prefetch=3 -g -traceback FFLAGS_REPRO = -O2 -debug minimal -fp-model consistent -qoverride-limits -g -traceback FFLAGS_DEBUG = -g -O0 -check all -check noarg_temp_created -check nopointer -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -traceback -ftrapuv TRANSCENDENTALS := -fast-transcendentals FFLAGS_OPENMP = -qopenmp FFLAGS_VERBOSE = -v -V -what CFLAGS += -D__IFC -sox -fp-model source CFLAGS_OPT = -O2 -debug minimal -g -traceback CFLAGS_REPRO = -O2 -debug minimal -g -traceback CFLAGS_OPENMP = -qopenmp CFLAGS_DEBUG = -O0 -g -ftrapuv -traceback # Optional Testing compile flags. Mutually exclusive from DEBUG, REPRO, and OPT # *_TEST will match the production if no new option(s) is(are) to be tested. FFLAGS_TEST = -O3 -debug minimal -fp-model source -qoverride-limits CFLAGS_TEST = -O2 LDFLAGS := LDFLAGS_OPENMP := -qopenmp LDFLAGS_VERBOSE := -Wl,-V,--verbose,-cref,-M # start with blank LIBS LIBS := ifeq ($(REPRO),Y) CPPDEFS += -DREPRO CFLAGS += $(CFLAGS_REPRO) FFLAGS += $(FFLAGS_REPRO) FAST := else ifeq ($(DEBUG),Y) CPPDEFS += -DDEBUG CFLAGS += $(CFLAGS_DEBUG) FFLAGS += $(FFLAGS_DEBUG) FAST := else ifeq ($(TEST),Y) CFLAGS += $(CFLAGS_TEST) FFLAGS += $(FFLAGS_TEST) FAST := else CFLAGS += $(CFLAGS_OPT) FFLAGS += $(FFLAGS_OPT) FAST := $(TRANSCENDENTALS) endif ifeq ($(OPENMP),Y) CPPDEFS += -DOPENMP CFLAGS += $(CFLAGS_OPENMP) FFLAGS += $(FFLAGS_OPENMP) LDFLAGS += $(LDFLAGS_OPENMP) endif ifeq ($(VERBOSE),Y) CFLAGS += $(CFLAGS_VERBOSE) FFLAGS += $(FFLAGS_VERBOSE) LDFLAGS += $(LDFLAGS_VERBOSE) endif ifeq ($(CCPP),Y) CPPDEFS += -DCCPP CFLAGS += -I$(PATH_CCPP)/include FFLAGS += -I$(PATH_CCPP)/include ifeq ($(STATIC),Y) CPPDEFS += -DSTATIC LDFLAGS += -L$(PATH_CCPP)/lib -lccppphys -lccpp $(NCEPLIBS) -lxml2 else LDFLAGS += -L$(PATH_CCPP)/lib -lccpp endif endif LDFLAGS += $(LIBS) ifdef InNemsMakefile FFLAGS += $(ESMF_INC) CPPFLAGS += -traditional EXTLIBS = $(NCEPLIBS) $(ESMF_LIB) $(LDFLAGS) $(NETCDF_LIB) endif