1,2c1,24
< ###########################################################
< #ARCH	SGI 32 bit machine IRIX
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
4,14c26,47
< FC		=	f90
< SFC		=	$(FC)
< LD		=	f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -freeform -I. -w
< FCFLAGS		=	$(FCBASEOPTS)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS		=
---
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
19,27c52,54
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DLIMIT_ARGS
< LDFLAGS		=       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
29c56,58
< LIB             =	../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
32c61,70
<                         -L../external/io_grib_share -lio_grib_share
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
34,35c72,73
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
37d74
< CC_TOOLS        =       $(CC)
39,42c76,80
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the SGI Fortran compiler complains about long source lines.      ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
44c82,84
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
46,47c86,88
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
51c92,96
< 	make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(FC) $(PROMOTION) -freeform -I." RANLIB="$(RANLIB)" CPP="$(CPP)" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
55c100,103
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
59c107,108
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
63c112,113
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
67c117,119
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
71c123
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
73c125,139
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
76,78d141
< module_configure.o : module_configure.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
80,88d142
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
90c144
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
91a146,147
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
93,94c149
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
96,100c151,155
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o  start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
105,106c160
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< 
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
108,109c162,185
< ###########################################################
< #ARCH	SGI 32 bit machine, sycamore IRIX
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
111,120c187,208
< FC		=	f90
< SFC		=	$(FC)
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -freeform -I. -w
< FCFLAGS		=	-freeform -I. -w
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS		=
---
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
125,134c213,215
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int -I../frame -I../share -I../phys -I../chem  \
<                        	-I../external/esmf_time_f90 -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
<                         -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DLIMIT_ARGS
< LDFLAGS		=       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
136c217,219
< LIB             =	../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
139c222,231
<                         -L../external/io_grib_share -lio_grib_share
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
141,142c233,234
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
144d235
< CC_TOOLS        =       $(CC)
146,149c237,241
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the SGI Fortran compiler complains about long source lines.      ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
151c243,245
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
153,154c247,249
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
157c252,257
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(FC) $(PROMOTION) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
161c261,264
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
165c268,269
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
169c273,274
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
173c278,280
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
177c284
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
179c286,300
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
182,184d302
< module_configure.o : module_configure.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
186,194d303
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
196c305
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
197a307,308
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
199,200c310
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
202,206c312,316
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
211c321
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
213,214c323,346
< ###########################################################
< #ARCH       SGI 64 bit machine IRIX64     (single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
216,227c348,369
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< CFLAGS          =       -64 -DLANDREAD_STUB -DNCARIBM_NOC99
< FCOPTIM         =       -O3
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -freeform -I. -64 -cpp -OPT:Olimit=5269 $(FCDEBUG) -w
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< PROMOTION	=	-r$(RWORDSIZE) -i4
---
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
232,237c374,376
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
<                         -DINTIO -DLIMIT_ARGS -DLANDREAD_STUB
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
239,240c378,380
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
< 			-L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
244,249c384,392
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) -64 -OPT:Olimit=5269       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
251,252c394,395
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
254d396
< CC_TOOLS        =       $(CC)
256,259c398
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the SGI Fortran compiler complains about long source lines.      ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
261c400,402
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
263,264c404,410
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
267c413,418
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(FC) $(PROMOTION) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
271c422,425
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
275c429,430
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
279c434,435
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
283c439,441
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
287c445
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
289c447,461
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
292,293d463
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
295,303d464
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
305c466
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
306a468,469
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
308c471,475
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
310,321c477
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o  start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< 
< module_configure.o : module_configure.F
---
> mediation_force_domain.o:
326c482
< 	$(FC) -c $(PROMOTION) -freeform -I. -64 -cpp -OPT:Olimit=5269 -w $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
328,329c484,507
< ###########################################################
< #ARCH	SGI O2K IRIX
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
331,343c509,530
< FC              =       f90 -n32 -mips4 -w
< SFC		=	$(FC)
< LD              =       f90 -n32 -mips4 -w
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -n32 -mips4
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -freeform -I. -w
< FCFLAGS         =       -freeform -I. -O3 -OPT:roundoff=3:IEEE_arithmetic=3 -OPT:fold_arith_limit=2001
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
<                         -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DLIMIT_ARGS
---
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
348,350c535,537
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int -I../frame -I../share \
<                         -I../phys -I../chem -I../inc -I../external/esmf_time_f90
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
352c539,541
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
356c545,553
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
358,364c555,556
< M4              =       m4 -B14000
< LDFLAGS         =       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -C -P $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
366d557
< CC_TOOLS        =       $(CC)
368,371c559
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the SGI Fortran compiler complains about long source lines.      ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
373c561,563
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
375,376c565,571
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
379c574,579
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
383c583,586
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
387c590,591
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
391c595,596
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
395c600,602
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
399c606
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
401,402c608,623
< # compile these without high optimization to speed compile
< solve_interface.o : solve_interface.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
404,406d624
< module_configure.o : module_configure.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
408,416d625
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
418c627
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
419a629,630
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
421,422c632
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
424,428c634,638
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
433c643
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
435,436c645,668
< ###########################################################
< #ARCH       SGI 64 bit machine IRIX64     (OpenMP, no nesting)
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
438c670,671
< OMP             =       -mp
---
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
440,450c673,687
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -64 -DLANDREAD_STUB -DNCARIBM_NOC99
< FCOPTIM         =       -O3
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -freeform -I. -64 -cpp -OPT:Olimit=5269 $(FCDEBUG) -w
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
451a689,691
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
456,461c696,698
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
<                         -DINTIO -DLIMIT_ARGS -DLANDREAD_STUB
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
463,464c700,702
< LIB             =       CONFIGURE_NETCDF_LIB_PATH $(OMP) \
< 			-L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
468,473c706,714
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) -64 -OPT:Olimit=5269       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
475,476c716,717
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
478d718
< CC_TOOLS        =       $(CC)
480,483c720,724
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the SGI Fortran compiler complains about long source lines.      ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
485c726,728
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
487,488c730,732
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
491c735,740
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
495c744,747
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
499c751,752
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
503c756,757
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
507c761,763
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
511c767
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
513c769,783
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
516,518d785
< module_configure.o : module_configure.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
520,528d786
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
530c788
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
531a790,791
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
533,534c793
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
536,540c795,799
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o  start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
545c804
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
547,548c806,810
< ###########################################################
< #ARCH	Sun  SunOS      (single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
550,562c812,852
< FC              =       f95
< SFC		=	$(FC)
< LD              =       f95
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< PROMOTION	=	-xtypemap=real:$(RSIZEBITS),integer:32
< CFLAGS          =	-DNCARIBM_NOC99
< FCOPTIM		=	-O2 # -O4 -xlibmopt
< FCDEBUG		=	#-g
< FCBASEOPTS	=	-fnonstd -free -xpp=cpp $(FCDEBUG) -w
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
567,575c857,859
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem \
< 			-M../external/io_netcdf -M../external/io_int -M../external/esmf_time_f90 \
< 			-M../frame -M../share -M../phys -M../inc -M../chem \
< 			-M../dyn_em 
< ARCHFLAGS       =       $(COREDEFS) -DINTIO -DGRIB1 CONFIGURE_GRIB2_FLAG -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
577,578c861,863
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
< 			-L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
582,588c867,875
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCOPTIM)       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< #CPP            =       /opt/SUNWspro/bin/fpp
< CPP             =       /usr/ccs/lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
590c877
< M4              =       m4 -B14000
---
> M4                = m4
593d879
< CC_TOOLS        =       $(CC)
595,599c881,885
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Sun Fortran compiler complains about long source lines,      ####
< #### usually due to cpp translating __FILE__ to a full pathname.              ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
601c887,889
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
603,604c891,893
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
607c896,901
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS) " )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
611c905,908
<           make CC="$(CC)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
615c912,913
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
619c917,918
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
623c922,924
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCBASEOPTS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
627c928
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
628a930,944
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
630,634d945
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c $(FCBASEOPTS) -I. $(PROMOTION) $(MODULE_DIRS) $*.f90
< 
< # compile these without high optimization to speed compile
636,637d946
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
639,649d947
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< mediation_interp_domain.o : mediation_interp_domain.F
< mediation_force_domain.o : mediation_force_domain.F
651c949
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
653,660c951
< wrf_bdyin.o : wrf_bdyin.F
< wrf_bdyout.o : wrf_bdyout.F
< wrf_histin.o : wrf_histin.F
< wrf_histout.o : wrf_histout.F
< wrf_inputin.o : wrf_inputin.F
< wrf_inputout.o : wrf_inputout.F
< wrf_restartin.o : wrf_restartin.F
< wrf_restartout.o : wrf_restartout.F
---
> mediation_force_domain.o : mediation_force_domain.F
662a954
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
663a956,958
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
665,674c960
< wrf_bdyin.o wrf_bdyout.o  \
< wrf_histin.o wrf_histout.o  \
< wrf_inputin.o wrf_inputout.o  \
< wrf_restartin.o wrf_restartout.o  \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o mediation_interp_domain.o \
< mediation_force_domain.o module_dm.o module_comm_dm.o start_domain.o :
---
> mediation_force_domain.o:
679c965
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
681,682c967,968
< ###########################################################
< #ARCH	Sun  SunOS SM   (OpenMP, no nesting)
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL, allows nesting)
684c970,993
< OMP		=	-mp=openmp -explicitpar -stackvar
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
686,698c995,1013
< FC              =       f95
< SFC		=	$(FC)
< LD              =       f95
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< PROMOTION	=	-xtypemap=real:$(RSIZEBITS),integer:32
< CFLAGS          =	-DNCARIBM_NOC99
< FCOPTIM		=	-O3 -xlibmopt
< FCDEBUG		=	#-g
< FCBASEOPTS	=	-fnonstd -free -xpp=cpp $(FCDEBUG) $(OMP) -w
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
703,711c1018,1020
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem \
< 			-M../external/io_netcdf -M../external/io_int -M../external/esmf_time_f90 \
< 			-M../frame -M../share -M../phys -M../inc -M../chem \
< 			-M../dyn_em 
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
713,714c1022,1024
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
< 			-L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
718,724c1028,1036
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCOPTIM) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< #CPP            =       /opt/SUNWspro/bin/fpp
< CPP             =       /usr/ccs/lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
726c1038
< M4              =       m4 -B14000
---
> M4                = m4
729d1040
< CC_TOOLS        =       $(CC)
731,735c1042,1046
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Sun Fortran compiler complains about long source lines,      ####
< #### usually due to cpp translating __FILE__ to a full pathname.              ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
737c1048,1050
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
739,740c1052,1054
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
743c1057,1062
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS) " )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
747c1066,1069
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
751c1073,1074
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS)" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
755c1078,1079
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
759c1083,1085
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" FC="$(SFC) $(PROMOTION) $(FCBASEOPTS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
763c1089
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
764a1091,1105
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
766,770d1106
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c $(FCBASEOPTS) -I. $(PROMOTION) $(MODULE_DIRS) $*.f90
< 
< # compile these without high optimization to speed compile
772,773d1107
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
775,783d1108
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
785c1110
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
786a1112
> mediation_force_domain.o : mediation_force_domain.F
789,793c1115
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
795c1117,1121
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
800c1126
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
802,803c1128,1129
< ###########################################################
< #ARCH   AIX                      (single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL, allows nesting)
805,818c1131,1174
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< CC              =       cc_r
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DNCARIBM_NOC99
< FCOPTIM         =       -O2 -qarch=auto
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -qspill=20000 $(FCDEBUG) -qmaxmem=32767 -w #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
820c1176
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
823,828c1179,1181
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS  -DNATIVE_MASSV
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
830,831c1183,1185
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
835,842c1189,1197
< 			-L../external/fftpack/fftpack5 -lfftpack \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< 
< LDFLAGS         =	 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
844c1199
< M4              =       m4 -B 14000
---
> M4                = m4
847d1201
< CC_TOOLS        =       cc
849c1203
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time fftpack
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
851,852c1205,1215
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
855c1218,1223
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
859c1227,1230
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
863c1234,1235
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
867c1239,1240
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
871c1244,1246
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
875,879c1250
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
881,883c1252,1260
< # compile these without high optimization to speed compile
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
885d1261
< wrf_restartin.o : wrf_restartin.F
887c1263
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
889c1265,1267
< wrf_histout.o : wrf_histout.F
---
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
891,892d1268
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
894,902d1269
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
904c1271
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
906,907d1272
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
909,910d1273
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
912,915d1274
< solve_interface.o : solve_interface.F
< solve_em.o : solve_em.F
< solve_nmm.o : solve_nmm.F
< module_integrate.o : module_integrate.F
917,925c1276
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
927c1278,1280
< solve_interface.o                                              \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
929,940c1282
< solve_em.o							\
< solve_nmm.o                                                     \
< convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
< 
< # to prevent having to call our service representative
< mediation_feedback_domain.o \
< mediation_force_domain.o start_domain.o module_integrate.o :
---
> mediation_force_domain.o:
945c1287
< 	$(FC) -c -g $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
947,948c1289,1293
< ###########################################################
< #ARCH   AIX                      (single-threaded, nesting, RSL_LITE w/o MPI)
---
> ############################################################
> #ARCH    SGI Altix, Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
950,963c1295,1335
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< CC              =       cc_r
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DNCARIBM_NOC99 -DSTUBMPI
< FCOPTIM         =       -O2 -qarch=auto
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -qspill=20000 $(FCDEBUG) -qmaxmem=32767 -w -DSTUBMPI #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
965c1337
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
968,973c1340,1342
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNATIVE_MASSV
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
975,976c1344,1346
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
980,986c1350,1358
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< 
< LDFLAGS         =	 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
988c1360
< M4              =       m4 -B 14000
---
> M4                = m4
991d1362
< CC_TOOLS        =       cc
993c1364,1368
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
996c1371,1376
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
999c1379,1384
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
1003c1388,1391
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
1007c1395,1396
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1011c1400,1401
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1015c1405,1407
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1019,1022c1411
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" FC="$(FC) $(FCFLAGS) $(PROMOTION) " MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1024,1026c1413,1421
< # compile these without high optimization to speed compile
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
1028d1422
< wrf_restartin.o : wrf_restartin.F
1030c1424
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
1032c1426,1428
< wrf_histout.o : wrf_histout.F
---
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
1034,1035d1429
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
1037,1045d1430
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
1047c1432
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1049,1050d1433
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1052,1053d1434
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
1055,1058d1435
< solve_interface.o : solve_interface.F
< solve_em.o : solve_em.F
< solve_nmm.o : solve_nmm.F
< module_integrate.o : module_integrate.F
1060,1068c1437
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
1070c1439,1441
< solve_interface.o                                              \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1072,1083c1443
< solve_em.o							\
< solve_nmm.o                                                     \
< convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
< 
< # to prevent having to call our service representative
< mediation_feedback_domain.o \
< mediation_force_domain.o start_domain.o module_integrate.o :
---
> mediation_force_domain.o:
1088c1448
< 	$(FC) -c -g $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1090,1091c1450,1451
< ###########################################################
< #ARCH   AIX SM                   (OpenMP, no nesting)
---
> ############################################################
> #ARCH    SGI Altix, Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, RSL_LITE, allows nesting)
1093,1108c1453,1496
< OMP             =       -qsmp=noauto:noopt
< OMPCPP          =       -D_OPENMP
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< CC              =       cc_r
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DNCARIBM_NOC99
< FCOPTIM         =       -O2 -qarch=auto
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qspill=20000 $(FCDEBUG) -qmaxmem=32767 #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
1110c1498
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
1113,1118c1501,1503
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS  -DNATIVE_MASSV
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
1120,1121c1505,1507
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv -lxlsmp \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
1125,1131c1511,1519
< 			-L../external/fftpack/fftpack5 -lfftpack \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
1133c1521
< M4              =       m4 -B 14000
---
> M4                = m4
1136d1523
< CC_TOOLS        =       $(CC)
1138c1525
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time fftpack
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
1140,1141c1527,1537
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
1144c1540,1545
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
1148c1549,1552
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
1152c1556,1557
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1156c1561,1562
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1160c1566,1568
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1164,1189c1572
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" )
< 
< module_sm.o 	: module_sm.F
< module_tiles.o	: module_tiles.F
< solve_em.o	: solve_em.F
< solve_exp.o	: solve_exp.F
< convert_nmm.o   : convert_nmm.F
< 
< module_sm.o module_tiles.o solve_em.o solve_exp.o convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(OMP) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
< 
< #	Compiled WITHOUT ANY SMP, needed Mar 2005
< module_domain.o : module_domain.F
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1191,1193c1574,1582
< # compile these without high optimization to speed compile
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
1195d1583
< wrf_restartin.o : wrf_restartin.F
1197c1585
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
1199c1587,1589
< wrf_histout.o : wrf_histout.F
---
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
1201,1202d1590
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
1204,1211d1591
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
1213c1593
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1215,1216d1594
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1218,1219d1595
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
1221,1222d1596
< solve_interface.o : solve_interface.F
< module_integrate.o : module_integrate.F
1224,1232c1598
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
1234c1600,1602
< solve_interface.o                                              \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1236c1604
< convert_nmm.o :
---
> mediation_force_domain.o:
1241c1609
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1243,1244c1611,1615
< ###########################################################
< #ARCH   AIX SM                   (OpenMP, nesting, RSL_LITE w/o MPI)
---
> ############################################################
> #ARCH    SGI Altix, Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, OpenMP, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
1246c1617,1637
< OMP             =       -qsmp=noauto:noopt
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
1248,1261c1639,1657
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< CC              =       cc_r
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DNCARIBM_NOC99 -DSTUBMPI
< FCOPTIM         =       -O2 -qarch=auto
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qspill=20000 $(FCDEBUG) -qmaxmem=32767 -DSTUBMPI #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
1263c1659
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
1266,1271c1662,1664
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNATIVE_MASSV
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
1273,1274c1666,1668
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv -lxlsmp \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
1278,1283c1672,1680
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
1285c1682
< M4              =       m4 -B 14000
---
> M4                = m4
1288d1684
< CC_TOOLS        =       $(CC)
1290c1686
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
1292,1293c1688,1690
< module_dm.F :  ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
1295,1296c1692,1694
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
1298,1300c1696,1698
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
1302c1700,1715
< wrfio_grib_share :
---
> wrfio_nf :
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
> 
> wrfio_grib_share :
1304c1717,1718
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1308c1722,1723
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1312c1727,1729
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1316,1340c1733
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" FC="$(FC) $(FCFLAGS) $(PROMOTION) " MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
< 
< module_sm.o 	: module_sm.F
< module_tiles.o	: module_tiles.F
< solve_em.o	: solve_em.F
< solve_exp.o	: solve_exp.F
< convert_nmm.o   : convert_nmm.F
< 
< module_sm.o module_tiles.o solve_em.o solve_exp.o convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(OMP) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
< 
< #	Compiled WITHOUT ANY SMP, needed Mar 2005
< module_domain.o : module_domain.F
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1342,1344c1735,1743
< # compile these without high optimization to speed compile
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
1346d1744
< wrf_restartin.o : wrf_restartin.F
1348c1746
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
1350c1748,1750
< wrf_histout.o : wrf_histout.F
---
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
1352,1353d1751
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
1355,1362d1752
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
1364c1754
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1366,1367d1755
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1369,1370d1756
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
1372,1373d1757
< solve_interface.o : solve_interface.F
< module_integrate.o : module_integrate.F
1375,1383c1759
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
1385c1761,1763
< solve_interface.o                                              \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1387c1765
< convert_nmm.o :
---
> mediation_force_domain.o:
1392c1770
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1394,1395c1772,1773
< ###########################################################
< #ARCH	AIX DM-Parallel          (RSL_LITE, IBM-MPI, Allows ARW and NMM nesting)
---
> ############################################################
> #ARCH    SGI Altix, Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, RSL, allows nesting)
1399a1778,1796
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
1401,1415c1798,1818
< SFC             =       xlf90_r
< SCC             =       cc_r
< FC              =       mpxlf90_r
< LD              =       mpxlf90_r
< CC              =       mpcc_r
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE  -I../external/RSL_LITE -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -DNCARIBM_NOC99
< FCOPTIM         =       -O2 -qarch=auto
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qspill=20000 $(FCDEBUG) -qmaxmem=32767 #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
1417c1820
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
1420,1426c1823,1824
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_pnetcdf \
<                         -I../external/io_int $(ESMF_IO_INC) \
<                         -I../frame -I../share -I../phys -I../chem -I../inc $(ESMF_MOD_INC)
< ARCHFLAGS       =       $(COREDEFS) -DRSL_LITE -DDM_PARALLEL -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) \
<                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG CONFIGURE_PNETCDF_FLAG \
<                         -DTRIEDNTRUE -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
< 			-DLIMIT_ARGS  -DNATIVE_MASSV -DNMM_NEST=$(WRF_NMM_NEST) $(ESMF_IO_DEFS)
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
1429,1431c1827,1829
< LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PNETCDF_LIB_PATH \
<                         -L../external/RSL_LITE -lrsl_lite -lmass -lmassv \
<                         -L../external/io_int -lwrfio_int  \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
1434d1831
< 			-L../external/fftpack/fftpack5 -lfftpack \
1436,1442c1833,1841
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o $(ESMF_IO_LIB)
< LDFLAGS         =	 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
1444c1843
< M4              =       m4 -B 14000
---
> M4                = m4
1447,1448d1845
< PNETCDFPATH	=	CONFIGURE_PNETCDF_PATH
< CC_TOOLS        =       cc
1450c1847
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_PNF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F $(ESMF_TARGET) fftpack
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
1452,1453c1849,1851
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
1455,1456c1853,1855
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
1458,1459c1857,1859
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
1461,1462c1861,1867
< wrfio_pnf : 
< 	( cd ../external/io_pnetcdf ; make NETCDFPATH=CONFIGURE_PNETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> wrfio_nf :
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
1466c1871,1874
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
1470c1878,1879
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1474c1883,1884
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1478c1888,1890
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1482,1489c1894
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CFLAGS="$(CFLAGS)" CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1491,1493c1896,1904
< # compile these without high optimization
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
1495d1905
< wrf_restartin.o : wrf_restartin.F
1497c1907
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
1499,1510c1909
< wrf_histout.o : wrf_histout.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
---
> wrf_restartin.o : wrf_restartin.F
1511a1911,1913
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
> module_io_wrf.o : module_io_wrf.F
1513c1915
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1515,1516d1916
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1518,1523c1918
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< solve_em.o : solve_em.F
< solve_nmm.o : solve_nmm.F
---
> module_configure.o : module_configure.F
1525,1536c1920,1924
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o \
< mediation_force_domain.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
< mediation_feedback_domain.o \
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1538,1540c1926
< solve_em.o                                              \
< solve_nmm.o                                                     \
< convert_nmm.o    :
---
> mediation_force_domain.o:
1545c1931
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1547,1548c1933,1934
< ###########################################################
< #ARCH	AIX DM-Parallel          (RSL_LITE, IBM-MPI, Allows ARW and NMM nesting )(PARALLEL HDF5)
---
> ############################################################
> #ARCH    SGI Altix/Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, RSL, allows nesting)
1552a1939,1957
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
1554,1568c1959,1979
< SFC             =       xlf90_r
< SCC             =       cc_r
< FC              =       mpxlf90_r
< LD              =       mpxlf90_r
< CC              =       mpcc_r
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE  -I../external/RSL_LITE -DDM_PARALLEL  \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -DNCARIBM_NOC99
< FCOPTIM         =       -O2 -qarch=auto 
< #FCOPTIM         =       -O3 -qhot
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qspill=20000 $(FCDEBUG) -qmaxmem=-1 #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DSTUBMPI -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL -DSTUBMPI \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
1570c1981
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
1573,1577c1984,1985
< INCLUDE_MODULES =       -I../external/io_netcdf  -I../external/io_phdf5 -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< ARCHFLAGS       =       $(COREDEFS) -DRSL_LITE -DDM_PARALLEL -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) \
<                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG CONFIGURE_PHDF5_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
< 			-DLIMIT_ARGS  -DNATIVE_MASSV
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
1580,1581c1988,1990
< LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PHDF5_LIB_PATH -L../external/RSL_LITE -lrsl_lite -lmass -lmassv \
<                         -L../external/io_int -lwrfio_int  \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
1585,1591c1994,2002
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
1593c2004
< M4              =       m4 -B 14000
---
> M4                = m4
1596d2006
< CC_TOOLS        =       cc
1598c2008
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 CONFIGURE_WRFIO_PHDF5 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
1600,1601c2010,2012
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
1603,1604c2014,2016
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
1606,1607c2018,2020
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC="$(CC) $(CFLAGS) -I." \
> 	 FC='$(FC)  $(FCFLAGS) -FI -I../../' CFLAGS="-DSTUBS $(CFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST stub )
1609,1610c2022,2028
< wrfio_phdf5 : 
< 	( cd ../external/io_phdf5 ; make PHDF5PATH=CONFIGURE_PHDF5_PATH FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qfree=F90 -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc )
---
> wrfio_nf :
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
1614c2032,2035
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
1618c2039,2040
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1622c2044,2045
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1626c2049,2051
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1630,1633c2055
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1635,1637c2057,2065
< # compile these without high optimization
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
1639d2066
< wrf_restartin.o : wrf_restartin.F
1641c2068
< wrf_inputout.o : wrf_inputout.F
---
> wrf_auxinput1in.o : wrf_auxinput1in.F
1643,1654c2070
< wrf_histout.o : wrf_histout.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
---
> wrf_restartin.o : wrf_restartin.F
1655a2072,2074
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
> module_io_wrf.o : module_io_wrf.F
1657c2076
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1659,1660d2077
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1662,1667c2079
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< solve_em.o : solve_em.F
< solve_nmm.o : solve_nmm.F
---
> module_configure.o : module_configure.F
1669,1680c2081,2085
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o \
< mediation_force_domain.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
< mediation_feedback_domain.o \
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1682,1684c2087
< solve_em.o                                              \
< solve_nmm.o                                                     \
< convert_nmm.o    :
---
> mediation_force_domain.o:
1689c2092
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1691,1692c2094,2095
< ###########################################################
< #ARCH	AIX DM-Parallel          (RSL_LITE, IBM-MPI, MCEL)   May 2003, EXPERIMENTAL
---
> ############################################################
> #ARCH    SGI Altix/Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, no nesting)
1697,1711c2100,2140
< DMPARALLEL      =       1
< SFC             =       xlf90_r
< SCC             =       cc_r
< FC              =       mpxlf90_r
< LD              =       mpCC_r
< CC              =       mpcc_r
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< MCELHOME        =       /home/bluesky/bettenc/disttest
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE  -I../external/RSL_LITE -DDM_PARALLEL  \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -DNCARIBM_NOC99
< FCOPTIM         =       -O2 -qarch=auto
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qspill=20000 $(FCDEBUG) -qmaxmem=32767 #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        =
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c    -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
1713c2142
< ESMF_LIB_FLAGS  =       -lC
---
> ESMF_LIB_FLAGS    =
1716,1720c2145,2146
< INCLUDE_MODULES =       -I../../inc -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< ARCHFLAGS       =       -DRSL_LITE -DDM_PARALLEL -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) \
<                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG -DTRIEDNTRUE   -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DMCELIO -DLIMIT_ARGS \
<                          -DNATIVE_MASSV
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
1723c2149,2151
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
1727,1732d2154
<                         -L../external/RSL_LITE -lrsl_lite -lmass -lmassv -lxlsmp \
<                         -L../external/io_mcel -lwrfio_mcel  \
< -L$(MCELHOME)/MCELSystem/MCEL -lMCEL  \
< -L$(MCELHOME)/lib -lomniORB4  \
< -lomnithread -lomniDynamic4  -lnetcdf_c++ -lnetcdf  -lxlf90 -lxlopt  \
<                         -lxlf -lxlomp_ser -lm -lc -lpthread \
1734,1740c2156,2163
<                         ../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
1742c2165
< M4              =       m4 -B 14000
---
> M4                = m4
1745d2167
< CC_TOOLS        =       cc
1747,1750c2169
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int wrfio_mcel gen_comms.c module_dm.F esmf_time
< 
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( cat ../tools/gen_comms_warning ../external/RSL_LITE/gen_comms.c > ../tools/gen_comms.c )
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
1752,1753c2171,2173
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( cat module_dm_warning ../external/RSL_LITE/module_dm.F > module_dm.F )
---
> module_dm.F :
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
1757c2177,2181
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
1761c2185,2188
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
1765c2192,2193
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
1769c2197,2198
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1773c2202,2204
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
1777,1786c2208
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< wrfio_mcel : 
< 	( cd ../external/io_mcel ; \
<           make CC="$(CC)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -I../../inc -I../io_netcdf -I../../frame -I../../share \
<                -I$(MCELHOME)/MCELSystem/MCEL -qfree=f90" all )
< 
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" CFLAGS="$(CFLAGS)" FC="$(SFC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
1788,1803c2210,2213
< # compile these without high optimization
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
1806d2215
< mediation_force_domain.o : mediation_force_domain.F
1808c2217,2224
< convert_nmm.o : convert_nmm.F
---
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
1811,1934d2226
< solve_em.o : solve_em.F
< 
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o \
< mediation_force_domain.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
< mediation_feedback_domain.o \
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< solve_em.o                                              \
< convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -qnoopt $*.f
< 
< ###########################################################
< #ARCH       Linux ppc64 BG (Blue Gene, RSL_LITE, IBM-MPI) 
< #
< # from sheeba
< BGL_SYS         =       /bgl/BlueLight/ppcfloor/bglsys
< MPI_INC         =       -I$(BGL_SYS)/include
< MPI_LIB         =       -L$(BGL_SYS)/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts
< TRACE_LIB       =       -L/contrib/bgl/mpi_trace  -lmpitrace_c
< 
< SFC              =      blrts_xlf90
< SCC             =       blrts_xlc
< DMPARALLEL      =       1
< FC              =       $(SFC)
< LD              =       $(FC)
< CC              =       $(SCC)
< 
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DNCARIBM_NOC99 $(MPI_INC) -I../external/RSL_LITE -DLANDREAD_STUB -DDM_PARALLEL
< FCOPTIM         =       -O2 -qarch=440
< FCDEBUG         =       # -qnoopt -qfullpath -qarch=440
< 
< FCBASEOPTS      =       -qspill=20000 $(FCDEBUG) -qmaxmem=64000  $(MPI_INC) -w #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< 
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_pnetcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc 
< 
< ARCHFLAGS       =       $(COREDEFS) -DDM_PARALLEL -DRSL_LITE -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG CONFIGURE_PNETCDF_FLAG \
< 			-DLIMIT_ARGS  -DNATIVE_MASSV -DLANDREAD_STUB
< 
< PERL            =       perl
< REGISTRY        =       Registry
< LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PNETCDF_LIB_PATH \
<                         -L../external/RSL_LITE -lrsl_lite -L/bgl/local/lib -lmass -lmassv \
<                         -L../external/io_int -lwrfio_int \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
< 			-L/home/michalak/fftpack5 -lfftpack \
< 			$(TRACE_LIB) $(MPI_LIB)
< 
< LDFLAGS         =	-Wl,--allow-multiple-definition -qstatic
< ENVCOMPDEFS	=	
< WRF_CHEM	=	0 
< CPP             =       /opt/ibmcmp/xlf/9.1/exe/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DF90_STANDALONE -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< #### this is a hand installed version of m4 on frost.ucar.edu
< #### a copy is available at http://www.mmm.ucar.edu/wrf/WG2/BG/m4
< M4              =       /home/janicec/m4 -B 12000
< RANLIB          =       ranlib
< NETCDFPATH      =       CONFIGURE_NETCDF_PATH
< PNETCDFPATH     =       CONFIGURE_PNETCDF_PATH
< CC_TOOLS        =       cc
< WRF_CONVERT = 0
< 
< externals : wrf_ioapi_includes ../external/RSL_LITE/librsl_lite.a CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_PNF wrfio_int module_dm.F esmf_time gen_comms.c
< 
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
< 
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; make NETCDFPATH="$(NETCDFPATH)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
< 
< wrfio_pnf :
< 	( cd ../external/io_pnetcdf ; make NETCDFPATH=CONFIGURE_PNETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(MPI_INC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
< 
< wrfio_grib1 :
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CFLAGS="$(CFLAGS)" CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
< 
< solve_interface.o : solve_interface.F
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c -qfree=f90 -qspillsize=32767 -I. $(PROMOTION) $(MODULE_DIRS) $*.f90
< 
< # compile these without high optimization to speed compile
< wrf_bdyout.o : wrf_bdyout.F
< wrf_bdyin.o : wrf_bdyin.F
< wrf_restartout.o : wrf_restartout.F
< wrf_restartin.o : wrf_restartin.F
< wrf_inputin.o : wrf_inputin.F
< wrf_inputout.o : wrf_inputout.F
< wrf_histin.o : wrf_histin.F
< wrf_histout.o : wrf_histout.F
< shift_domain_em.o : shift_domain_em.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
1936,1944d2227
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
1946c2229
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
1948,1949d2230
< mediation_integrate.o : mediation_integrate.F
< mediation_interp_domain.o : mediation_interp_domain.F
1951,1952d2231
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
1954,1955d2232
< solve_em.o : solve_em.F
< start_em.o : start_em.F
1957,1965c2234
< wrf_bdyout.o wrf_bdyin.o \
< wrf_restartout.o wrf_restartin.o wrf_inputin.o wrf_inputout.o wrf_histin.o wrf_histout.o \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< mediation_integrate.o \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
1967,1968c2236,2238
< solve_em.o                                              \
< start_em.o                                              \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
1970,1979c2240
< convert_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< 
< # to prevent having to call our service representative
< mediation_feedback_domain.o \
< mediation_force_domain.o start_domain.o :
---
> mediation_force_domain.o:
1984c2245
< 	$(FC) -c -g $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -qnoopt $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
1986,1987c2247,2251
< ###########################################################
< #ARCH       Compaq OSF1 alpha          (single-threaded, no nesting)
---
> ############################################################
> #ARCH    SGI Altix/Generic Intel Itanium2 ia64 Linux, ifort+icc 9.x,10.x Sequential (no nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
1988a2253,2272
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        =
1991,2007c2275,2289
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< ARCHFLAGS       =       $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS -DFLOATSAFE
< PROMOTION	=	-real_size $(RSIZEBITS) -integer_size `expr 4 \* 8`
< CFLAGS          =       $(ARCHFLAGS)
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       # -g
< FCDEBUG_ESMF    =       # -O0
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS_ESMF =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG_ESMF)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -tpp2 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
2009c2291,2293
< FCFLAGS_ESMF    =       $(FCOPTIM) $(FCBASEOPTS_ESMF) $(OMP)
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2014,2016c2298,2300
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2018,2019c2302,2304
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time  \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
2022,2027c2307,2316
<                         -L../external/io_grib_share -lio_grib_share
< LDFLAGS         =       $(FCOPTIM) $(OMP) -automatic -convert big_endian $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
2029c2318
< M4              =       m4 -B 14000
---
> M4                = m4
2032d2320
< CC_TOOLS        =       cc
2034c2322
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2037c2325,2326
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
2041c2330,2334
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2045c2338,2341
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2049c2345,2346
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2053c2350,2351
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2057c2355,2357
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2061,2071c2361
< 	  make FC="$(FC) $(PROMOTION) $(FCFLAGS_ESMF)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< nest_init_utils.o : nest_init_utils.F
< module_optional_si_input.o : module_optional_si_input.F
< 
< nest_init_utils.o module_optional_si_input.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) -w -convert big_endian -automatic -cpp -free -I. -arch host $(MODULE_DIRS) $*.f90
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2073,2075c2363,2379
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
2076a2381
> module_dm.o : module_dm.F
2078,2085d2382
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
2087,2088d2383
< module_configure.o : module_configure.F
< mediation_interp_domain.o : mediation_interp_domain.F
2090c2385
< mediation_feedback_domain.o : mediation_feedback_domain.F
---
> module_configure.o : module_configure.F
2092,2095c2387
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2097,2113c2389,2393
< mediation_interp_domain.o  \
< mediation_force_domain.o  \
< mediation_feedback_domain.o  \
< module_initialize_real.o start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -O0 $*.f90
< 
< mediation_integrate.o : mediation_integrate.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< mediation_wrfmain.o : mediation_wrfmain.F
< solve_em.o : solve_em.F
< 
< mediation_integrate.o module_dm.o module_comm_dm.o mediation_wrfmain.o solve_em.o : 
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
2118c2398
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS_ESMF) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2120,2121c2400,2404
< ###########################################################
< #ARCH       Compaq OSF1 alpha SM       (OpenMP, no nesting)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
2123c2406,2426
< OMP             =       -omp
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
2125,2142c2428,2442
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< ARCHFLAGS       =       $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS -DFLOATSAFE
< PROMOTION	=	-real_size $(RSIZEBITS) -integer_size `expr 4 \* 8`
< CFLAGS          =       $(ARCHFLAGS)
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       # -g
< FCDEBUG_ESMF    =       # -O0
< FCREAL8OMP	=	-align records -align dcommons -granularity quadword
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG) $(FCREAL8OMP)
< FCBASEOPTS_ESMF =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG_ESMF) $(FCREAL8OMP)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
2144c2444,2446
< FCFLAGS_ESMF    =       $(FCOPTIM) $(FCBASEOPTS_ESMF) $(OMP)
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2149,2151c2451,2453
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2153,2154c2455,2457
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
2157,2162c2460,2469
<                         -L../external/io_grib_share -lio_grib_share
< LDFLAGS         =       $(FCOPTIM) $(OMP) -automatic -convert big_endian $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
2164c2471
< M4              =       m4 -B 14000
---
> M4                = m4
2167d2473
< CC_TOOLS        =       cc
2169c2475
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2171,2172c2477,2487
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
2176c2491,2495
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCREAL8OMP) -convert big_endian -automatic -cpp -free -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2180c2499,2502
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2184c2506,2507
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2188c2511,2512
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCREAL8OMP) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2192c2516,2518
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCREAL8OMP) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2196,2206c2522
< 	  make FC="$(FC) $(PROMOTION) $(FCFLAGS_ESMF)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< nest_init_utils.o : nest_init_utils.F
< module_optional_si_input.o : module_optional_si_input.F
< 
< nest_init_utils.o module_optional_si_input.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) -w -convert big_endian -automatic -cpp -free -I. -arch host $(MODULE_DIRS) $*.f90
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2208,2210c2524,2540
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
2211a2542
> module_dm.o : module_dm.F
2213,2220d2543
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
2222,2223d2544
< module_configure.o : module_configure.F
< mediation_interp_domain.o : mediation_interp_domain.F
2225c2546
< mediation_feedback_domain.o : mediation_feedback_domain.F
---
> module_configure.o : module_configure.F
2227,2230c2548
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2232,2235c2550,2554
< mediation_interp_domain.o  \
< mediation_force_domain.o  \
< mediation_feedback_domain.o  \
< module_initialize_real.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
2240c2559
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2242,2245c2561,2564
< mediation_integrate.o : mediation_integrate.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< mediation_wrfmain.o : mediation_wrfmain.F
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
2247,2248d2565
< 
< mediation_integrate.o module_dm.o module_comm_dm.o mediation_wrfmain.o solve_em.o : 
2253c2570
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS_ESMF) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
2255,2256c2572,2573
< ###########################################################
< #ARCH     Compaq OSF1 alpha DM-Parallel       (RSL_LITE, MPICH, allows ARW and NMM nesting)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL_LITE, allows nesting)
2260a2578,2596
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
2264,2284c2600,2618
< FC              =       mpif90
< SFC		=	f90
< LD              =       mpif90
< CC              =       mpicc
< SCC		=	cc
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< ARCHFLAGS       =       $(COREDEFS) -DNETCDF -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
<                         -DDM_PARALLEL -DRSL_LITE \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS -DFLOATSAFE \
< 			-DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)
< PROMOTION	=	-real_size $(RSIZEBITS) -integer_size `expr 4 \* 8`
< CFLAGS          =       $(ARCHFLAGS) -I../external/RSL_LITE
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       #-g
< FCDEBUG_ESMF    =       # -O0
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS_ESMF =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG_ESMF)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(OMP)
< FCFLAGS_ESMF    =       $(FCOPTIM) $(FCBASEOPTS_ESMF) $(OMP)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2289,2291c2623,2625
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2293c2627,2628
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
2295d2629
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
2298,2304c2632,2641
<                         -L../external/io_grib_share -lio_grib_share
< LDFLAGS         =       $(FCOPTIM) -automatic -convert big_endian $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
2306c2643
< M4              =       m4 -B 14000
---
> M4                = m4
2309d2645
< CC_TOOLS        =       cc
2311c2647
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int ../external/RSL_LITE/librsl_lite.a gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2320a2657,2660
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
> 
2323c2663,2667
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2327c2671,2674
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2331c2678,2679
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2335c2683,2684
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2339c2688,2690
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2343,2351c2694
< 	  make FC="$(FC) $(PROMOTION) $(FCFLAGS_ESMF)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; \
<           make CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
< 
< nest_init_utils.o : nest_init_utils.F
< module_optional_si_input.o : module_optional_si_input.F
< module_IGWAVE_ADJUST.o : module_IGWAVE_ADJUST.F
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2353,2362c2696,2712
< nest_init_utils.o module_optional_si_input.o module_IGWAVE_ADJUST.o:
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) -w -convert big_endian -automatic -cpp -free -I. -arch host $(MODULE_DIRS) $*.f90
< 
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
2363a2714
> module_dm.o : module_dm.F
2365,2372d2715
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
2374,2376d2716
< start_domain_nmm.o : start_domain_nmm.F
< module_configure.o : module_configure.F
< mediation_interp_domain.o : mediation_interp_domain.F
2378c2718
< mediation_feedback_domain.o : mediation_feedback_domain.F
---
> module_configure.o : module_configure.F
2380,2383c2720
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2385,2401c2722,2726
< mediation_interp_domain.o  \
< mediation_force_domain.o  \
< mediation_feedback_domain.o  \
< module_initialize_real.o start_domain.o start_domain_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -O0 $*.f90
< 
< mediation_integrate.o : mediation_integrate.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< mediation_wrfmain.o : mediation_wrfmain.F
< solve_em.o : solve_em.F
< 
< mediation_integrate.o module_dm.o module_comm_dm.o mediation_wrfmain.o solve_em.o : 
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
2406c2731
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS_ESMF) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2408,2409c2733,2737
< ###########################################################
< #ARCH       Compaq OSF1 alpha DM/SM    (BUILD FOR AUTODOC ONLY -- DO NOT USE TO COMPILE CODE)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
2410a2739,2757
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
2412,2434c2759,2779
< OMP             =
< OMPCPP          =
< FC              =       echo # mpif90
< SFC             =       echo # mpif90
< LD              =       echo # mpif90
< CC              =       echo # mpicc
< SCC		=	echo # cc
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< ARCHFLAGS       =       $(COREDEFS) -DAUTODOC_BUILD CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DWRF_RSL_IO \
<                         -DDM_PARALLEL="'<b>DM_PARALLEL</b>'" -DRSL_LITE="'<b>RSL_LITE</b>'" \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS -DFLOATSAFE \
< 			-DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -DMOVE_NESTS
< PROMOTION	=	-real_size $(RSIZEBITS) -integer_size `expr 4 \* 8`
< CFLAGS          =       $(ARCHFLAGS) -I../external/RSL_LITE
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       # -g
< FCDEBUG_ESMF    =       # -O0
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS_ESMF =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG_ESMF)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(OMP)
< FCFLAGS_ESMF    =       $(FCOPTIM) $(FCBASEOPTS_ESMF) $(OMP)
---
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2439,2441c2784,2786
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2443,2444c2788,2790
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
<                         -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
2448,2454c2794,2802
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) -automatic -convert big_endian $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
2456c2804
< M4              =       m4 -B 14000
---
> M4                = m4
2459d2806
< CC_TOOLS        =       cc
2461c2808
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int ../external/RSL/librsl_lite.a gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2463c2810
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
2465c2812
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
2467c2814
< module_dm.F : ../external/RSL_LITE/module_dm.F
---
> module_dm.F : ../external/RSL/module_dm.F
2469c2816,2820
<           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
2473c2824,2828
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2477c2832,2835
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2481c2839,2840
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2485c2844,2845
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2489c2849,2851
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2493,2497c2855
< 	  make FC="$(FC) $(PROMOTION) $(FCFLAGS_ESMF)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL/RSL/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; \
<           make CC="$(CC)" FC="$(FC) $(PROMOTION)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) all )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2499,2501c2857,2873
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
2502a2875
> module_dm.o : module_dm.F
2504,2511d2876
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
2512a2878
> mediation_force_domain.o : mediation_force_domain.F
2515,2518c2881
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2520c2883,2887
< module_initialize_real.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
2525c2892
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2527,2530c2894,2897
< mediation_integrate.o : mediation_integrate.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< mediation_wrfmain.o : mediation_wrfmain.F
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
2532,2533d2898
< 
< mediation_integrate.o module_dm.o module_comm_dm.o mediation_wrfmain.o solve_em.o : 
2538c2903
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS_ESMF) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
2540,2541c2905,2906
< ###########################################################
< #ARCH     Compaq OSF1 alpha DM-Parallel       (RSL_LITE, MPICH, allows ARW and NMM nesting, UNOPT shift_domain)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL, allows nesting)
2545a2911,2929
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
2549,2569c2933,2951
< FC              =       mpif90
< SFC		=	f90
< LD              =       mpif90
< CC              =       mpicc
< SCC		=	cc
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< ARCHFLAGS       =       $(COREDEFS) -DNETCDF -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
<                         -DDM_PARALLEL -DRSL_LITE \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS -DFLOATSAFE \
< 			-DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)
< PROMOTION	=	-real_size $(RSIZEBITS) -integer_size `expr 4 \* 8`
< CFLAGS          =       $(ARCHFLAGS) -I../external/RSL_LITE
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       #-g
< FCDEBUG_ESMF    =       # -O0
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS_ESMF =       -w -convert big_endian -automatic -cpp -free -I. -arch host $(FCDEBUG_ESMF)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(OMP)
< FCFLAGS_ESMF    =       $(FCOPTIM) $(FCBASEOPTS_ESMF) $(OMP)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2574,2576c2956,2958
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2578,2580c2960,2962
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
<                         -L../external/RSL_LITE -lrsl_lite  \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
2583,2589c2965,2974
<                         -L../external/io_grib_share -lio_grib_share
< LDFLAGS         =       $(FCOPTIM) -automatic -convert big_endian $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< MAX_PROC        =       1024
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
2591c2976
< M4              =       m4 -B 14000
---
> M4                = m4
2594d2978
< CC_TOOLS        =       cc
2596c2980
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int ../external/RSL_LITE/librsl_lite.a gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2598c2982
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
2600c2984
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
2602c2986
< module_dm.F : ../external/RSL_LITE/module_dm.F
---
> module_dm.F : ../external/RSL/module_dm.F
2604c2988,2992
<           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
2608c2996,3000
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2612c3004,3007
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2616c3011,3012
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2620c3016,3017
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2624c3021,3023
<           make IO_GRIB_SHARE_DIR="$(WRF_SRC_ROOT_DIR)/external/io_grib_share/" CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -convert big_endian -automatic -cpp -free -w " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2628,2643c3027
< 	  make FC="$(FC) $(PROMOTION) $(FCFLAGS_ESMF)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; \
<           make CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
< 
< nest_init_utils.o : nest_init_utils.F
< module_optional_si_input.o : module_optional_si_input.F
< module_IGWAVE_ADJUST.o : module_IGWAVE_ADJUST.F
< 
< nest_init_utils.o module_optional_si_input.o module_IGWAVE_ADJUST.o:
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) -w -convert big_endian -automatic -cpp -free -I. -arch host $(MODULE_DIRS) $*.f90
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2645,2647c3029,3045
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
2648a3047
> module_dm.o : module_dm.F
2650,2657d3048
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
2659,2661d3049
< start_domain_nmm.o : start_domain_nmm.F
< module_configure.o : module_configure.F
< mediation_interp_domain.o : mediation_interp_domain.F
2663,2664c3051
< mediation_feedback_domain.o : mediation_feedback_domain.F
< shift_domain_em.o : shift_domain_em.F
---
> module_configure.o : module_configure.F
2666,2669c3053
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2671,2673c3055,3057
< mediation_interp_domain.o  \
< mediation_force_domain.o  \
< mediation_feedback_domain.o  \
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
2675,2688c3059
< module_initialize_real.o start_domain.o start_domain_nmm.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -O0 $*.f90
< 
< mediation_integrate.o : mediation_integrate.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< mediation_wrfmain.o : mediation_wrfmain.F
< solve_em.o : solve_em.F
< 
< mediation_integrate.o module_dm.o module_comm_dm.o mediation_wrfmain.o solve_em.o : 
---
> mediation_force_domain.o:
2693c3064
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS_ESMF) $(MODULE_DIRS) -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2695,2696c3066,3070
< ###########################################################
< #ARCH       Alpha Linux alpha DM  (single-threaded, no nesting)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
2698,2710c3072,3108
< FC              =       fort
< SFC		=	$(FC)
< LD              =       fort
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DF2CSTYLE 
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       # -g
< FCBASENOINL     =       -convert big_endian -O1 -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. \
<                         -arch host $(FCDEBUG)
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
2712,2713c3110,3112
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG 
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
2718,2720c3117,3119
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
2722c3121,3123
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
2726,2731c3127,3135
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o  -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) -automatic -convert big_endian CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -traditional  $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
2733c3137
< M4              =       m4 -B 14000
---
> M4                = m4
2736d3139
< CC_TOOLS        =       cc
2738c3141
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
2740c3143,3147
< module_dm.F :
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
2742c3149,3153
< 	  cat  module_dm_stubs.F >> module_dm.F )
---
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
2746c3157,3161
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASENOINL) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
2750,2751c3165,3168
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
2755,2756c3172,3173
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
2760,2761c3177,3178
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2765,2766c3182,3184
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
2770c3188
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
2772,2783c3190,3203
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
2784a3205,3207
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
> module_io_wrf.o : module_io_wrf.F
2786c3209
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
2787a3211
> mediation_force_domain.o : mediation_force_domain.F
2790,2793c3214
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
2795c3216,3220
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
2800c3225
< 	$(FC) -c $(PROMOTION) $(FCBASENOINL) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
2802,3250c3227,3231
< ###########################################################
< #ARCH       Alpha Linux alpha SM  (DOES NOT WORK ON JET! No nesting)
< #
< FC              =       fort
< SFC		=	$(FC)
< LD              =       fort
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DF2CSTYLE 
< FCOPTIM         =       -fast -O4
< FCDEBUG         =       # -g
< FCBASENOINL     =       -convert big_endian -O1 -automatic -cpp -free -I. -arch host $(FCDEBUG)
< FCBASEOPTS      =       -w -convert big_endian -automatic -cpp -free -I. \
<                         -arch host $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(OMP)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG 
< # machine-specific flags needed to link in ESMF library (C++ run-time-library, etc.)
< ESMF_LIB_FLAGS  =       
< ESMF_IO_LIB     =       ESMFIOLIB
< ESMF_IO_LIB_EXT =       ESMFIOEXTLIB
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       CONFIGURE_PERL_PATH
< REGISTRY        =       Registry
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o  -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) -automatic -convert big_endian CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DDEC_ALPHA -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -traditional -C -P `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       cc
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
< 
< module_dm.F :
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
<           /bin/cp module_dm_warning module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCBASENOINL) -w" TRADFLAG="-traditional" )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" all )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive)
< 
< wrfio_grib1 : 
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive )
< wrfio_grib2 : 
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASENOINL) -w" \
<           TRADFLAG="-traditional" archive )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< # compile these without high optimization to speed compile
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
< module_configure.o : module_configure.F
< 
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_configure.o                                             \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASENOINL) $(MODULE_DIRS) $*.f90
< 
< ###########################################################
< #ARCH       VPP UNIX_System_V F300 5000
< #
< FC              =       frt
< SFC		=	$(FC)
< LD              =       frt
< CC              =       vcc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =
< FCFLAGS         =       -Free -X9 -Am
< FCFLAGS         =       -Free -X9 -Sw -Wv,-Of,-te,-ilfunc,-noalias,-m3,-P255 -Oe,-P -Kfast -Am
< FCDEBUG         =       # -g
< FCBASEOPTS      =       $(FCFLAGS)
< ARCHFLAGS       = $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
< 			-DLIMIT_ARGS
< PERL            =       CONFIGURE_PERL_PATH
< REGISTRY        =       Registry
< LIB             = 	../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share
< LDFLAGS         =      -Wl,-P -J CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< LDFLAGS         =      -J CONFIGURE_LDFLAGS
< CPP             =       /lib/cpp -C -P
< POUND_DEF	=	-DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       $(CC)
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2  module_dm.F esmf_time
< 
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -Free -X9" )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -Free -X9" archive)
< 
< wrfio_grib1 : 
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -Free -X9" archive )
< 
< wrfio_grib2 : 
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -Free -X9" archive )
< 
< ###########################################################
< #ARCH	Cray
< #
< FC		=	f90
< SFC		=	$(FC)
< CC              =       cc
< SCC		=	$(CC)
< NATIVE_RWORDSIZE =      8
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< # does this PROMOTION flag work on Cray?  
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =
< FCFLAGS		=	-f free -N 255 -I.
< FCDEBUG         =       # -g
< FCBASEOPTS	=	$(FCFLAGS)
< ARCHFLAGS       =       $(COREDEFS) -DCRAY CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DIWORDSIZE=8 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=8 \
< 			-DLIMIT_ARGS
< LDFLAGS		= CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/opt/ctl/bin/cpp
< POUND_DEF	=	-DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< PERL            =       CONFIGURE_PERL_PATH
< REGISTRY        =       Registry
< #LIB             =       CONFIGURE_NETCDF_LIB_PATH 
< LIB             = 	../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time  \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       $(CC)
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2  esmf_time
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" archive)
< 
< wrfio_grib1 : 
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" archive )
< 
< wrfio_grib2 : 
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCFLAGS)" archive )
< 
< solve_interface.o : solve_interface.F
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c -O 0 $(PROMOTION) $(FCFLAGS) $*.f90
< 
< ###########################################################
< #ARCH    PC Linux i486 i586 i686, PGI compiler  (Single-threaded, no nesting)
< #
< FC              =       pgf90
< LD              =       pgf90
< CC              =       gcc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< #FCBASEOPTS      =       -w -byteswapio -Mfree -Mipa=fast,inline,safe  $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
< 			-DLIMIT_ARGS
< # machine-specific flags needed to link in ESMF library (C++ run-time-library, etc.)
< ESMF_LIB_FLAGS  =       
< ESMF_IO_LIB     =       ESMFIOLIB
< ESMF_IO_LIB_EXT =       ESMFIOEXTLIB
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       perl
< REGISTRY        =       Registry
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share \
< 			-L../external/fftpack/fftpack5 -lfftpack \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) -byteswapio CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P -traditional
< POUND_DEF	=	$(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       $(CC)
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time fftpack
< 
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib1 :
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
< 
< wrfio_grib2 :
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -O2 " RANLIB="$(RANLIB)" )
< 
< # compile these without high optimization to speed compile
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
< mediation_integrate.o : mediation_integrate.F
< module_configure.o : module_configure.F
< 
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
< module_configure.o                                             \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 10 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 30 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 300 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< 
< ###########################################################
< #ARCH   PC Linux i486 i586 i686, PGI compiler  SM-Parallel (OpenMP, no nesting)
< #
< OMP             =       -mp
< OMPCPP          =       -D_OPENMP
< FC              =       pgf90
< LD              =       pgf90
< CC              =       gcc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(OMP)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
< 			-DLIMIT_ARGS
< # machine-specific flags needed to link in ESMF library (C++ run-time-library, etc.)
< ESMF_LIB_FLAGS  =       
< ESMF_IO_LIB     =       ESMFIOLIB
< ESMF_IO_LIB_EXT =       ESMFIOEXTLIB
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
< PERL            =       perl
< REGISTRY        =       Registry
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P -traditional
< POUND_DEF	=	$(OMPCPP) -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       $(CC)
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
< 
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
< 
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib1 :
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
< 
< wrfio_grib2 :
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< # compile these without high optimization to speed compile
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
< mediation_integrate.o : mediation_integrate.F
< module_configure.o : module_configure.F
< 
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_configure.o                                             \
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
3255,3264c3236
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 10 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 30 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 300 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
3266,3267c3238,3239
< ###########################################################
< #ARCH     PC Linux i486 i586 i686, PGI compiler  DM-Parallel (RSL_LITE, MPICH, Allows ARW and NMM nesting)
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL_LITE, allows nesting)
3271a3244,3262
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
3272a3264,3266
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
3274,3293c3268,3284
< FC              =       mpif90 -f90=pgf90
< LD              =       mpif90 -f90=pgf90
< CC              =       mpicc -cc=gcc
< SCC		=	gcc
< SFC             =       pgf90
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
< #FCOPTIM		=	-fastsse 
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG) # -Mlfs
< #Options for Debian Sarge systems
< #FCBASEOPTS      =       -w -byteswapio -Mfree -Mipa=fast,inline,safe  $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNMM_NEST=$(WRF_NMM_NEST)
---
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
3298,3299c3289,3290
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
3302c3293,3295
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
3307,3309c3300,3302
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       -byteswapio $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
3311,3312c3304,3307
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
3314c3309
< M4              =       m4 -B 14000
---
> M4                = m4
3317d3311
< CC_TOOLS        =       cc
3319c3313
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
3326c3320,3325
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
3330,3342c3329,3333
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib1 :
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib2 :
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive)
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
3346,3451c3337,3340
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC="$(FC) $(FCFLAGS) $(PROMOTION) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
< 
< # compile these without high optimization to speed compile
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
< mediation_integrate.o : mediation_integrate.F
< module_configure.o : module_configure.F
< 
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_configure.o                                             \
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 10 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 30 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 300 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< 
< ###########################################################
< #ARCH    PC Linux x86_64 (IA64 and Opteron), PGI compiler 5.2 or higher  (Single-threaded, no nesting)
< #        Note that for 5.1.x comment out -Mpia=fast
< #
< FC              =       pgf90
< LD              =       pgf90
< CC              =       gcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DLANDREAD_STUB
< FCOPTIM		=	-fastsse #-Mipa=fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
< 			-DLIMIT_ARGS -DLANDREAD_STUB
< # machine-specific flags needed to link in ESMF library (C++ run-time-library, etc.)
< ESMF_LIB_FLAGS  =       
< ESMF_IO_LIB     =       ESMFIOLIB
< ESMF_IO_LIB_EXT =       ESMFIOEXTLIB
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< PERL            =       perl
< REGISTRY        =       Registry
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -C -P -traditional
< POUND_DEF	=	-traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar ru
< M4              =       m4 -B 14000
< RANLIB          =       ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       $(CC)
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
< 
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
< 
< wrfio_nf :
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
3455c3344,3345
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
3459c3349,3350
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3463,3468c3354,3356
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive)
< 
< wrfio_int :
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3472c3360
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
3474c3362,3376
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
3477,3478d3378
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
3480,3488d3379
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
3490c3381
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
3492c3383
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
3495,3501c3386
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
3503c3388,3392
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
3508c3397
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
3510,3512c3399,3400
< ###########################################################
< #ARCH    PC Linux x86_64 (IA64 and Opteron), PGI 5.2 or higher DM-Parallel   (RSL_LITE, MPICH, Allows ARW and NMM nesting, No periodic LBCs)
< #        Note that for 5.1.x comment out -Mpia=fast
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL, allows nesting)
3516a3405,3423
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
3517a3425,3427
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
3519,3535c3429,3445
< FC              =       mpif90
< LD              =       mpif90
< CC              =       mpicc
< SCC		=	gcc
< SFC             =       pgf90
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE \
<                         -DLANDREAD_STUB
< FCOPTIM         =       -fastsse #-Mipa=fast
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DLANDREAD_STUB -DNMM_NEST=$(WRF_NMM_NEST)
---
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
3540,3541c3450,3451
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
3544c3454,3456
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
3548d3459
< 			-L../external/fftpack/fftpack5 -lfftpack \
3550,3552c3461,3463
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       -byteswapio CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
3554,3555c3465,3468
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
3557c3470
< M4              =       m4 -B 14000
---
> M4                = m4
3560d3472
< CC_TOOLS        =       cc
3562c3474
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time fftpack
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
3564c3476
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
3566c3478
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
3568,3569c3480,3486
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
3573c3490,3501
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
3577c3505,3506
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
3581c3510,3511
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3585,3589c3515,3517
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive)
< 
< wrfio_int :
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3593,3600c3521
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -O2 " RANLIB="$(RANLIB)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
3602c3523,3537
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
3605,3606d3539
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
3608,3616d3540
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
3618c3542
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
3620c3544
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
3623,3629c3547
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
3631c3549,3553
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
3636c3558
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
3638,3760c3560,3564
< ###########################################################
< #ARCH    Intel Itanium2 ia64 madison Linux  (e.g. mpp2 at PNNL) , efc71 compiler DM-Parallel (RSL_LITE, MPICH, Allows ARW and NMM nesting )
< # Notes for running on PNNL cluster:
< # 
< # 1. source /home/oehmen/.mycshrc
< # 2. source /home/mscf/intel7.1/compiler70/ia64/bin/efcvars.csh
< # 
< # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
< #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
< #
< DMPARALLEL = 1
< MAX_PROC   = 2000
< FC         = mpif90
< LD         = mpif90
< CC         = mpicc
< SCC        = gcc
< SFC        = efc
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS     = -DDM_PARALLEL -w -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) \
<              -I../external/RSL_LITE -size_lp64 -I/usr/lib/mpi/mpi_intel/include
< FCOPTIM = -O2 -ftz
< FCDEBUG = #-g
< FCBASEOPTS = $(FCDEBUG) -w -FR -I$(INCLUDE) -cm 
< FCNOOPTS = -O0 $(FCDEBUG) -FR -I$(INCLUDE) -w -cm 
< FCFLAGS = $(FCOPTIM) $(FCBASEOPTS) $(OMP) -size_lp64 
< ARCHFLAGS = $(COREDEFS) -DDM_PARALLEL \
<             -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 -DNETCDF \
<             -DGRIB1 CONFIGURE_GRIB2_FLAG -DLIMIT_ARGS 
< # machine-specific flags needed to link in ESMF library (C++ run-time-library, etc.)
< ESMF_LIB_FLAGS  =       
< ESMF_IO_LIB     =       ESMFIOLIB
< ESMF_IO_LIB_EXT =       ESMFIOEXTLIB
< INCLUDE_MODULES = ../main -I../external/io_int -I../external/esmf_time_f90 \
<                   -I../external -I../frame -I../share -I../phys -I../inc  -I../chem \
<                   -I/usr/lib/mpi/mpi_intel/include
< PERL = perl
< REGISTRY = Registry
< LIB = -L../external/io_netcdf -lwrfio_nf $(OMP) -LCONFIGURE_NETCDF_PATH/lib -lnetcdf -L../external/RSL_LITE -lrsl_lite \
<                         -L../external/io_grib1 -lio_grib1 \
<                         CONFIGURE_GRIB2_LIB \
<                         -L../external/io_grib_share -lio_grib_share \
<       ../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time \
<       -lmpifarg -lmpi -lelan -lintrins -lPEPCF90 -limf -lguide -lunwind -lpthread -L/opt/mlib/lib/linux -lveclib8
< LDFLAGS = $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP        = /lib/cpp -traditional -C -P -traditional
< POUND_DEF  = -DNO_RRTM_PHYSICS -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) \
<              -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS   = -I$(LIBINCLUDE) $(ARCHFLAGS) $(COREDEFS) $(OMPCPP) -I$(INCLUDE) \
<              -I../external/RSL_LITE -C -EP `cat ../inc/dm_comm_cpp_flags` $(POUND_DEF)
< AR = ar ru
< M4 = m4 -B 14000
< RANLIB = ranlib
< NETCDFPATH	=	CONFIGURE_NETCDF_PATH
< CC_TOOLS        =       ecc
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
< 
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
< 
< wrfio_nf :
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
< 
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; \
<           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
< 
< wrfio_grib_share :
< 	( cd ../external/io_grib_share ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib1 :
< 	( cd ../external/io_grib1 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_grib2 :
< 	( cd ../external/io_grib2 ; \
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" all )
< 
< esmf_time : 
< 	( cd ../external/esmf_time_f90 ; \
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC='mpicc -w -I.' \
< 	  FC="$(FC) $(PROMOTION) $(FCFLAGS) -cm -w " MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
< 
< # compile these without high optimization to speed compile
< solve_interface.o : solve_interface.F
< shift_domain_em.o : shift_domain_em.F
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< start_domain.o : start_domain.F
< module_configure.o : module_configure.F
< 
< solve_interface.o \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o \
< module_configure.o                                             \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
3765c3569
< 	$(FC) -c $(PROMOTION) $(FCNOOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
3767,3771c3571,3572
< ###########################################################
< #ARCH titan.ncsa.uiuc.edu specific Intel Itanium2 ia64 mckinley Linux, efc compiler DM-Parallel (RSL_LITE, VMI, allows ARW and NMM nesting)
< #
< # Consider 'setenv F_UFMTENDIAN big' in your run scripts for big-endian output
< # Note hard-coded paths to Mark Straka's accounts and ecc6 libs
---
> ############################################################
> #ARCH    Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL, allows nesting)
3775a3577,3595
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
3776a3597,3598
> OMP               =
> OMPCPP            =
3778,3794c3600,3617
< MAX_PROC = 256
< FC = efc -I.. -I/usr/local/vmi/mpich/include
< LD = efc
< CC = ecc -I. -I/usr/local/vmi/mpich/include
< SCC		=	$(CC)
< SFC = efc
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS = -DDM_PARALLEL -I../external/RSL_LITE \
< -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -size_lp64
< FCOPTIM = -O3 -ftz
< FCDEBUG = #-g
< FCBASEOPTS = $(FCDEBUG) -w -FR -I$(INCLUDE) -I. -cm
< FCFLAGS = $(FCOPTIM) $(FCBASEOPTS) $(OMP) -size_lp64
< ARCHFLAGS = $(COREDEFS) -DRSL_LITE -DDM_PARALLEL \
< -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 -DNETCDF \
< -DGRIB1 CONFIGURE_GRIB2_FLAG 
---
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
3799,3800c3622,3623
< INCLUDE_MODULES = ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
< -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
3803c3626,3628
< LIB = -Vaxlib -L../external/io_netcdf -lwrfio_nf $(OMP) -L/u/ncsa/straka/AUGUST.test/WRFV1/netcdfintel7/lib -lnetcdf -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
3808,3810c3633,3635
< ../frame/module_internal_header_util.o ../frame/pack_utils.o -L/usr/local/vmi/mpich/lib/ecc6 -lmpich -lfmpich -lvmi -ldl -lpthread -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS = $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
3813c3638,3640
< CPPFLAGS = -traditional -I$(LIBINCLUDE) -C -P $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF) $(COREDEFS)
---
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
3815c3642
< M4 = m4 -B 14000
---
> M4                = m4
3818d3644
< CC_TOOLS        =       ecc
3820c3646
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
3822c3648
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
3824c3650
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
3826c3652
< module_dm.F : ../external/RSL_LITE/module_dm.F
---
> module_dm.F : ../external/RSL/module_dm.F
3828c3654,3658
<           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
3832c3662,3666
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -Vaxlib -I../.. $(FCFLAGS) -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
3836c3670,3673
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) -Vaxlib -I/usr/local/vmi/mpich/include $(FCDEBUG) $(FCFLAGS) -w" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
3840c3677,3678
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -Vaxlib -I/usr/local/vmi/mpich/include $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
3844c3682,3683
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" CPP="$(CPP)" RANLIB="$(RANLIB)" FC="$(SFC) $(PROMOTION) -Vaxlib -I/usr/local/vmi/mpich/include $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3848c3687,3689
<           make CC="$(CC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" RANLIB="$(RANLIB)" FC="$(SFC) $(PROMOTION) -Vaxlib -I/usr/local/vmi/mpich/include $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3852,3856c3693
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC='ecc -Vaxlib -I. -cm -w -I/usr/local/vmi/mpich/include' \
< 	FC="$(FC) $(PROMOTION) $(FCFLAGS) -cm -w -Vaxlib -I../../.. " MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
3858c3695,3709
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
3861,3862d3711
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
3864,3872d3712
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
3874c3714
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
3875a3716
> mediation_force_domain.o : mediation_force_domain.F
3878,3883c3719
< solve_interface.o \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
3885c3721,3725
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
3890c3730
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
3892,3893c3732,3733
< ###########################################################
< #ARCH AMD x86_64 Intel xeon i686 ia32 Xeon Linux, ifort compiler (single-threaded, no nesting)
---
> ############################################################
> #ARCH    SGI Altix, Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, OpenMP, RSL_LITE, allows nesting)
3895,3896c3735,3762
< OMP             =
< OMPCPP          =
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
3898,3906c3764,3774
< CC              =       gcc
< SCC		=	$(CC)
< SFC		=	$(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< PROMOTION	=	-real_size $(RSIZEBITS)
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -w -FR -cm -I. -Vaxlib -convert big_endian -mp
< FCOPTIM		=	-O2
---
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
3908c3776,3778
< CFLAGS		=       -w
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
3913,3924c3783,3785
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
< ARCHFLAGS       =       $(COREDEFS)  -DLIMIT_ARGS -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) \
<                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG
< LD		=	$(FC)
< LDFLAGS		=	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP		=	/lib/cpp -traditional
< POUND_DEF	=	$(OMPCPP) $(COREDEFS) -DNONSTANDARD_SYSTEM \
<                         -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
3926,3927c3787,3789
< LIB             =	CONFIGURE_NETCDF_LIB_PATH ../frame/module_internal_header_util.o ../frame/pack_utils.o \
<                         -L../external/esmf_time_f90 -lesmf_time \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
3930c3792,3801
<                         -L../external/io_grib_share -lio_grib_share
---
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
3932c3803
< M4              =       m4 -B14000
---
> M4                = m4
3935d3805
< CC_TOOLS        =       $(CC)
3937c3807
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
3939,3940c3809,3819
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
3944c3823,3834
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -FR -I. -w" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
3948,3949c3838,3839
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
< 	  FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
3953c3843,3844
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3957,3961c3848,3850
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" FIXED="-fixed" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -w" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
3965c3854
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
3967c3856,3870
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
3970,3971d3872
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
3972a3874
> module_dm.o : module_dm.F
3974,3981d3875
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
3983,3990c3877,3878
< wrf_bdyin.o : wrf_bdyin.F
< wrf_bdyout.o : wrf_bdyout.F
< wrf_histin.o : wrf_histin.F
< wrf_histout.o : wrf_histout.F
< wrf_inputin.o : wrf_inputin.F
< wrf_inputout.o : wrf_inputout.F
< wrf_restartin.o : wrf_restartin.F
< wrf_restartout.o : wrf_restartout.F
---
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
3992,3996c3880,3884
< wrf_bdyin.o wrf_bdyout.o  \
< wrf_histin.o wrf_histout.o  \
< wrf_inputin.o wrf_inputout.o  \
< wrf_restartin.o wrf_restartout.o  \
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
3998,4002c3886
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o  start_domain.o :
---
> mediation_force_domain.o:
4007c3891
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4009,4014c3893,3897
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< module_configure.o : module_configure.F
< 
< module_configure.o \
< module_dm.o module_comm_dm.o :
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
4019c3902
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) -g -O0 $*.f90
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
4021,4022c3904,3905
< ###########################################################
< #ARCH   AMD x86_64 Intel xeon i686 ia32 Xeon Linux, ifort compiler (OpenMP)
---
> ############################################################
> #ARCH    SGI Altix, Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, RSL_LITE, allows nesting)
4024,4025c3907,3908
< # Note: if you use ifort 8.0, please remove option -xW (for vectorization). This option 
< #       has been identified to produce wrong results occationally.
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
4027,4028c3910,3934
< OMP             =       -openmp -fpp -auto
< OMPCPP          =       -D_OPENMP
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
4030,4040c3936,3946
< LD              =       ifort
< CC              =       gcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< PROMOTION	=	-real_size $(RSIZEBITS)
< CFLAGS          =
< FCOPTIM		=	-O3 # -xW
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -FR -cm -w -I. $(FCDEBUG) -convert big_endian -mp
---
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
4042,4043c3948,3949
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
4050c3956
<                         -I../frame -I../share -I../phys -I../inc -I../chem
---
>                     -I../external -I../frame -I../share -I../phys -I../inc
4053c3959,3961
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
4057,4062c3965,3973
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -traditional
< POUND_DEF	=	$(OMPCPP) $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS) -DGRIB1 CONFIGURE_GRIB2_FLAG
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
4064c3975
< M4              =       m4 -B 14000
---
> M4                = m4
4067d3977
< CC_TOOLS        =       $(CC)
4069c3979
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4071,4072c3981,3991
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
4076c3995,4006
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4080,4081c4010,4011
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
< 	  FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4085c4015,4016
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4089,4094c4020,4022
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" FIXED="-fixed" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4098c4026
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
4100c4028,4042
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
4102d4043
< solve_em.o : solve_em.F
4104,4105d4044
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
4106a4046
> module_dm.o : module_dm.F
4108,4115d4047
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
4117,4135c4049
< mediation_integrate.o : mediation_integrate.F
< 
< solve_interface.o                                              \
< solve_em.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
< module_initialize_real.o start_domain.o :
< 	$(RM) $@
< 	$(SED_FTN) $*.F > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $*.b  > $*.f90
< 	$(RM) $*.b
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(OMP) $(MODULE_DIRS) $*.f90
< 
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
---
> mediation_force_domain.o : mediation_force_domain.F
4137a4052
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
4139c4054,4058
< module_dm.o module_comm_dm.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
4144c4063
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -g -O0 $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4146,4147c4065,4066
< ###########################################################
< #ARCH    AMD x86_64 Intel xeon i686 ia32 Xeon Linux, ifort+gcc compiler  DM-Parallel (RSL_LITE, MPICH)
---
> ############################################################
> #ARCH    SGI Altix, Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, OpenMP, RSL, allows nesting)
4149,4150d4067
< # Note: if you use ifort 8.0, please remove option -xW (for vectorization). This option 
< #       has been identified to produce wrong results occationally.
4154c4071,4089
< #
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
4155a4091,4093
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
4157,4160c4095,4100
< FC              =       mpif90 -f90=ifort
< LD              =       mpif90 -f90=ifort
< CC              =       mpicc -cc=gcc
< SCC		=	gcc
---
> MPI_HOME          = /usr
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
4162,4171c4102,4110
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS	=	`expr $(RWORDSIZE) \* 8`
< PROMOTION	=	-real_size $(RSIZEBITS)
< FCOPTIM		=	-O3 # -xW
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -FR -cm -w -I. $(FCDEBUG) -convert big_endian -mp
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
<                         -DMPI  \
---
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
4173,4174d4111
< CFLAGS          =       -w -DDM_PARALLEL $(ARCHFLAGS) \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
4179,4180c4116,4117
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
4183,4184c4120,4122
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
< 			-L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
4188,4193c4126,4134
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time
< LDFLAGS         =       $(FCOPTIM) -convert big_endian CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /lib/cpp -traditional
< POUND_DEF	=	-DNO_RRTM_PHYSICS  $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS) -DGRIB1 CONFIGURE_GRIB2_FLAG
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
4195c4136
< M4              =       m4 -B 14000
---
> M4                = m4
4198d4138
< CC_TOOLS        =       gcc
4200c4140
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4202c4142
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
4204c4144
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
4206,4207c4146,4152
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
4211c4156,4167
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4215,4216c4171,4172
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
< 	  FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4220c4176,4177
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4224,4228c4181,4183
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCFLAGS) -w" FIXED="-fixed" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4232,4236c4187
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; \
<           make CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
4238c4189,4203
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
4241,4242d4205
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
4243a4207
> module_dm.o : module_dm.F
4245,4252d4208
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
4254,4256c4210,4211
< solve_em.o : solve_em.F
< start_em.o : start_em.F
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
4258c4213,4217
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
4260,4265c4219
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
< module_initialize_real.o start_domain.o solve_em.o start_em.o :
---
> mediation_force_domain.o:
4270,4274c4224
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< 
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
< module_configure.o : module_configure.F
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4276,4277c4226,4230
< module_configure.o \
< module_dm.o module_comm_dm.o :
---
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
4282,4284c4235
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) -g -O0 $*.f90
< 
< ###########################################################
---
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
4286,4307c4237,4260
< #ARCH NEC SUPER-UX SX-6 (serial)
< 
< #***** some sx f90 compiler options***********
< # -V : version # of f90 command to stderr
< #-EP : activate cpp preprocessor to perform conditional compiling: output as i.[filename]
< #-Ep: activate cpp preprocessor to perfomr conditional compiling
<    #****However, cpp also activated by using .F or .F90 suffixes...
< # -Wf: specifies option string of the f90/sx detailed options
< #-g: debug info generated in object file for dbx symbolic debugging
< # -ew : all numbers size=8bytes
< #-eW: 4 bytes
< # -float0: default and only -float(number) option for sx6
< # -USX: unname the prev. defined reserved symbol SX of the preprocessor
<    # -U overrides -D, so '-USX  -D$(RUNTIMESYSTEM)'  might be redundant
< # -p: object file in execution format corresp. to 'prof' command be generated
< # -f4: input source program is described in F90 standard free format
< # -w: only syntax diagnostic messages at the fatal level are output
< # -C: specifies compile mode
< #   ssafe: only safe optimization in scalar mode (minimize side effects of 
< #          opt. no loop unrolling, etc
< # -init : init stack and heap areas
< # -L fmtlist summary stdout: formatted list, transformation lists, summary list are output to stdout
---
> ############################################################
> #ARCH    SGI Altix, Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x DM-Parallel (SGI MPI, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
4309,4314c4262,4268
< RUNTIME_SYSTEM	=	sx
< MPP_TARGET	=	$(RUNTIME_SYSTEM)
< FC		=	f90
< SFC		=	$(FC)
< CC		=	cc
< SCC		=	$(CC)
---
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = /usr
> FC                = ifort
4316,4328c4270,4283
< NATIVE_RWORDSIZE =      8
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< ARCHFLAGS	= $(COREDEFS)	-DNETCDF -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DWRF_RSL_IO -DIWORDSIZE=8 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=8 -DLIMIT_ARGS -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)
< PROMOTION	=	
< CFLAGS		=	$(ARCHFLAGS)
< 
< FCFLAGS		=	-w -Ep -C ssafe \
< 			-sx6 -USX -ew -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) -I../inc -f4 
< 		#	-Wf"-init stack=zero heap=zero" 
< 		#         -Wf"-L transform fmtlist summary stdout" -g
< FCDEBUG         =       # -g
< FCBASEOPTS	=	$(FCFLAGS) -w
< 
---
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -unroll0
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
4333,4334c4288,4289
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  \
<                         -I../external/esmf_time_f90 -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
4337c4292,4294
< LIB             =       -L../external/io_netcdf -lwrfio_nf -L/usr/local/netcdf/current/lib -lnetcdf -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
4341,4356c4298,4306
< 			-L../external/esmf_time_f90 -lesmf_time \
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o
< 
< #-lmpi for 4byte storage, -lmpiw for 8 byte storage 
< #LDOPTIONS	=	-lmpiw -ew 
< CPP		=	/lib/cpp 
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF) $(ARCHFLAGS)
< 
< MAX_PROC = 8
< MAKE = make -i -r
< AWK = awk
< SED = sed
< CAT = cat
< CUT = cut
< EXPAND = expand
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                     -L/usr/lib -lmpi -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
4358,4365c4308,4310
< M4 = m4 -B14000
< RANLIB = ar ru     
< NETCDFPATH = /usr/local/netcdf/current
< CC_TOOLS        =       $(CC)
< ARCH_OBJS = milliclock.o
< ASSUME_HOMOGENEOUS_ENVIRONMENT = 1
< FLIC_MACROS = LMvpp.m4 -B 14000
< VECTOR = 1
---
> M4                = m4
> RANLIB            = ranlib
> NETCDFPATH	      = CONFIGURE_NETCDF_PATH
4366a4312
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4368c4314,4316
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int  esmf_time  module_dm.F
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
4370,4372c4318,4324
< module_dm.F:
< 	( /sbin/cp module_dm_warning module_dm.F ; \
< 	  cat module_dm_stubs.F  >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
4376,4377c4328,4332
< 	  make NETCDFPATH=/usr/local/netcdf/current FC="$(FC) $(PROMOTION) $(FCFLAGS)"  )
< 
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
4381c4336,4339
< 	  make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4385c4343,4344
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4389c4348,4349
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4393c4353,4355
<           make CC="$(CC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCFLAGS)" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4397c4359
<  	make FC="$(FC) $(PROMOTION) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) $(CPPFLAGS) -I../../inc " )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
4399c4361,4375
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
4402,4403d4377
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
4405,4413d4378
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
4415c4380
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
4416a4382
> mediation_force_domain.o : mediation_force_domain.F
4419,4420c4385
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
4422,4426c4387,4391
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o  start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
4431c4396
< 	$(FC) -c $(PROMOTION) $(FCFLAGS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4433,4453c4398,4399
< ###########################################################
< #ARCH   SGI Altix, Intel Itanium2 ia64 Linux, ifort DM-Parallel (RSL_LITE, VMI, SGI MPI, Allows ARW and NMM nesting)
< #
< #  'setenv F_UFMTENDIAN big' in run scripts not necessary
< #  since -convert big_endian is in FCBASEOPTS
< #  Change MPI_HOME if SGI's MPI is not in the default directories
< #
< #  Process pinning should be used -- set the environment
< #  variable MPI_DSM_DISTRIBUTE on a dedicated system, when
< #  running through the cpuset command, or when using a batch
< #  scheduler that has dynamic cpuset support enabled.  In
< #  other cases, if specific processors are known to be free,
< #  the environment variable MPI_DSM_CPULIST may be used
< #  (details in 'man mpi').
< #
< #  Adding -mP3OPT_ecg_lra_switch=T to the compiler options for
< #  modules/routines that take a long time to compile but do not
< #  significantly contribute to the total runtime performance is 
< #  appropriate.  Temporary suggestion for 2.1.1, Nov 2005.
< #
< # Contributed settings from Gerardo Cisneros, SGI
---
> ############################################################
> #ARCH    SGI Altix/Generic Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, RSL, allows nesting)
4457a4404,4422
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
4458a4424,4425
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
4461,4466c4428,4433
< MPI_HOME          = /usr
< FC                = ifort -I..
< LD                = ifort
< CC                = icc -I.
< SCC                = icc -I.
< CC_TOOLS          = cc
---
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
4468,4469c4435
< CFLAGS            = -w -O3 -unroll0 -ip -tpp2 -c -ftz -DDM_PARALLEL -I../external/RSL_LITE \
<                     -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)
---
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DSTUBMPI -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
4471,4474c4437,4440
< FCDEBUG           = # -g
< FCBASEOPTS        = -w -ip -tpp2 -ftz -FR -convert big_endian $(FCDEBUG) \
<                      -fno-alias -fno-fnalias -align all -IPF_fp_relaxed \
<                      -I$(INCLUDE) -I. 
---
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
4476,4477c4442,4444
< ARCHFLAGS         = $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
<                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF -DSGIALTIX
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL -DSTUBMPI \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
4483c4450
<                     -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
>                     -I../external -I../frame -I../share -I../phys -I../inc
4488c4455
<                     -L../external/RSL_LITE -lrsl_lite \
---
>                     -L../external/RSL/RSL -lrsl \
4494c4461
<                     -L$(MPI_HOME)/lib -lmpi -L../external/esmf_time_f90 -lesmf_time 
---
>                      -L../external/esmf_time_f90 -lesmf_time
4499c4466
<                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
---
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
4502c4469
< M4                = m4 -B 14000
---
> M4                = m4
4506c4473
< externals : CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4508c4475
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
4510c4477
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
4512c4479
< module_dm.F : ../external/RSL_LITE/module_dm.F
---
> module_dm.F : ../external/RSL/module_dm.F
4514c4481,4485
<           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC="$(CC) $(CFLAGS) -I." \
> 	 FC='$(FC)  $(FCFLAGS) -FI -I../../' CFLAGS="-DSTUBS $(CFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST stub )
4527c4498,4500
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
---
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4532c4505
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4537c4510,4511
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
4540,4541c4514,4516
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" FIXED="-fixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4547,4551c4522,4525
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC='icc -I. -w -O3 -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
< 	 FC='ifort -w -O3 -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
< 
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
4567d4540
< module_comm_dm.o : module_comm_dm.F
4577c4550
< module_domain.o module_dm.o module_comm_dm.o module_io_wrf.o start_domain.o solve_interface.o \
---
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
4584c4557
< 	$(FC) -c $(FCBASEOPTS) -O0 $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4585a4559,4568
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
4587,4591c4570,4571
< ###########################################################
< #ARCH   SGI Altix, Intel Itanium2 ia64 Linux, ifort compiler (OpenMP, no nesting)
< #
< #  'setenv F_UFMTENDIAN big' in run scripts not necessary
< #  since -convert big_endian is in FCBASEOPTS
---
> ############################################################
> #ARCH    SGI Altix/Generic Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, no nesting)
4593,4599c4573,4574
< #  Adding -mP3OPT_ecg_lra_switch=T to the compiler options for
< #  modules/routines that take a long time to compile but do not
< #  significantly contribute to the total runtime performance is 
< #  appropriate.  Temporary suggestion for 2.1.1, Nov 2005.
< #
< # Contributed settings from Gerardo Cisneros, SGI
< # Set up only for idealized experiments
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
4601c4576,4596
< OMP               = -openmp
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        =
> OMP               = -openmp -fpp -auto
4604,4608c4599,4605
< FC                = ifort -I..
< LD                = ifort
< CC                = icc -I.
< SCC                = icc -I.
< CC_TOOLS          = cc
---
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
4610c4607
< CFLAGS            = -w -O3 -unroll0 -ip -tpp2 -c -ftz 
---
> CFLAGS            = -w -O3 -ip  -c    -openmp
4612,4615c4609,4612
< FCDEBUG           = # -g
< FCBASEOPTS        = -w -ip -tpp2 -ftz -FR -convert big_endian $(FCDEBUG) \
<                      -fno-alias -fno-fnalias -align all -IPF_fp_relaxed \
<                      -I$(INCLUDE) -I. 
---
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
4617c4614,4616
< ARCHFLAGS         = $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF -DSGIALTIX
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
4623c4622
<                     -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
>                     -I../external -I../frame -I../share -I../phys -I../inc
4628c4627
<                     -L../external/io_int -lwrfio_int \
---
>                      \
4631a4631
>                     -L../external/io_int -lwrfio_int \
4638c4638
<                     -I$(INCLUDE) -C -P `cat ../inc/dm_comm_cpp_flags` \
---
>                     -I$(INCLUDE)  -C -P  \
4641c4641
< M4                = m4 -B 14000
---
> M4                = m4
4645c4645
< externals : CONFIGURE_WRFIO_NF wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4655,4658c4655,4657
< 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc )
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc ; \
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../io_phdf5 ; \
< #	/bin/cp wrf_io_flags.h ../io_quilt )
---
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
4663c4662,4664
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
---
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4668c4669
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4673c4674,4675
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
4676,4677c4678,4680
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" FIXED="-fixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4683c4686,4689
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
4697,4698d4702
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
4699a4704
> module_dm.o : module_dm.F
4704d4708
< module_bl_mrf.o: module_bl_mrf.F
4710,4711c4714,4715
< module_domain.o module_dm.o module_comm_dm.o module_io_wrf.o start_domain.o solve_interface.o \
< shift_domain_em.o module_bl_mrf.o                              \
---
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
4717c4721
< 	$(FC) -c $(FCBASEOPTS) -O0 $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4718a4723,4732
> # OpenMP workaround for solve_em.F
> # This should be fixed in newer versions of Intel Fortran Compiler (somewhere after 9.1.041).
> # You can check if you really need this workaround by building without the following rule
> # and making sure that output of "nm solve_em.o | grep kmp" contains kmpc_fork_call.
> solve_em.o : solve_em.F
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC)  -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 -override-limits $(MODULE_DIRS) $*.f90
4720,4724c4734,4735
< ###########################################################
< #ARCH   SGI Altix, Intel Itanium2 ia64 Linux, ifort compiler (Single-processor, no nesting)
< #
< #  'setenv F_UFMTENDIAN big' in run scripts not necessary
< #  since -convert big_endian is in FCBASEOPTS
---
> ############################################################
> #ARCH    SGI Altix/Generic Dual-Core Intel Itanium2 Processor 9000 Sequence ia64 Linux, ifort+icc 9.x,10.x Sequential (no nesting)
4726,4731c4737,4738
< #  Adding -mP3OPT_ecg_lra_switch=T to the compiler options for
< #  modules/routines that take a long time to compile but do not
< #  significantly contribute to the total runtime performance is 
< #  appropriate.  Temporary suggestion for 2.1.1, Nov 2005.
< #
< # Contributed settings from Gerardo Cisneros, SGI
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
4732a4740,4761
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> #        To improve performance on Itanium2 architecture you might want to use '-IPF-fp-relaxed' flag, which enables
> #        use of faster but slightly less accurate code sequences for math functions, such as divide and sqrt,
> #        and enables the performance of more aggressive floating-point transformations, which may affect accuracy.
> 
> DMPARALLEL        =
> OMP               =
> OMPCPP            =
4734,4738c4763,4769
< FC                = ifort -I..
< LD                = ifort
< CC                = icc -I.
< SCC                = icc -I.
< CC_TOOLS          = cc
---
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
4740c4771
< CFLAGS            = -w -O3 -unroll0 -ip -tpp2 -c -ftz 
---
> CFLAGS            = -w -O3 -ip  -c
4742,4747c4773,4780
< FCDEBUG           = # -g
< FCBASEOPTS        = -w -ip -tpp2 -ftz -FR -convert big_endian $(FCDEBUG) \
<                      -fno-alias -fno-fnalias -align all -IPF_fp_relaxed \
<                      -I$(INCLUDE) -I. 
< FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS         = $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF -DSGIALTIX
---
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias -mtune=itanium2-p9000 \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
4753c4786
<                     -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
>                     -I../external -I../frame -I../share -I../phys -I../inc
4756c4789
< LIB               = -L../external/io_netcdf -lwrfio_nf \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
4758c4791
<                     -L../external/io_int -lwrfio_int \
---
>                      \
4761a4795
>                     -L../external/io_int -lwrfio_int \
4764c4798
< LDFLAGS           = -O3 -ip  CONFIGURE_LDFLAGS
---
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
4767,4768c4801,4802
< CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) \
<                     -I$(INCLUDE) -C -P `cat ../inc/dm_comm_cpp_flags` \
---
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
4771c4805
< M4                = m4 -B 14000
---
> M4                = m4
4775c4809
< externals : CONFIGURE_WRFIO_NF wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4785,4788c4819,4821
< 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc )
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc ; \
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../io_phdf5 ; \
< #	/bin/cp wrf_io_flags.h ../io_quilt )
---
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
4793c4826,4828
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
---
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4798c4833
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4803c4838,4839
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
---
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
4806,4807c4842,4844
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
<           FC="ifort -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" FIXED="-fixed" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4813c4850,4853
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
4827,4828d4866
< module_dm.o : module_dm.F
< module_comm_dm.o : module_comm_dm.F
4829a4868
> module_dm.o : module_dm.F
4839c4878
< module_domain.o module_dm.o module_comm_dm.o module_io_wrf.o start_domain.o solve_interface.o \
---
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
4846c4885
< 	$(FC) -c $(FCBASEOPTS) -O0 $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
4848,4849c4887,4888
< ###########################################################
< #ARCH   UNICOS/mp  machine crayx1 (RSL_LITE, MPI, MSP mode)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL_LITE, allows nesting)
4851,4853c4890,4891
< #  Cray X1 (RSL_LITE, MPI, MSP mode)
< #  For CSD mode set numtiles=4 in &domains section
< #  in namelist.input for best MSP efficiency.
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
4854a4893,4908
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
4855a4910,4912
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
4857,4884c4914,4930
< FC              =       ftn
< SFC		=	$(FC)
< LD              =       ftn
< CC              =       cc
< SCC		=	$(CC)
< 
< #### Override default sed command and script for Fortran source files ####
< #### This sed script converts !$OMP directives to !csd$ directives ####
< SED_FTN = sed -f ../arch/cray_csd.sed
< 
< ## Use these for X1 cross compiler to build Registry
< ##X1_CROSS_COMP = "gcc"
< ##X1_CROSS_CFLG = ""
< ## Use these for X1 native (trigger) compiler
< X1_CROSS_COMP = "cc"
< X1_CROSS_CFLG = "-hcommand"
< CC_TOOLS        = 	$(X1_CROSS_COMP) $(X1_CROSS_CFLG)
< 
< RWORDSIZE         = $(NATIVE_RWORDSIZE)
< FCDEBUG         =       # -g
< FCBASEOPTS      =       -f free -N 255 -I. -x omp -dy
< FCFLAGS_LOWOPT  =       $(FCBASEOPTS) -O1
< FCFLAGS         =       $(FCBASEOPTS) -Ofp3 -O3 -Ogen_private_callee
< #if using 64bit precision
< #PROMOTION	=	-sreal64 -dp -sinteger32
< CFLAGS          =       -I../external/RSL_LITE -DMAXDOM_MAKE=$(MAX_DOMAINS) \
<                         -DMAXPROC_MAKE=$(MAX_PROC) -DDM_PARALLEL -UCRAY -DLANDREAD_STUB -Dcrayx1
< 
---
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
4889,4896c4935,4936
< INCLUDE_MODULES =       -I../inc \
< 			-p./ -p../external/io_netcdf -p../external/io_int -p../frame \
<                         -p../frame -p../share -p../phys -p../chem \
<                         -p../dyn_em -p ../external/esmf_time_f90
< ARCHFLAGS       =       $(COREDEFS) -DRSL_LITE -DDM_PARALLEL -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) \
<                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO \
< 			-DLIMIT_ARGS -Dcrayx1
< 
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
4899,4900c4939,4940
< 
< LIB             =       -L../external/io_netcdf -lwrfio_nf CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
4902d4941
<                         -L../external/io_int -lwrfio_int  \
4905a4945
>                     -L../external/io_int -lwrfio_int \
4907,4915c4947,4953
< 			-L../external/esmf_time_f90 -lesmf_time -lmalloc
< 
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< LDFLAGS         =       
< 
< CPP		=	cpp -C -P -Dcrayx1
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS) # 
< CPPFLAGS	=	-I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE `cat ../inc/dm_comm_cpp_flags` $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
< 
---
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
4917,4918c4955,4956
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
4921c4959
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
4924c4962,4963
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
4927c4966,4971
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
4930c4974,4979
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP) -Dcrayx1" FC="$(FC) $(PROMOTION) -f free -N 255 " )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
4934c4983,4986
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) -f free -N 255" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
4938c4990,4991
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP) -Dcrayx1" FC="$(FC) $(PROMOTION) -f free -N 255" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
4942,4943c4995,4997
<           make CC="$(CC) -UCRAY" CPP="$(CPP) -Dcrayx1" RANLIB="$(RANLIB)" \
<           FC="$(FC) $(PROMOTION) -f free -N 255" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
4946,4947c5000,5002
<           make CC="$(CC) -UCRAY" CPP="$(CPP) CONFIGURE_GRIB2_INC -Dcrayx1" RM="$(RM)" RANLIB="$(RANLIB)" \
<           FC="$(SFC) $(PROMOTION) -f free -N 255" archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
4951,4955c5006
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) -f free -N 255" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CFLAGS="$(CFLAGS)" CC="$(CC)" FC="$(FC) $(PROMOTION) $(FCFLAGS)" \
<                                      MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
4957,4967c5008,5021
< # compile these without high optimization
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
4968a5023,5025
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
> module_io_wrf.o : module_io_wrf.F
4970c5027
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
4972d5028
< mediation_interp_domain.o : mediation_interp_domain.F
4974d5029
< convert_nmm.o : convert_nmm.F
4975a5031,5046
> 
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
4977,4981c5048
< solve_interface.o : solve_interface.F
< wrf_restartout.o : wrf_restartout.F
< wrf_restartin.o : wrf_restartin.F
< input_wrf.o : input_wrf.F
< output_wrf.o : output_wrf.F
---
> module_dm.o : module_dm.F
4983,4993c5050,5051
< module_io_mm5.o module_si_io.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o \
< mediation_interp_domain.o \
< mediation_force_domain.o \
< module_configure.o solve_em.o \
< input_wrf.o output_wrf.o \
< solve_interface.o wrf_restartout.o wrf_restartin.o \
< convert_nmm.o    :
---
> solve_em.o \
> module_dm.o :
4998c5056
< 	$(FC) -c $(PROMOTION) $(FCFLAGS_LOWOPT) $(MODULE_DIRS)  $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
5000,5001c5058,5062
< ###########################################################
< #ARCH	HP-UX	PA8600	32bit   (single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5002a5064,5080
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
5005,5018c5083,5097
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< ARCHFLAGS       =       $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DLIMIT_ARGS -DFLOATSAFE \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       $(ARCHFLAGS) +DS2.0a -DNOUNDERSCORE
< FCOPTIM         =       +O3 +DA2.0N +DS2.0a +Odataprefetch +Olibcalls +DO11.0EP9806 +noppu \
< 			+save +fastallocatable +Ofltacc +extend_source +source=free +FPD
< FCDEBUG         =       # -g
< FCBASEOPTS      =       +U77 +source=free -I. +DS2.0a +noppu +Onoopenmp $(FCDEBUG)
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5019a5099,5101
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
5024,5026c5106,5108
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
5028c5110,5112
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
5032,5037c5116,5124
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =        /lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5039,5040c5126,5127
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
5042d5128
< CC_TOOLS        =       cc
5044c5130
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5046,5047c5132,5142
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
5051c5146,5150
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) " )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5055c5154,5157
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5059c5161,5162
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5063,5064c5166,5168
<           make CC="$(CC)" CPP="$(CPP)" RANLIB="$(RANLIB)" \
<           FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
5067,5068c5171,5173
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
<           FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5072c5177
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5074c5179,5193
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5077,5078d5195
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5080,5088d5196
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5090,5091c5198
< module_comm_dm.o : module_comm_dm.F
< mediation_integrate.o : mediation_integrate.F
---
> module_domain.o : module_domain.F
5092a5200
> mediation_force_domain.o : mediation_force_domain.F
5095,5096c5203
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5098,5102c5205,5222
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o mediation_integrate.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
5107c5227
< 	$(FC) -c $(PROMOTION) $(FCFLAGS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
5109,5110c5229,5230
< ###########################################################
< #ARCH	HP-UX	Itanium2	(single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL, allows nesting)
5112,5127c5232,5268
< OMP             =       
< OMPCPP          =       
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< ARCHFLAGS       =       $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DLIMIT_ARGS -DFLOATSAFE \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       $(ARCHFLAGS) +DSitanium2 -DNOUNDERSCORE
< FCOPTIM         =       +O3 +Odataprefetch +Olibcalls +DO11.23 +noppu \
< 			+save +fastallocatable +Ofltacc +extend_source +source=free +FPD
< FCDEBUG         =       # -g
< FCBASEOPTS      =       +U77 +source=free -I. +DSitanium2 +noppu +Onoopenmp $(FCDEBUG)
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5128a5270,5272
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
5133,5135c5277,5279
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
5137c5281,5283
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
5141,5146c5287,5295
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =        /lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5148,5149c5297,5298
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
5151d5299
< CC_TOOLS        =       cc
5153c5301
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5155,5156c5303,5313
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
5160c5317,5321
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) " )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5164c5325,5328
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5168,5169c5332,5333
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
<           FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5173,5174c5337,5339
<           make CC="$(CC)" CPP="$(CPP)" RANLIB="$(RANLIB)" \
<           FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
5177,5178c5342,5344
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
<           FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5182c5348
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5184c5350,5364
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5187,5188d5366
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5190,5198d5367
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5200,5201c5369
< module_comm_dm.o : module_comm_dm.F
< mediation_integrate.o : mediation_integrate.F
---
> module_domain.o : module_domain.F
5202a5371
> mediation_force_domain.o : mediation_force_domain.F
5205,5206c5374
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5208,5212c5376,5393
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o mediation_integrate.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
5217c5398
< 	$(FC) -c $(PROMOTION) $(FCFLAGS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
5219,5220c5400,5401
< ###########################################################
< #ARCH	HP-UX	PA8600		32bit   (openmp, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL, allows nesting)
5222,5237c5403,5439
< OMP             =      	+Oopenmp 
< OMPCPP          =       -D_OPENMP
< FC              =       f90
< SFC		=	$(FC)
< LD              =       f90
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< ARCHFLAGS       =       $(COREDEFS) CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DLIMIT_ARGS -DFLOATSAFE \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       $(ARCHFLAGS) +DS2.0a -DNOUNDERSCORE
< FCOPTIM         =       +O3 +DA2.0N +DS2.0a +Odataprefetch +Olibcalls +DO11.0EP9806 +noppu \
< 			+save +fastallocatable +Ofltacc +extend_source +source=free +FPD
< FCDEBUG         =       # -g
< FCBASEOPTS      =       +U77 +source=free -I. +DS2.0a $(FCDEBUG)
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5238a5441,5443
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
5243,5245c5448,5450
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
5247c5452,5454
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
5251,5256c5458,5466
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCOPTIM) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =        /lib/cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5258,5259c5468,5469
< M4              =       m4 -B14000
< RANLIB          =       echo
---
> M4                = m4
> RANLIB            = ranlib
5261d5470
< CC_TOOLS        =       cc
5263c5472
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5265,5266c5474,5484
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
5270c5488,5492
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) " )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5274c5496,5499
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5278,5279c5503,5504
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" \
<           FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5283,5284c5508,5510
<           make CC="$(CC)" CPP="$(CPP)" RANLIB="$(RANLIB)" \
<           FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
> 
5287,5288c5513,5515
<           make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" \
<           FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS) -I../../inc " archive )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5292c5519
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5294c5521,5535
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5297,5298d5537
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5300,5308d5538
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5310,5311c5540
< module_comm_dm.o : module_comm_dm.F
< mediation_integrate.o : mediation_integrate.F
---
> module_domain.o : module_domain.F
5312a5542
> mediation_force_domain.o : mediation_force_domain.F
5315,5316c5545
< solve_interface.o                                              \
< shift_domain_em.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5318,5322c5547,5564
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o mediation_integrate.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
5327c5569
< 	$(FC) -c $(PROMOTION) $(FCFLAGS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
5329,5330c5571,5572
< ###########################################################
< #ARCH Darwin		(single-threaded, xlf, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL_LITE, allows nesting)
5332,5334c5574,5575
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5336,5349c5577,5614
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< #CC              =       cc_r
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       = $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DLANDREAD_STUB -I /usr/include/sys -DMACOS
< FCOPTIM         =       -O3 -qarch=auto #-qfloat=nomaf
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -qsave $(FCDEBUG) -qmaxmem=32767 -qspillsize=32767 -w 
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
5354,5360c5619,5621
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS  -DLANDREAD_STUB -DMAC_KLUDGE
< #			-DLIMIT_ARGS  -DNATIVE_MASSV -DMACOS
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
5362,5364c5623,5625
< #LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv 
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
5368,5375c5629,5637
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< 
< LDFLAGS         =	 -Wl,-stack_size,10000000,-stack_addr,0xc0000000 CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< #CPP             =       /opt/ibmcmp/xlf/8.1/exe/cpp -C -P
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF) 
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5377c5639
< M4              =       m4 -B 14000
---
> M4                = m4
5380d5641
< CC_TOOLS        =       cc
5382c5643
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5384,5385c5645,5655
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
5388c5658,5663
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5392c5667,5670
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5396c5674,5675
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5400c5679,5680
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5404c5684,5686
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5408c5690
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5409a5692,5706
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5411,5415d5707
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c -qfree=f90 -qspillsize=32767 -I. $(PROMOTION) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
< 
< # compile these without high optimization to speed compile
5417,5418d5708
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5420,5428d5709
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5430c5711
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
5432,5433d5712
< solve_em.o : solve_em.F
< mediation_interp_domain.o : mediation_interp_domain.F
5435,5436d5713
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
5439,5445c5716
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< shift_domain_em.o                                              \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5446a5718,5733
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
5448c5735
< convert_nmm.o :
---
> module_dm.o :
5453c5740
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
5455,5456c5742,5743
< ###########################################################
< #ARCH Darwin		(OpenMP, xlf, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL_LITE, allows nesting)
5458,5460c5745,5746
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5462,5476c5748,5785
< OMP             =       -qsmp=noauto
< OMPCPP          =       -D_OPENMP
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< CC              =       cc
< SCC		=	$(CC)
< RWORDSIZE       = $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DLANDREAD_STUB -I /usr/include/sys -DMACOS
< FCOPTIM         =       -O2 -qarch=auto -qunroll=yes #-qfloat=nomaf
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -w -qsave $(FCDEBUG) -qmaxmem=32767 -qspillsize=32767 #-qflttrap=zerodivide:invalid:enable -qsigtrap
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
5481,5486c5790,5792
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS  -DLANDREAD_STUB -DMACOS -DMAC_KLUDGE
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
5488,5489c5794,5796
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -lxlsmp \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
5493,5498c5800,5808
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(OMP) -Wl,-stack_size,10000000,-stack_addr,0xc0000000  CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =        /usr/bin/cpp -C -P -xassembler-with-cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(OMPCPP) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5500c5810
< M4              =       m4 -B 14000
---
> M4                = m4
5503d5812
< CC_TOOLS        =       $(CC)
5505c5814
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5507,5508c5816,5826
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
5511c5829,5834
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5515c5838,5841
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5519c5845,5846
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5523c5850,5851
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5527c5855,5857
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5531,5532c5861
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5534c5863,5881
< module_configure.o : module_configure.F
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
> solve_interface.o : solve_interface.F
> shift_domain_em.o : shift_domain_em.F
> module_io_wrf.o : module_io_wrf.F
> module_dm.o : module_dm.F
5536,5540c5883,5885
< module_sm.o 	: module_sm.F
< module_tiles.o	: module_tiles.F
< solve_em.o	: solve_em.F
< solve_exp.o	: solve_exp.F
< convert_nmm.o   : convert_nmm.F
---
> start_domain.o : start_domain.F
> mediation_force_domain.o : mediation_force_domain.F
> module_configure.o : module_configure.F
5542c5887,5893
< module_configure.o module_sm.o module_tiles.o solve_em.o solve_exp.o convert_nmm.o :
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
5545c5896
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
5547c5898,5903
< 	$(FC) -c -g $(PROMOTION) $(OMP) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt -qnohot $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
5549c5905,5906
< module_domain.o :
---
> solve_em.o \
> module_dm.o :
5551,5552c5908,5909
< 	$(SED_FTN) $*.F90 > $*.b 
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
5554c5911
< 	$(FC) -c -g $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) -qnoopt -qnohot $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
5556,5557c5913,5914
< ###########################################################
< #ARCH Darwin		(OpenMP, pgf90, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL, allows nesting)
5559,5561c5916,5917
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5563c5919,5936
< OMP             =       -mp
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
5565,5576c5938,5952
< FC              =       pgf90
< LD              =       pgf90
< CC              =       pgcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DMACOS
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG) # -Mlfs
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5578,5579c5954,5955
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DMACOS \
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
5585,5586c5961,5962
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
5589c5965,5967
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
5593,5598c5971,5979
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	$(OMPCPP) -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5600c5981
< M4              =       m4 -B 14000
---
> M4                = m4
5603d5983
< CC_TOOLS        =       $(CC)
5605c5985
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5607,5608c5987,5997
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
5612c6001,6012
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5616c6016,6017
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5620c6021,6022
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5624,5629c6026,6028
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5633c6032
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5635c6034,6048
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5638,5639d6050
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5641,5649d6051
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5651c6053
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
5653c6055
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
5656,5661c6058
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5663,5664c6060,6077
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
5667c6080
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
5669c6082
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
5671,5672c6084,6085
< ###########################################################
< #ARCH Darwin		(ifort, single-threaded, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL, allows nesting)
5674,5676c6087,6088
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5677a6090,6106
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
5680,5691c6109,6123
< FC              =       ifort
< LD              =       ifort
< CC              =       gcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS       =       `expr $(RWORDSIZE) \* 8`
< PROMOTION       =       -real_size $(RSIZEBITS)
< CFLAGS          =       -DMACOS
< FCOPTIM		=	-O3 # -fast
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -FR -cm -w -I. $(FCDEBUG) -convert big_endian -mp
---
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5693,5694c6125,6126
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DMACOS \
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
5700,5701c6132,6133
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
5704c6136,6138
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
5708,5713c6142,6150
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS -i-static -static-libcxa
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	$(OMPCPP) -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5715c6152
< M4              =       m4 -B 14000
---
> M4                = m4
5718d6154
< CC_TOOLS        =       $(CC)
5720c6156
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5722,5723c6158,6168
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
5727c6172,6183
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5731c6187,6188
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5735c6192,6193
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5739,5744c6197,6199
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5748c6203
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5750c6205,6219
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5753,5754d6221
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5756,5764d6222
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5766c6224
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
5768c6226
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
5771,5776c6229
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5778,5779c6231,6235
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
5782c6238
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
5784c6240,6245
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
5785a6247,6253
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
5787,5788c6255,6256
< ###########################################################
< #ARCH Darwin		(ifort, single-threaded, nesting, RSL_LITE w/o MPI)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, RSL, allows nesting)
5790,5792c6258,6259
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5794,5795c6261,6282
< OMP             =       
< OMPCPP          =       
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
5797,5807c6284,6294
< LD              =       ifort
< CC              =       gcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS       =       `expr $(RWORDSIZE) \* 8`
< PROMOTION       =       -real_size $(RSIZEBITS)
< CFLAGS          =       -DMACOS -DSTUBMPI
< FCOPTIM		=	-O3 # -fast
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -FR -cm -w -I. $(FCDEBUG) -convert big_endian -mp -DSTUBMPI
---
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DSTUBMPI -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5809,5810c6296,6297
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DMACOS \
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL -DSTUBMPI \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
5816,5817c6303,6304
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
5820c6307,6309
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
5824,5829c6313,6321
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS -i-static -static-libcxa
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	$(OMPCPP) -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
5831c6323
< M4              =       m4 -B 14000
---
> M4                = m4
5834d6325
< CC_TOOLS        =       $(CC)
5836c6327
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5838,5839c6329,6347
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC="$(CC) $(CFLAGS) -I." \
> 	 FC='$(FC)  $(FCFLAGS) -FI -I../../' CFLAGS="-DSTUBS $(CFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST stub )
> 
> wrfio_nf :
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
5841,5843c6349,6354
< wrfio_nf : 
< 	( cd ../external/io_netcdf ; \
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5847c6358,6359
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5851c6363,6364
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5855,5860c6368,6370
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5864,5867c6374
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" FC="$(FC) $(FCFLAGS) $(PROMOTION) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5869c6376,6390
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5872,5873d6392
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5875,5883d6393
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
5885c6395
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
5887c6397
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
5890,5895c6400
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
5897,5898c6402,6419
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
5901c6422
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
5903c6424
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
5905,5906c6426,6427
< ###########################################################
< #ARCH Darwin		(OpenMP, ifort, no nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, no nesting)
5908,5910c6429,6430
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
5911a6432,6448
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        =
5913a6451,6453
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
5915,5925c6455,6465
< LD              =       ifort
< CC              =       gcc
< SCC		=	$(CC)
< SFC             =       $(FC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< RSIZEBITS       =       `expr $(RWORDSIZE) \* 8`
< PROMOTION       =       -real_size $(RSIZEBITS)
< CFLAGS          =       -DMACOS
< FCOPTIM		=	-O3 # -fast
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -FR -cm -w -I. $(FCDEBUG) -convert big_endian -mp
---
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c    -openmp
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
5927,5928c6467,6468
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG -DMACOS \
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
5934,5935c6474,6475
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
5938c6478,6480
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
5942,5947c6484,6492
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =	$(FCFLAGS) $(OMP) CONFIGURE_LDFLAGS -i-static -static-libcxa
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	$(OMPCPP) -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
5949c6494
< M4              =       m4 -B 14000
---
> M4                = m4
5952d6496
< CC_TOOLS        =       $(CC)
5954c6498
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
5957c6501,6502
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
5961c6506,6517
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
5965c6521,6522
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
5969c6526,6527
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5973,5978c6531,6533
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
5982c6537
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
5984c6539,6553
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
5987,5988d6555
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
5990,5998d6556
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6000c6558
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6002c6560
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
6005,6010c6563
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6012,6013c6565,6582
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
6016c6585
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
6018c6587
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
6020,6021c6589,6590
< ###########################################################
< #ARCH Darwin		(RSL_LITE, pgf90, OpenMP, allows nesting)
---
> ############################################################
> #ARCH    Generic Intel 64 x86_64 Linux, ifort+icc 9.x,10.x Sequential (no nesting)
6026,6028c6595,6614
< OMP             =       -mp
< OMPCPP          =       -D_OPENMP
< DMPARALLEL      =       1
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        =
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
6030,6045c6616,6628
< FC              =       mpif90 -f90=pgf90
< LD              =       mpif90 -f90=pgf90
< CC              =       mpicc -cc=pgcc
< SCC		=	pgcc
< SFC             =       pgf90
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE -DMACOS
< #FCOPTIM		=	-fastsse 
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG) # -Mlfs
< #Options for Debian Sarge systems
< #FCBASEOPTS      =       -w -byteswapio -Mfree -Mipa=fast,inline,safe  $(FCDEBUG) # -Mlfs
---
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c
> FCOPTIM           = -O3
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
6047,6049c6630,6632
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL -DMACOS \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNMM_NEST=$(WRF_NMM_NEST)
---
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
6054,6055c6637,6638
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6058c6641,6643
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite $(OMP) \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
6063,6068c6648,6655
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       -byteswapio $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	$(OMPCPP) -DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
6070c6657
< M4              =       m4 -B 14000
---
> M4                = m4
6073d6659
< CC_TOOLS        =       cc
6075c6661
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6077,6082c6663,6665
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
< 
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F :
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
6086c6669,6680
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6090c6684,6685
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6094c6689,6690
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6098,6102c6694,6696
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6106,6109c6700
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" FC="$(FC) $(FCFLAGS) $(PROMOTION) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6111c6702,6716
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6114,6115d6718
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6117,6125d6719
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6127c6721
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6129c6723
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
6132,6137c6726
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6139,6140c6728,6732
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
6143c6735
< 	$(CPP) -I../inc $(CPPFLAGS) $(OMPCPP) $*.b  > $*.f90
---
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
6145c6737
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(OMP) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
6147,6155c6739,6750
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 10 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 30 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
< #PGI	if [ ! -e $@ ] ; then \
< #PGI	sleep 300 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #PGI	fi
---
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
6157,6158c6752,6753
< ###########################################################
< #ARCH Darwin		(single-threaded, no nesting, USES: gcc-3.3, xlf cpp, SystemStubs)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL_LITE, allows nesting)
6160,6162c6755,6756
< #     Using -qfloat=nomaf option can result in identical results with
< #           non-optimized and optimized results (suggested by Fovell of UCLA)
< #           One may turn on by uncommenting it in FCOPTIM line
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
6164,6177c6758,6795
< FC              =       xlf90_r
< SFC		=	$(FC)
< LD              =       xlf90_r
< #CC              =       cc_r
< CC              =       gcc-3.3
< SCC		=	$(CC)
< RWORDSIZE       = $(NATIVE_RWORDSIZE)
< PROMOTION	=	-qrealsize=$(RWORDSIZE) -qintsize=4
< CFLAGS          =       -DNOUNDERSCORE -DLANDREAD_STUB -I /usr/include/sys -DMACOS
< FCOPTIM         =       -O3 -qarch=auto #-qfloat=nomaf
< FCDEBUG         =       # -qnoopt -qfullpath
< FCBASEOPTS      =       -qsave $(FCDEBUG) -qmaxmem=32767 -qspillsize=32767 -w 
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< FCSUFFIX        =       -qsuffix=f=f90
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
6182,6188c6800,6802
< INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../inc -I../chem
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS  -DLANDREAD_STUB -DMAC_KLUDGE
< #			-DLIMIT_ARGS  -DNATIVE_MASSV -DMACOS
< PERL            =       CONFIGURE_PERL_PATH
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
> PERL              = perl
6190,6192c6804,6806
< #LIB             =       CONFIGURE_NETCDF_LIB_PATH -lmass -lmassv 
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
<                         -L../external/io_int -lwrfio_int \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
6196,6203c6810,6818
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< 
< LDFLAGS         =	 -Wl,-stack_size,10000000,-stack_addr,0xc0000000 CONFIGURE_LDFLAGS -L/usr/lib -lSystemStubs
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /opt/ibmcmp/xlf/8.1/exe/cpp -C -P
< #CPP             =       /usr/bin/cpp  -C -P -xassembler-with-cpp
< POUND_DEF	=	-DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(COREDEFS) $(ENVCOMPDEFS) $(POUND_DEF) 
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6205c6820
< M4              =       m4 -B 14000
---
> M4                = m4
6208d6822
< CC_TOOLS        =       cc
6210c6824
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6212,6213c6826,6836
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
6216c6839,6844
< 	( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" )
---
> 	( cd ../external/io_netcdf ; \
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
6220c6848,6851
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) -qarch=auto -qzerosize" all )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6224c6855,6856
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6228c6860,6861
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6232c6865,6867
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC -qcpluscmt" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCSUFFIX) -qarch=auto -qzerosize" FREE="" FIXED="-qfixed" archive)
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6236c6871
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6237a6873,6887
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6239,6243d6888
< 	$(RM) $@
< 	$(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f90
< 	$(FC) -c -qfree=f90 -qspillsize=32767 -I. $(PROMOTION) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
< 
< # compile these without high optimization to speed compile
6245,6256c6890
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
< module_io_wrf.o : module_io_wrf.F
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
---
> module_io_wrf.o : module_io_wrf.F
6258c6892
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6260,6261d6893
< solve_em.o : solve_em.F
< mediation_interp_domain.o : mediation_interp_domain.F
6263,6264d6894
< mediation_feedback_domain.o : mediation_feedback_domain.F
< convert_nmm.o : convert_nmm.F
6267,6273c6897
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< module_initialize_real.o module_dm.o module_comm_dm.o \
< shift_domain_em.o                                              \
< mediation_interp_domain.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6274a6899,6914
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
6276c6916
< convert_nmm.o :
---
> module_dm.o :
6281c6921
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
6283,6284c6923,6927
< ###########################################################
< #ARCH	Darwin g95	(Single-threaded, no nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
6286,6301c6929,6966
< FC              =       g95
< LD              =       g95
< CC              =       gcc -DMACOS -DF2CSTYLE
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< # g95 does not like -r4. if you want promotion to -r8 add it to PROMOTION below
< #PROMOTION	=	-r$(RWORDSIZE) -i4
< PROMOTION	=	-i4
< CFLAGS          =       
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g -O0
< FCBASEOPTS      =       -Wno=101,139,155,158 -fendian=big -ffree-form -ffree-line-length-huge $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          -DNETCDF -DGRIB1 -DLIMIT_ARGS -DG95 -DMACOS -DF2CSTYLE
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
6306,6307c6971,6972
< INCLUDE_MODULES =       -fmod=../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6310c6975,6977
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
6312c6979
< 			-L../external/fftpack/fftpack5 -lfftpack \
---
>                     CONFIGURE_GRIB2_LIB \
6314,6320c6981,6989
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) 
< ENVCOMPDEFS	=	
< WRF_CHEM	=	0 
< CPP             =       /usr/bin/cpp -C -P -traditional
< POUND_DEF	=	$(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6322c6991
< M4              =       m4 -B 14000
---
> M4                = m4
6325d6993
< CC_TOOLS        =       $(CC)
6327,6330c6995,6999
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
> 
> gen_comms.c : ../external/RSL_LITE/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
6332c7001,7003
< externals : wrf_ioapi_includes wrfio_nf wrfio_grib_share wrfio_grib1  wrfio_int module_dm.F esmf_time fftpack
---
> module_dm.F : ../external/RSL_LITE/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
6334,6335c7005,7007
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
6339c7011,7022
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6343c7026,7027
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6347c7031,7032
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6351,6356c7036,7038
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) " RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-ffixed-form" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6360,6364c7042
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6366c7044,7058
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6369,6370d7060
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6372,6380d7061
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6382c7063
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6384c7065
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
6387,6393c7068
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6395c7070,7087
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
6400c7092
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
6402,6403c7094,7095
< ###########################################################
< #ARCH     Darwin g95 compiler  DM-Parallel (RSL_LITE, MPICH, Allows nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, OpenMP, RSL, allows nesting)
6407a7100,7115
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
6408a7117,7119
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
6410,6427c7121,7137
< FC              =       mpif90 -f90=g95
< LD              =       mpif90 -f90=g95
< CC              =       mpicc -cc=gcc -DMACOS -DF2CSTYLE
< SCC		=	gcc -DMACOS -DF2CSTYLE
< SFC             =       g95
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< # g95 does not like -r4. if you want promotion to -r8 add it to PROMOTION below
< #PROMOTION      =       -r$(RWORDSIZE) -i4
< PROMOTION       =       -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g -O0
< FCBASEOPTS      =       -Wno=101,139,155,158 -ffree-line-length-huge -fendian=big -ffree-form $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNMM_NEST=$(WRF_NMM_NEST) -DG95 -DMACOS -DF2CSTYLE
---
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
6432,6433c7142,7143
< INCLUDE_MODULES =       -fmod=../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6436,6437c7146,7148
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
< 			-L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
6441d7151
< 			-L../external/fftpack/fftpack5 -lfftpack \
6443,6448c7153,7160
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       /usr/bin/cpp -C -P -traditional
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6450c7162
< M4              =       m4 -B 14000
---
> M4                = m4
6453,6458d7164
< CC_TOOLS        =       cc
< 
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
6460c7166
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time fftpack
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6462c7168
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
6464c7170
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
6466,6467c7172,7178
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
6471c7182,7193
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6475c7197,7198
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6479c7202,7203
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6483,6487c7207,7209
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-ffixed-form" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6491,6498c7213
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< fftpack :
< 	( cd ../external/fftpack/fftpack5 ; \
< 	  make FC="$(SFC)" FFLAGS="$(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC="$(FC) $(FCFLAGS) $(PROMOTION)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6500c7215,7229
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6503,6504d7231
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6506,6514d7232
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6516c7234
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6518c7236
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
6521,6526c7239
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6528,6529c7241,7258
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
6534c7263
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
6536,6537c7265,7266
< ###########################################################
< #ARCH    PC Linux x86_64 (IA64 and Opteron), PathScale 2.1 or higher (Single-threaded, no nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (Intel MPI, RSL, allows nesting)
6539,6553c7268,7307
< FC              =       pathf90
< LD              =       pathf90
< CC              =       pathcc
< SCC             =       $(CC)
< NATIVE_RWORDSIZE=       4
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< PROMOTION       =       -r$(RWORDSIZE) -i4
< CFLAGS          =       
< FCOPTIM         =       -O3 -OPT:Ofast:Olimit=5000
< FCDEBUG         =       #-g
< FCBASEOPTS      =       -w -byteswapio -freeform -fno-second-underscore $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
---
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
> #
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(if ${IMPI}, ${IMPI}, ${MPICH})
> FC                = $(MPI_HOME)/bin64/mpiifort -nocompchk
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin64/mpiicc -nocompchk
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
6559,6560c7313,7314
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6563c7317,7319
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
6567,6569c7323,7326
<                         ../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time
< LDFLAGS         =       $(FCFLAGS) -byteswapio CONFIGURE_LDFLAGS
< ENVCOMPDEFS     =       CONFIGURE_COMPILEFLAGS
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
6571,6572c7328,7331
< POUND_DEF       =       $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6574c7333
< M4              =       m4 -B 14000
---
> M4                = m4
6577d7335
< CC_TOOLS        =       $(CC)
6579c7337
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6581,6582c7339,7349
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
> 
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
6586c7353,7364
< 	make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w -fno-second-underscore" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6590c7368,7369
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" archive )
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6594c7373,7374
< 	make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6598,6603c7378,7380
< 	make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
< 
< wrfio_int :
< 	( cd ../external/io_int ; \
< 	make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
< 	TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6607c7384
< 	make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6609c7386,7400
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6612,6613d7402
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6615,6623d7403
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6625c7405
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6627,6628c7407
< mediation_integrate.o : mediation_integrate.F
< module_fddaobs_rtfdda.o : module_fddaobs_rtfdda.F
---
> mediation_force_domain.o : mediation_force_domain.F
6631,6637c7410
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6639,6640c7412,7416
< module_fddaobs_rtfdda.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
6645c7421
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
6647,6648c7423,7440
< ###########################################################
< #ARCH    PC Linux x86_64 (IA64 and Opteron), PathScale 2.1 or higher DM-Parallel   (RSL_LITE, PathScale MPICH, No periodic LBCs)
---
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
> 
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL_LITE, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
6649a7442,7457
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
6650a7459,7461
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
6652,6666c7463,7478
< FC              =       mpif90 -f90=pathf90
< LD              =       mpif90 -f90=pathf90
< CC              =       mpicc  -cc=pathcc
< SCC             =       pathcc
< SFC             =       pathf90
< NATIVE_RWORDSIZE=	4
< RWORDSIZE	=	$(NATIVE_RWORDSIZE)
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
< FCOPTIM         =       -O3 -OPT:Ofast:Olimit=5000
< FCDEBUG         =       #-g
< FCBASEOPTS      =       -w -byteswapio -freeform -fno-second-underscore $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
---
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
6672,6674c7484,7485
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
< EXTRAMODULES    =
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6677c7488,7490
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
6682,6683c7495,7497
<                         ../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time
< LDFLAGS         =       -byteswapio
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
6685,6686c7499,7502
< POUND_DEF       =       -DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6688c7504
< M4              =       m4 -B 14000
---
> M4                = m4
6691d7506
< CC_TOOLS        =       pathcc
6693c7508
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6700c7515,7516
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
6702,6705c7518,7520
< #io_flags:
< #	( cd ../external/io_netcdf ; make flags_only ; \
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc ; \
< #	/bin/cp wrf_io_flags.h wrf_status_codes.h ../io_phdf5 )
---
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
6709,6710c7524,7535
< 	make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC)" TRADFLAG="-traditional" \
< 	FFLAGS='$(FCFLAGS) -I../../inc -ICONFIGURE_NETCDF_PATH/include -w -fno-second-underscore' RANLIB=$(RANLIB) )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6714c7539,7540
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" TRADFLAG="-traditional" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" archive )
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6718c7544,7545
< 	make CC="$(CC)" CPP="$(CPP)" FC="$(SFC) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" RANLIB=$(RANLIB) archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6722,6726c7549,7551
< 	make CC="$(CC)" CPP="$(CPP) CONFIGURE_GRIB2_INC" FC="$(SFC) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" RM="$(RM)" RANLIB=$(RANLIB) archive )
<                                                                                 
< wrfio_int : 
< 	( cd ../external/io_int ; \
< 	make CC="$(CC)" CPP="$(CPP)" FC="$(SFC) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" RANLIB=$(RANLIB) all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6730,6733c7555
< 	make FC="$(FC) $(FCDEBUG) $(FCBASEOPTS) " CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
<                                                                                 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC='mpif90 $(FCFLAGS) -byteswapio' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6735c7557,7571
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6737,6738c7573
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
---
> shift_domain_em.o : shift_domain_em.F
6740,6748d7574
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6750c7576
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6752,6753c7578
< mediation_integrate.o : mediation_integrate.F
< module_fddaobs_rtfdda.o : module_fddaobs_rtfdda.F
---
> mediation_force_domain.o : mediation_force_domain.F
6756,6761c7581
< solve_interface.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
6763,6764c7583,7600
< module_fddaobs_rtfdda.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
6769c7605
< 	$(FC) -c $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
6771,6773c7607,7608
< ###########################################################
< #ARCH    Cray XT3 Catamount/Linux x86_64 (Opteron), PGI 5.2 or higher DM-Parallel (RSL_LITE, MPICH, Allows nesting, Periodic in X only )
< #        Note that for 5.1.x comment out -Mpia=fast
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL_LITE, allows nesting)
6777a7613,7628
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
6778a7630,7632
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
6780,6797c7634,7650
< FC              =       ftn
< LD              =       ftn
< CC              =       gcc -DMPI2_SUPPORT
< SCC		=	gcc
< SFC             =       mpif90
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE \
<                         -DLANDREAD_STUB -DXT3_Catamount -I$(MPICH_DIR)/include
< FCOPTIM         =       -O3 -fastsse #-Mipa=fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DLANDREAD_STUB  -DXT3_Catamount
---
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL  -I../external/RSL_LITE
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL_LITE -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
6802,6803c7655,7656
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
6806c7659,7661
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL_LITE -lrsl_lite \
6813,6817c7668
< # add this to LIB to use XT3 iobuf library after loading iobuf module, also requires
< # properly built netCDF library that includes iobuf
< #                       $(IOBUF_POST_LINK_OPTS)
< LDFLAGS         =       -byteswapio CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
6819,6820c7670,7673
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
6822c7675
< M4              =       m4 -B 14000
---
> M4                = m4
6825d7677
< CC_TOOLS        =       gcc
6827c7679
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL_LITE/librsl_lite.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6834c7686,7691
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
> 
> ../external/RSL_LITE/librsl_lite.a :
> 	( cd ../external/RSL_LITE ; make CC='$(CC) -I. $(CFLAGS) -DMPI2_SUPPORT -I$(MPI_HOME)/include '\
> 	 FC='$(FC) $(FCFLAGS) -I../../.. ' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
6838c7695,7706
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6842c7710,7711
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6846c7715,7716
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6850,6854c7720,7722
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-Mfixed" archive)
< 
< wrfio_int :
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6858,6861c7726
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC) $(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6863c7728,7742
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6866,6867d7744
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6869,6877d7745
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
6879c7747
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
6881,6882c7749
< solve_em.o : solve_em.F
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
6885c7752,7756
< solve_interface.o                                              \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
> module_configure.o                                              \
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
6887,6891c7758,7769
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
6893,6894c7771
< module_configure.o                                             \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> module_dm.o :
6899c7776
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
6901,6902c7778,7779
< ###########################################################
< #ARCH    NEC SX-8, NEC SX cross compiler DM-Parallel (RSL_LITE, Allows nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, OpenMP, RSL, allows nesting)
6906a7784,7799
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
6907a7801,7803
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
6909,6924c7805,7820
< FC              =       sxmpif90
< LD              =       sxmpif90
< CC              =       sxmpic++
< SCC		=	sxmpic++
< SFC             =       sxmpif90
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	
< CFLAGS          =       -DNCARIBM_NOC99 -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
< FCOPTIM		=	
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -f4 -Wf,-P i $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
---
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
6931c7827
<                         -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
>                     -I../external -I../frame -I../share -I../phys -I../inc
6934c7830,7832
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
6935a7834,7835
>                     CONFIGURE_GRIB2_LIB \
>                     -L../external/io_grib_share -lio_grib_share \
6937,6939c7837,7839
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time -L$(SX_BASE_CPLUS)/lib -lcpp
< LDFLAGS         =       $(FCFLAGS) -Wl,-h nodefs CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
6941,6946c7841,7847
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF) -DNEC
< AR_BASE         =       sxar
< AR              =       $(AR_BASE) ru
< M4              =       m4 -B 14000
< RANLIB          =       sxar rs
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
> AR                = ar ru
> M4                = m4
> RANLIB            = ranlib
6948,6953d7848
< CC_TOOLS        =       cc
< 
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
6955c7850
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib1 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
6957c7852
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
---
> gen_comms.c : ../external/RSL/gen_comms.c
6959c7854
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
6961,6962c7856,7862
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
6966c7866,7877
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" AR="$(AR_BASE)" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
6970c7881,7882
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" AR="$(AR_BASE)" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
6974c7886,7887
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" AR="$(AR_BASE)" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6978,6982c7891,7893
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" AR="$(AR_BASE)" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" AR="$(AR_BASE)" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
6986,6989c7897
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" AR="$(AR_BASE)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC="$(FC) $(PROMOTION)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST AR="$(AR_BASE)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
6991c7899,7913
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
6994,6995d7915
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
6997,7005d7916
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
7007c7918
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
7009c7920
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
7012,7017c7923
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
7019,7020c7925,7929
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
7025,7034c7934,7939
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< #	if [ ! -e $@ ] ; then \
< #	sleep 10 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #	fi
< #	if [ ! -e $@ ] ; then \
< #	sleep 30 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #	fi
< #	if [ ! -e $@ ] ; then \
< #	sleep 300 ; $(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90 ; \
< #	fi
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
7035a7941,7947
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
7037,7038c7949,7953
< ###########################################################
< #ARCH    CYGWIN_NT-5.1 Cygwin i486 i586 i686, g95 compiler  (Single-threaded, no nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x DM-Parallel (MPICH, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
7040,7056c7955,7992
< FC              =       g95
< LD              =       g95
< CC              =       gcc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< # g95 does not like -r8. if you want -r8, just add it to PROMOTION below
< #PROMOTION	=	-r$(RWORDSIZE) -i4
< PROMOTION	=	-i4
< CFLAGS          =
< FCOPTIM		=	-O2
< FCDEBUG		=	#-g
< FCBASEOPTS      =       -Wno=101,139,155,158 -fno-second-underscore -fendian=big -ffree-form $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
< 			-DLIMIT_ARGS -DG95
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          = $(MPICH)
> FC                = $(MPI_HOME)/bin/mpif90 -f90=ifort
> LD                = $(FC)
> CC                = $(MPI_HOME)/bin/mpicc -cc=icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
7061,7062c7997,7998
< INCLUDE_MODULES =       -fmod=../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
7065c8001,8003
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
7069,7074c8007,8015
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
< CPP             =       cpp -C -P -traditional
< POUND_DEF	=	$(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
> CPP               = /lib/cpp -C -P -traditional
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
7076c8017
< M4              =       m4 -B 14000
---
> M4                = m4
7079d8019
< CC_TOOLS        =       $(CC)
7081,7084c8021
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals :  CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
7086c8023,8025
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
7088,7089c8027,8033
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC='$(CC) $(CFLAGS) -I. -DMPI2_SUPPORT -I$(MPI_HOME)/include' \
> 	 FC='$(FC) $(FCFLAGS) -FI -I../../..' MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )
7093c8037,8048
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
7097c8052,8053
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
7101c8057,8058
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7105,7111c8062,8064
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-ffixed-form" archive )
< 
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7115c8068
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
7117c8070,8084
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
7120,7121d8086
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
7123,7131d8087
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
7133c8089
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
7135c8091
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
7138,7144c8094
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
7146c8096,8100
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
7151c8105
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
7153,7154c8107,8124
< ###########################################################
< #ARCH    PC Linux i486 i586 i686, g95 compiler  (Single-threaded, no nesting)
---
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> module_dm.o : module_dm.F
> solve_em.o : solve_em.F
> 
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
> 
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, RSL, allows nesting)
> #
> # Notes: for experimental implementation of moving nests, add -DMOVE_NESTS to ARCHFLAGS
> #        for experimental implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to ARCHFLAGS
7156,7172c8126,8163
< FC              =       g95
< LD              =       g95
< CC              =       gcc
< SCC		=	$(CC)
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< SFC             =       $(FC)
< # g95 does not like -r4. if you want promotion to -r8 add it to PROMOTION below
< #PROMOTION	=	-r$(RWORDSIZE) -i4
< PROMOTION	=	-i4
< CFLAGS          =       
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g -O0
< FCBASEOPTS      =       -Wno=101,139,155,158 -fno-second-underscore -fendian=big -ffree-form $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                          CONFIGURE_NETCDF_FLAG -DGRIB1 CONFIGURE_GRIB2_FLAG \
< 			-DLIMIT_ARGS -DG95
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        = 1
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
> MAX_PROC          = 1024
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c -DDM_PARALLEL -DSTUBMPI -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DRSL -DDM_PARALLEL -DSTUBMPI \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
7177,7178c8168,8169
< INCLUDE_MODULES =       -fmod=../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
7181c8172,8174
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                     -L../external/RSL/RSL -lrsl \
7185,7187c8178,8181
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     -L../external/io_int -lwrfio_int \
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
7189,7190c8183,8186
< POUND_DEF	=	$(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE) -I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` \
>                     $(POUND_DEF) $(COREDEFS)
7192c8188
< M4              =       m4 -B 14000
---
> M4                = m4
7195d8190
< CC_TOOLS        =       $(CC)
7197,7200c8192
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a gen_comms.c wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
7202c8194,8196
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 wrfio_int module_dm.F esmf_time
---
> gen_comms.c : ../external/RSL/gen_comms.c
> 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
>           cat ../external/RSL/gen_comms.c >> ../tools/gen_comms.c )
7204,7205c8198,8204
< module_dm.F :
< 	( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F >> module_dm.F )
---
> module_dm.F : ../external/RSL/module_dm.F
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat ../external/RSL/module_dm.F >> module_dm.F )
> 
> ../external/RSL/RSL/librsl.a :
> 	( cd ../external/RSL/RSL ; make CC="$(CC) $(CFLAGS) -I." \
> 	 FC='$(FC)  $(FCFLAGS) -FI -I../../' CFLAGS="-DSTUBS $(CFLAGS)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST stub )
7209c8208,8219
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
7213c8223,8224
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
7217c8228,8229
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive )
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7221,7226c8233,8235
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-ffixed-form" archive )
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" \
<           TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7230c8239
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
7232c8241,8255
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
7235,7236d8257
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
7238,7246d8258
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
7248c8260
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
7250c8262
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
7253,7259c8265
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
7261c8267,8284
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
> 
> solve_em.o \
> module_dm.o :
7266c8289
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
7268,7269c8291,8292
< ###########################################################
< #ARCH     PC Linux i486 i586 i686, g95 compiler  DM-Parallel (RSL_LITE, MPICH, Allows nesting)
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x SM-Parallel (OpenMP, no nesting)
7274c8297,8316
< DMPARALLEL      =       1
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        =
> OMP               = -openmp -fpp -auto
> OMPCPP            = -D_OPENMP
> INCLUDE           = ../external/io_netcdf/
7276,7293c8318,8334
< FC              =       mpif90 -f90=g95
< LD              =       mpif90 -f90=g95
< CC              =       mpicc -cc=gcc
< SCC		=	gcc
< SFC             =       g95
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< # g95 does not like -r4. if you want promotion to -r8 add it to PROMOTION below
< #PROMOTION      =       -r$(RWORDSIZE) -i4
< PROMOTION       =       -i4
< CFLAGS          =       -DDM_PARALLEL \
<                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL_LITE
< FCOPTIM		=	-O2 # -fast
< FCDEBUG		=	#-g -O0
< FCBASEOPTS      =       -Wno=101,139,155,158 -fno-second-underscore -fendian=big -ffree-form $(FCDEBUG) # -Mlfs
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)
< ARCHFLAGS       =       $(COREDEFS) -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG \
< 			-DLIMIT_ARGS -DNMM_NEST=$(WRF_NMM_NEST) -DG95
---
> MPI_HOME          =
> FC                = ifort
> LD                = $(FC)
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c    -openmp
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
7298,7299c8339,8340
< INCLUDE_MODULES =       -fmod=../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../chem -I../inc
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
7302c8343,8345
< LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL_LITE -lrsl_lite \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
7307,7309c8350,8352
< 			../frame/module_internal_header_util.o ../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time 
< LDFLAGS         =       $(FCFLAGS) CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                     ../frame/module_internal_header_util.o ../frame/pack_utils.o \
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
7311,7312c8354,8357
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS) $(POUND_DEF)
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
7314c8359
< M4              =       m4 -B 14000
---
> M4                = m4
7317,7324d8361
< CC_TOOLS        =       cc
< 
< #### Override default sed command and script for Fortran source files         ####
< #### This sed script does not pass __FILE__ and __LINE__ to wrf_error_fatal() ####
< #### because the Fortran compiler complains about long source lines.          ####
< SED_FTN = sed -f ../arch/no_file_line.sed
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
7326,7328c8363
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
7330,7331c8365,8367
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F :
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
7335c8371,8382
< 	  make NETCDFPATH=CONFIGURE_NETCDF_PATH RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
7339c8386,8387
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
7343c8391,8392
<           make CC="$(SCC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" archive)
---
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7347,7351c8396,8398
<           make CC="$(SCC)" CFLAGS="$(CFLAGS) CONFIGURE_GRIB2_INC" RM="$(RM)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I. $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" FIXED="-ffixed-form" archive)
< 
< wrfio_int : 
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7355,7358c8402
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; make CC="$(CC)" FC="$(FC) $(FCFLAGS) $(PROMOTION)" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
7360c8404,8418
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
7363,7364d8420
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
7366,7374d8421
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
7376c8423
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
7378c8425
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
7381,7386c8428
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
7388,7389c8430,8434
< mediation_integrate.o \
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
7394c8439,8444
< 	$(FC) -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
> 
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
> solve_em.o : solve_em.F
> module_dm.o : module_dm.F
7395a8446,8452
> solve_em.o \
> module_dm.o :
> 	$(RM) $@
> 	$(SED_FTN) $*.F > $*.b
> 	$(CPP) -I../inc $(CPPFLAGS) $*.b > $*.f90
> 	$(RM) $*.b
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) $(OMP) -O0 $(MODULE_DIRS) -mP2OPT_vec_xform_level=103 $*.f90
7397,7399c8454,8455
< ###########################################################
< #ARCH    PC Interix x86_64 (IA64 and Opteron), PGI 5.2 or higher DM-Parallel   (RSL_LITE, MPICH, Allows ARW and NMM nesting, No periodic LBCs)
< #        Note that for 5.1.x comment out -Mpia=fast
---
> ############################################################
> #ARCH    Intel Core 2 Duo/Quad (Intel 64) x86_64 Linux, ifort+icc 9.x,10.x Sequential (no nesting)
7404c8460,8479
< DMPARALLEL      =       1
---
> #        By default, some files are compiled without optimizations to speed up compilation. Removing
> #        respective makefile rules in the end of this file will result in longer compilation time, and, possibly
> #        Out Of Memory messages, but might produce binaries which are substantially faster.
> #
> #        If you got Out Of Memory message, there are several options:
> #        	1. Check your memory limits (ulimit -a), possibly increasing swap partitions size.
> #        	2. Remove any debugging flags (-g, -check, -traceback).
> #        	3. Force the problematic file to be compiled with less optimizations (see examples at the end of this file), try
> #        	   -no-ip compiler flag.
> #
> #        This configuration is aimed at accuracy. To improve performance (at the expence of accuracy) you might
> #        consider removing '-fp-model precise' flag from FCBASEOPTS. This enables non value-safe optimizations.
> #        Another option is to add '-ftz' flag, which flushes denormal results to zero when the application is in
> #        the gradual underflow mode. It may improve performance if the denormal values are not critical to the
> #        behavior of your workload.
> 
> DMPARALLEL        =
> OMP               =
> OMPCPP            =
> INCLUDE           = ../external/io_netcdf/
7406c8481,8482
< FC              =       pgf90.exe
---
> MPI_HOME          =
> FC                = ifort
7408,7436c8484,8497
< CC              =       pgcc.exe
< CC              =       cc
< SCC		=	$(CC)
< SFC             =       $(FC)
< 
< MPdir           =       /dev/fs/C/Program Files/Microsoft Compute Cluster Pack
< MPinc           =       -I'$(MPdir)'/Include
< MSMPdir         =       'C:\Program Files\Microsoft Compute Cluster Pack'
< MSMPinc         =       /I'C:\Program Files\Microsoft Compute Cluster Pack\Include'
< MSMPlib         =       'C:\Program Files\Microsoft Compute Cluster Pack\Lib\AMD64\msmpi.lib'
< 
< RWORDSIZE       =       $(NATIVE_RWORDSIZE)
< PROMOTION	=	-r$(RWORDSIZE) -i4
< 
< CFLAGS          =       -DLANDREAD_STUB -DMEMCPY_FOR_BCOPY -DMS_SUA -DDM_PARALLEL \
<                         -I../external/RSL_LITE $(MPinc) #-X /MD
< FCOPTIM         =       -fastsse #-Mipa=fast
< FCDEBUG		=	#-g
< #FCBASEOPTS      =       -w -byteswapio -Ktrap=fp -Mfree $(FCDEBUG)
< FCBASEOPTS      =       -w -byteswapio -Mfree $(FCDEBUG)
< FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS) $(MPinc)
< 
< ARCHFLAGS       =       $(COREDEFS) \
<                         -DDM_PARALLEL \
<                         -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 \
<                         -DNETCDF -DINTIO \
<                         -DNO_NAMELIST_PRINT  \
<                         -DLIMIT_ARGS -DLANDREAD_STUB -DNMM_NEST=$(WRF_NMM_NEST) -DMEMCPY_FOR_BCOPY
< 
---
> CC                = icc
> SCC               = icc
> CC_TOOLS          = $(SCC)
> SFC               = ifort
> CFLAGS            = -w -O3 -ip  -c
> FCOPTIM           = -O3 -xT
> FCDEBUG           = # -g -traceback
> FCBASEOPTS        = -align all -FR -convert big_endian \
>                     -fno-alias -fno-fnalias  \
>                     -I$(INCLUDE) -I. -fp-model precise $(FCDEBUG)
> FCFLAGS           = $(FCOPTIM) $(FCBASEOPTS) $(OMP)
> ARCHFLAGS         = -DGRIB1 CONFIGURE_GRIB2_FLAG -DINTIO   \
>                     -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 -DNETCDF \
>                     -DLIMIT_ARGS
7441,7442c8502,8503
< INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
<                         -I../external -I../frame -I../share -I../phys -I../inc -I../chem
---
> INCLUDE_MODULES   = -I../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90 \
>                     -I../external -I../frame -I../share -I../phys -I../inc
7445,7447c8506,8512
< 
< LIB             =       CONFIGURE_NETCDF_LIB_PATH \
< 			../external/io_int/libwrfio_int.a \
---
> LIB               = -L../external/io_netcdf -lwrfio_nf $(OMP) \
>                     CONFIGURE_NETCDF_LIB_PATH \
>                      \
>                     -L../external/io_grib1 -lio_grib1 \
>                     CONFIGURE_GRIB2_LIB \
>                     -L../external/io_grib_share -lio_grib_share \
>                     -L../external/io_int -lwrfio_int \
7449,7454c8514,8515
<                         ../external/esmf_time_f90/libesmf_time.a \
<                         ../external/RSL_LITE/librsl_lite.a $(MSMPlib) \
<                         "c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\AMD64\bufferoverflowu.lib"
< 
< LDFLAGS         =       -byteswapio CONFIGURE_LDFLAGS
< ENVCOMPDEFS	=	CONFIGURE_COMPILEFLAGS
---
>                      -L../external/esmf_time_f90 -lesmf_time
> LDFLAGS           = -O3 -ip $(OMP) CONFIGURE_LDFLAGS
7456,7459c8517,8522
< POUND_DEF	=	-DNO_RRTM_PHYSICS  -traditional $(COREDEFS) -DNONSTANDARD_SYSTEM -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
< CPPFLAGS        =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL_LITE -C -P $(ENVCOMPDEFS) $(POUND_DEF)
< AR              =       ar r
< M4              =       NA
---
> POUND_DEF         = -DNO_RRTM_PHYSICS  -DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN) -DMAX_DOMAINS_F=$(MAX_DOMAINS)
> CPPFLAGS          = -I$(LIBINCLUDE) -C -P -traditional $(COREDEFS) $(ARCHFLAGS) $(OMPCPP) \
>                     -I$(INCLUDE)  -C -P  \
>                     $(POUND_DEF) $(COREDEFS)
> AR                = ar ru
> M4                = m4
7462,7465d8524
< CC_TOOLS        =       cc
< LIBWRFLIB       =       libwrflib.a
< 
< externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 ../external/RSL_LITE/librsl_lite.a wrfio_int gen_comms.c module_dm.F esmf_time
7467,7469c8526
< gen_comms.c : ../external/RSL_LITE/gen_comms.c
< 	( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; \
<           cat ../external/RSL_LITE/gen_comms.c >> ../tools/gen_comms.c )
---
> externals : wrf_ioapi_includes CONFIGURE_WRFIO_NF  wrfio_int module_dm.F wrfio_grib_share wrfio_grib1 CONFIGURE_WRFIO_GRIB2 esmf_time
7471,7472c8528,8530
< module_dm.F : ../external/RSL_LITE/module_dm.F
< 	( /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL_LITE/module_dm.F >> module_dm.F )
---
> module_dm.F :
> 	( /bin/cp module_dm_warning module_dm.F ; \
>           cat module_dm_stubs.F >> module_dm.F )
7476,7480c8534,8545
< 	  make LIBS="libwrfio_nf.a 'CONFIGURE_NETCDF_PATH' 'c:\Program Files\Microsoft Platform SDK\Lib\AMD64\bufferoverflowu.lib'" \
<               NETCDFPATH=CONFIGURE_NETCDF_PATH \
<               RANLIB="$(RANLIB)" CPP="$(CPP) -DMS_SUA" \
<               CPP1="$(CPP) -DMS_SUA"  \
<               FC="$(FC) $(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )
---
>           make NETCDFPATH=CONFIGURE_NETCDF_PATH CPP="$(CPP)" FC="$(FC) -I../.. $(FCFLAGS)" \
>           TRADFLAG="-traditional" RANLIB="$(RANLIB)" ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../../inc ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../ioapi_share/wrf_status_codes.h ../io_phdf5 ; \
> 	/bin/cp ../ioapi_share/wrf_io_flags.h ../io_quilt )
> 
> wrfio_int :
> 	( cd ../external/io_int ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  SFC="$(SFC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" \
> 		  ESMF_IO_LIB_EXT="$(ESMF_IO_LIB_EXT)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" all )
7482a8548,8550
> 	( cd ../external/io_grib_share ; \
>           make CC="$(CC)" CFLAGS="$(CFLAGS)" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" CPP="$(CPP)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive)
7484a8553,8555
> 	( cd ../external/io_grib1 ; \
>           make CC="$(CC)" CPP="$(CPP)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7487,7490c8558,8561
< 
< wrfio_int :
< 	( cd ../external/io_int ; \
<           make CC="$(CC)" RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" all )
---
> 	( cd ../external/io_grib2 ; \
>           make CC="$(CC) CONFIGURE_GRIB2_INC" CPP="$(CPP) CONFIGURE_GRIB2_INC" RM="$(RM)" TRADFLAG="-traditional" RANLIB="$(RANLIB)" \
> 		  FREE="-FR" FIXED="-FI" \
>           FC="$(FC) -I$(MPI_HOME)/include $(FCDEBUG) $(FCFLAGS)" archive )
7494,7499c8565
< 	  make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
< 
< ../external/RSL_LITE/librsl_lite.a :
< 	( cd ../external/RSL_LITE ; \
<           /bin/sed -e '/MPI_ADDRESS_KIND=4/d' -e '/DEC\$$/d' '$(MPdir)'/Include/mpif.h > mpif.h ; \
<           make CC="$(CC)" CFLAGS="$(CFLAGS)" FC="$(FC) $(PROMOTION) $(FCFLAGS) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) )
---
> 	  make FC="$(FC) $(FCDEBUG) $(FCFLAGS)" CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )
7501c8567,8581
< # compile these without high optimization to speed compile
---
> # Compile these without high optimization and no interprocedural
> # optimizations to speed compile. Commenting them out may result
> # in longer compilation time, but might produce substantialy faster
> # binaries.
> mediation_integrate.o : mediation_integrate.F
> mediation_interp_domain.o : mediation_interp_domain.F
> mediation_feedback_domain.o : mediation_feedback_domain.F
> wrf_auxinput1out.o : wrf_auxinput1out.F
> wrf_histout.o : wrf_histout.F
> wrf_restartout.o : wrf_restartout.F
> wrf_inputin.o : wrf_inputin.F
> wrf_auxinput1in.o : wrf_auxinput1in.F
> wrf_histin.o : wrf_histin.F
> wrf_restartin.o : wrf_restartin.F
> module_initialize_real.o: module_initialize_real.F
7504,7505d8583
< module_io_mm5.o : module_io_mm5.F
< module_si_io.o : module_si_io.F
7507,7515d8584
< module_domain.o : module_domain.F
< module_start.o : module_start.F
< module_initialize.o : module_initialize.F
< module_initialize_b_wave.o : module_initialize_b_wave.F
< module_initialize_hill2d_x.o : module_initialize_hill2d_x.F
< module_initialize_quarter_ss.o : module_initialize_quarter_ss.F
< module_initialize_squall2d_x.o : module_initialize_squall2d_x.F
< module_initialize_squall2d_y.o : module_initialize_squall2d_y.F
< module_initialize_real.o : module_initialize_real.F
7517c8586
< module_comm_dm.o : module_comm_dm.F
---
> module_domain.o : module_domain.F
7519c8588
< mediation_integrate.o : mediation_integrate.F
---
> mediation_force_domain.o : mediation_force_domain.F
7522,7528c8591
< solve_interface.o                                              \
< shift_domain_em.o                                              \
< module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o \
< module_start.o module_initialize.o module_initialize_b_wave.o  \
< module_initialize_hill2d_x.o module_initialize_quarter_ss.o    \
< module_initialize_squall2d_x.o module_initialize_squall2d_y.o  \
< mediation_integrate.o \
---
> mediation_integrate.o mediation_interp_domain.o mediation_feedback_domain.o \
7530c8593,8597
< module_initialize_real.o module_dm.o module_comm_dm.o start_domain.o :
---
> wrf_auxinput1out.o wrf_histout.o wrf_restartout.o wrf_inputin.o \
> wrf_auxinput1in.o wrf_histin.o wrf_restartin.o module_initialize_real.o \
> module_domain.o module_dm.o module_io_wrf.o start_domain.o solve_interface.o \
> shift_domain_em.o                                              \
> mediation_force_domain.o:
7535c8602
< 	$(FC) -o $*.o -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
---
> 	$(FC) -c -no-ip $(FCBASEOPTS) $(FCDEBUG) $(MODULE_DIRS) $*.f90
7537c8604,8605
< module_io.o : module_io.F
---
> # Force even lower optimization level for these files to decrease
> # compilation time and lower memory demands
7538a8607
> solve_em.o : solve_em.F
7540c8609,8610
< module_io.o module_dm.o :
---
> solve_em.o \
> module_dm.o :
7545,7547c8615
< 	/bin/sed -e '/MPI_ADDRESS_KIND=4/d' -e '/DEC\$$/d' '$(MPdir)'/Include/mpif.h > mpif.h
< 	$(FC) -o $*.o -c $(PROMOTION) $(FCBASEOPTS) $(MODULE_DIRS) $*.f90
< 
---
> 	$(FC) -c $(FCBASEOPTS) $(FCDEBUG) -O0 $(MODULE_DIRS) $*.f90
7549,7550d8616
< ##################################################################
< #ARCH  NULL
